Los mejores flows EVER — el negocio entendido a fondo, la operación re-pensada
Cada operación funciona por UI y por AI (click ✏️ o pídele al Copilot → misma proposal → mismo drawer → mismo execute). El poder del motor se hace legible, auditable y reversible — nunca se recorta.
◆ Parte 1 — El modelo mental del negocio
Relo es un arbitraje de resultados: vende resultados a marcas y los compra a afiliados, más baratos. Ese spread es TODO el negocio.
Regla de oro: el margen es visible en cada decisión de dinero ("$87 de cada $100 ✓") y el partner JAMÁS ve el revenue, solo su comisión. Segunda verdad: el dinero tiene dos temperaturas — Generado (lo que trackea la fuente, gross) vs Validado (lo que el cliente confirmó facturable). Los "6 números" de hoy son este par mal etiquetado seis veces.
El objetivo manda — la matriz que gobierna el vocabulario
| Objetivo ↓ / Fuente → | AppsFlyer | Pixel | GA4 | Postback |
|---|---|---|---|---|
| Ventas | Samsung ✓ | posible | posible | posible |
| Leads | posible | Quote ✓ | posible | posible |
| Clicks | — | posible | posible | CPC |
| Impresiones | — | posible | — | CPM |
El objetivo dicta si dices "Órdenes" o "Leads", si el KPI es ticket o CPL, el modelo de comisión ($/u · %rev · $/lead · CPC · CPM) y cuántos niveles expande la tabla. El admin nunca debe hablar samsungués con un cliente de leads.
La cadena de precedencia — el embudo de 7 pisos
EL modelo mental clave: cada orden cae por un embudo y en cada piso puede cambiar de forma. (Ejemplo: orden $8,634 · CID atb-tabs · segmento TAB.)
(atb-tabs, TAB) → MX — "esto se factura como Mobile"atb-tabs tiene su propio cap $25K, aparte del cap MXDos cosas contraintuitivas que hay que mostrar, no explicar: los tiers son retroactivos (BEdig WR: 938 u → cruza 150 → TODAS al 4% = $26,319.40 al centavo); los caps son estrategia (la bolsa se sobre-asigna a propósito; la cascada frena; solo el piso de margen 85% bloquea, con escape auditado).
El loop mensual — el negocio ES un ciclo
Hoy partido en 3 zonas de nav sin hilo. El rediseño lo hace la cinta del ciclo: una tira permanente en el Hoy con la estación activa iluminada.
El Pulso — mirar → actuar
Roster de clientes como mini-dashboards, cada uno en el idioma de su objetivo: Samsung ventas·AF $4.5M ✓ / Quote leads·Pixel 1,204 · ⚠️ fuente callada 2d 🔴
Bento 8 KPIs (Revenue $4.52M · Órdenes 512 · Nos cuesta $148K · Nos queda $96.8K · runway 11d · Relo gana $312K/87% con la resta explícita · ROAS · Proyección · Atención) + tira de atención ámbar (1 fuego por línea, deep-link) + la cinta del ciclo (Tráfico iluminado) + la tabla maestra (Agrupar por: Deals/Campaña/Segmento/Partner, Σ solo dinero, inline ⏸➕✏️)
El cap MX de Mobupps al 91% con 26 días de mes es el fuego. Click ➕ en la fila →
Slider con recalc en vivo <300ms · la bolsa (barra apilada: generado, tu cambio resaltado, otros partners, zona rayada de overbooking, línea blanca=bolsa real) · ecuación (paga − pagamos = nos quedamos $87 de $100 ✓) · transparencia siempre ("calculado con: ticket $8,634 · 512 ventas · paga 5% · validación 55%")
La fila muestra el cap nuevo + puntito de proveniencia: hover → cap $45K · Joe · hoy 9:14 · vía Hoy · era $30K · [deshacer]
"súbele el cap de MX a Mobupps a 45" → el Copilot construye la MISMA proposal (set_budget_cap) → renderiza el mismo drawer de confirmación → mismo execute-action → mismo audit + undo. Cero rama paralela: UI y AI son dos bocas del mismo gateway.
El Ciclo — el loop mensual como producto
Tabla densa (bolsa Samsung → caps por partner×segmento, break-even, margen vs target 87%). Real: BEdig se sale → auto-distribuir su $113,314 en 2:1 → Mobupps $116,739 · Mobavenue $48,223. Tarifas = filas PSC nuevas con effective_from (nunca sobrescribir). Sprints se stagean igual.
Los eventos llegan solos: 🔔 auto-pause · 🔔 cascada (con su motivo encima — fin del misterio "¿quién pausó?"). El reset mid-month (hoy SQL crudo 😱) se vuelve opción del drawer: "guardar lo ganado $19,250 y abrir $7,250 fresco desde mañana".
Consola de validación + waterfall: generado $4.52M → validado $2.49M (55%) → diferencias por causa. El par Generado/Validado con la MISMA etiqueta que en todos lados.
Preview antes de generar (partner × total × base validated/advance × delta). Los pending renderizan el motor VIVO (punto verde), no números congelados viejos.
Pipeline pending→approved→invoice→processing→paid. Approve re-congela del motor en ese instante (lo que viste = lo que se firma). Maker/checker opcional para montos altos. Al último paid: "Julio cerrado ✓ · [Planear agosto →]" — el tren nunca para.
"¿cómo vamos con el ciclo de julio?" → lee la cinta: "Estación Tráfico, día 4. MX al 61%, validación de junio pendiente (3 cierres advance), próxima acción: nada, todo verde." · "genera los cierres de junio" → proposal con preview → confirm → execute.
Alta Viva — onboarding que termina respirando
Al elegir, el resto del wizard se transforma en vivo. Captura los 2 inputs cold-start: ¿cómo te paga el cliente? (%rev/$venta/$lead/$click/CPM) + ticket estimado. 🔄 Probar conexión DENTRO del wizard: "✓ 2,481 eventos disponibles/24h" — los MMP dejan de nacer sin verificación.
Atribución con colisiones en vivo ("'sub1' con contains también matchea 'sub10' de Mobavenue — ¿exact?"), segmentos, tarifa, cap.
Anillo ◔ 5/7, grupos DATOS FLUYENDO / DINERO / OPCIONAL, cada 🔴🟡 con su botón. "Ir al Hoy" siempre habilitado; el checklist te sigue. Se cierra con el primer evento real, no con presencia de config.
"da de alta WidgetCo, paga 6% rev, ticket ~$2,000, ventas por pixel, copia segmentos de Samsung" → proposal onboard_client como el paso de Revisión → confirm → execute → el Copilot queda suscrito al checklist: "te aviso cuando llegue el primer evento" 🔔.
El Deal — el contrato de dinero, con la precedencia pintada ★
sub1 · exact · 512 matches/7d · sin conflictos ✓ + "probar con un valor real" → pegas un CID → "✓ matchea a Mobupps por regla #1". Colisiones inline en rojo con el rival nombrado.
Base(PSC) → Override activo → EFECTIVA → Gastado/Cap → Queda → Runway → ⏸✏️. La EFECTIVA la resuelve el motor real. El chip del tier: "128/150 u · a 22 del 4% retroactivo · impacto +$1,240". Proveniencia en hover de CADA número (cierra el agujero de match_rules sin created_by).
Precargado; recalc en vivo de comisión/margen/ecuación; ⬥ vigencia (fila nueva versionada). ✗ rojo solo si rompes el piso de margen (con escape + razón auditada).
Pegas una orden hipotética → el motor la corre por los 7 pisos y pinta cada uno, con los perdedores: ④ Tarifa: override CID atb-tabs $250/u ◄ GANA (venció a PSC $30 · default 0.6%). Eso enseña la precedencia mejor que cualquier doc.
Banda naranja abajo · editas reglas como drafts · 🔄 "Simular el mes" corre el motor real en dry-run (overlay.go) → diff "$41,200 → $46,850 (+$5,650)" → Commit (audit, un batch) o descartar. Es el maker/checker natural: draft el empleado, commit Joe.
"ponle a BEdig un tier en WR: 3% base, 3.5% a 75, 4% a 150, retroactivo, desde abril" → proposal create_rate_override tiered con preview del ladder → confirm → execute con parity → fila nueva con proveniencia. Y al revés: "¿por qué Mobavenue cobra $250 en vez de $30?" → el Copilot corre el Tester y responde con el embudo pintado.
El Sprint — lanzar y ajustar campañas de verdad
Tabla de partners con su deal base al lado ("Mobavenue: base MX $30/u") para decidir el deal de campaña CONTRA el contexto. Por partner: tarifa de campaña ($250/u → rate_override con cid), cap de campaña (carve $25K → budget_override con cid), reglas de segmento del sprint (TAB→MX reclassify). Todo por el gateway.
Cada línea viene del payload real (nada hardcodeado): N partners × M segmentos, K overrides, J carves. Preview de email/WhatsApp.
Todo o rollback; los overrides van por el gateway (auditados con created_by).
Detalle con nombre-switcher (⭐), tabs reales, columna deal efectivo resuelto por el motor. Ajustar tarifa = el mismo drawer del Deal (se acabó el editor paralelo). La fila del sprint nunca desaparece del Pulso.
"lanza sprint de tablets en abril con Mobavenue y BEdig, $250/u, carve $25K c/u, TAB se factura como MX" → UNA proposal compuesta (campaña + 2 rate_overrides + 2 carves + 2 reclassifies) como el paso de Revisión → confirm → execute atómico → undo compuesto.
La Respuesta — contestar a un partner en <60s
Mobavenue: "hicimos $58K, ¿por qué el pago dice $37,447?" → la cifra canónica en el header: Generado $58,120 · Validado $41,300 · Pagado $37,447. + "Pendientes con este partner" (factura, PID con approve inline).
Ves EXACTAMENTE su portal — él ve $58K porque su vista no descuenta el carve topado ni la validación. Ya sabes de dónde viene su número.
$58,120 → −$9,570 (carve atb-tabs topado $25K) → −$7,250 (validación 88%) → −$3,853 (cap MX) = $37,447. Cada resta con su piso del embudo y su link.
✉️ con el desglose insertable. El composer bloquea estructuralmente revenue, tarifa del cliente, margen y datos de otros partners (no por disciplina).
"¿por qué el pago de Mobavenue de abril salió $37,447?" → el Copilot corre el waterfall con las 4 restas. → "escríbele la explicación" → draft partner-safe (conoce la política) → apruebas → send.
El Link — el canónico en 10 segundos
El link ya generado con el contexto inferido. Para pixel: short link wrapper por default (t.relo.mx/c/XyZ12, cookie tamper-proof) con el raw ?sub2= como alternativa marcada "menos confiable". 🔄 "probar" → "✓ atribuiría a Mobupps (sub1·exact)" — nace verificado contra el matcher real.
[Copiar] · [Copiar WhatsApp] · [Enviar ✉️]. Si vino de un ticket: [Responder con este link] cierra el loop en un click.
"dame el link de tabs para Mobupps" → link + verificación de matching en la respuesta → "mándaselo" → draft → send. 10 segundos, cero navegación.
✦ Los momentos donde la magia pasa
El recalc en vivo del drawer (<300ms). Mueves el slider y VES unidades, bolsa, margen y "quién se pausa" moverse. El admin siente que opera una máquina, no que llena formularios.
El piso ④ del Tester mostrando a los perdedores. Override $250 ◄ GANA (venció a: PSC $30 · default 0.6%) — la precedencia se aprende usándola, en 10 segundos, para siempre.
El primer 🟢 del checklist de vida. 🔔 "🎉 Primer evento de WidgetCo" — el onboarding tiene un final emocional real, no un recibo.
El par Generado/Validado idéntico en todas partes. El día que Hoy, Deal, Pagos y el portal digan el mismo número con la misma etiqueta, mueren los "6 números" y las disputas de 20 min.
El toast "Deshacer" en una operación de dinero. Undo en caps/tarifas/reglas (gracias al before/after del gateway) — convierte el miedo a tocar el motor en confianza para delegarlo a empleados.
La proposal del Copilot aterrizando en EL MISMO drawer. Ahí el AI-first deja de ser demo y se vuelve arquitectura: pedirle al AI y hacer click son la misma operación con el mismo confirm y el mismo audit.
El chip "a 22 unidades del 4% retroactivo · +$1,240". El tier deja de ser sorpresa de fin de mes y se vuelve una palanca que ves acercarse.
§ Los principios de estos flows
Un solo gateway para todo write
Humano o AI, cada mutación de dinero pasa por propose→confirm→execute: RBAC, bounds, before/after, parity, undo, idempotencia. La UI es una boca, el Copilot otra, el motor de confianza es uno.
La precedencia se muestra, no se explica
Columna Efectiva resuelta por el motor real, Tester con perdedores visibles, proveniencia en hover. Hacer legible el embudo de 7 pisos ES el producto.
Consecuencia antes que confirmación
Ningún "¿seguro?" sin enseñar qué pasa: unidades, bolsa, margen, quién se pausa, recalculado en vivo antes de aplicar.
El objetivo manda el idioma
KPIs, tabs, modelos de comisión y niveles de expansión derivan del objetivo. Jamás hablarle en unidades a un cliente de leads.
Nunca inventar un número
🟢 completo / 🟡 estimado "calculado con…" / 🔴 falta config, se pide inline. Un sistema de dinero que estima sin decirlo pierde la confianza una vez y para siempre.
Overbooking es estrategia; solo el piso de margen bloquea
La bolsa sobre-asignada es termómetro (la cascada frena); el único ✗ rojo es romper el margen, con escape + razón auditada.
Async, nunca rehén
Verificaciones en background con 🔔; "Ir al Hoy" siempre habilitado; los checklists persiguen, no detienen.
Dashboards densos, flujos aireados
El Pulso te asalta con datos (tablas > cards, números mono tabulares); wizards y drawers respiran. Densidad = poder visible; aire = decisión clara.