Grounded en el código real · AI-first · con Fable

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.

Cliente paga a Relo
$431.70
Samsung · 5% de una venta de $8,634
Relo paga al partner
$30.00
Mobupps · $30/unidad
=
Relo se queda
$401.70
el margen · ~93%

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 temperaturasGenerado (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 →AppsFlyerPixelGA4Postback
VentasSamsung ✓posibleposibleposible
LeadsposibleQuote ✓posibleposible
ClicksposibleposibleCPC
ImpresionesposibleCPM

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.)

1
Filtro de segmentos
¿el partner tiene TAB habilitado? (null=todo · []=nada · subset)
2
Reclasificación
(atb-tabs, TAB) → MX — "esto se factura como Mobile"
3
Filtro de billing
¿este CID tiene bloqueado este segmento? → se cae la fila
4
Resolución de tarifa ◄ jerarquía interna
congelada ► tier (escalera retroactiva, ignora CID) ► override por CID ► override partner-wide ► PSC ► default cliente
5
Carve por CID
atb-tabs tiene su propio cap $25K, aparte del cap MX
6
Cap de segmento
el resto se topa contra el cap MX del partner
7
Comisión final 💰
Σ(carves topados) + min(resto, cap segmento)

Dos 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

Planear
día ~25 · bolsa → caps
Tráfico
caps queman · auto-pause
Validar
ledger · gen vs val
Cerrar
cierres = motor vivo
Pagar
approve → factura → paid

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.

Relo es una máquina de spread donde una sola venta puede cambiar de segmento, de tarifa y de tope tres veces antes de convertirse en comisión — y el trabajo del admin es que ese poder sea legible, auditable y reversible en cada uno de los ~30 clicks que hace al día.
F1

El Pulso — mirar → actuar

absorbe: el daily glance · el 80% de los días es este flow y nada más
Modelo mental"En 10 segundos sé si hoy sangra dinero; en 2 clicks lo detengo."
1
Inicio global

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 🔴

2
Hoy de Samsung — command center

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 ⏸➕✏️)

3
Actuar sin salir

El cap MX de Mobupps al 91% con 26 días de mes es el fuego. Click en la fila →

⬥ el fuego real, no el ruido
4
El drawer de budget — la primitiva estrella (gateway único)

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%")

⬥ empieza mañana 00:00🔄 gateway: RBAC+parity+audit🔔 draft email · toast "Deshacer" 30s
5
Volver al Pulso

La fila muestra el cap nuevo + puntito de proveniencia: hover → cap $45K · Joe · hoy 9:14 · vía Hoy · era $30K · [deshacer]

▲ La versión AI

"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.

Por qué es la mejor versiónColapsa mirar-decidir-actuar-auditar en UNA superficie sin cambio de contexto, y muestra la consecuencia (unidades, bolsa, margen) ANTES de aplicar. Ningún Ads Manager te enseña el spread de tu decisión en vivo.
F2

El Ciclo — el loop mensual como producto

absorbe: planner + validación + cierres + pagos — es UN proceso, no 4 páginas
Modelo mental"El mes es un tren de 5 estaciones; siempre sé en cuál estoy, qué falta para avanzar, y el botón de la siguiente estación está donde estoy parado."
Planear (~día 25)

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.

🔄 Save por gateway + auditwarning de sobre-asignación VISIBLE
Tráfico (es F1, el Pulso)

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".

Validar (cliente sube ledger)

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.

⬥ si no llega → generated_advance ⚠️🔔 recuerda solo cuando el archivo aterrice
Cerrar — botón "Cerrar el mes" EN el Hoy

Preview antes de generar (partner × total × base validated/advance × delta). Los pending renderizan el motor VIVO (punto verde), no números congelados viejos.

🔄 gateway generate_cierresundo: cancela solo lo que creó y solo si sigue pending
Pagar

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.

▲ La versión AI

"¿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.

Por qué es la mejor versiónConvierte un proceso tribal (en la cabeza de Joe) en un objeto de producto con estado visible — cualquier empleado nuevo sabe dónde está el mes y cuál es el siguiente botón. Nadie tiene el ciclo como first-class citizen; todos tienen "páginas".
F3

Alta Viva — onboarding que termina respirando

absorbe: client onboarding · el cliente nace vivo o nace muerto
Modelo mental"Un cliente no está 'creado' cuando existen sus filas; está creado cuando llega su primer evento y le calculamos su primera comisión. El wizard no termina en un ✓ — termina en un latido."
2
EL PIVOTE: Objetivo + Fuente

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.

4
Partners

Atribución con colisiones en vivo ("'sub1' con contains también matchea 'sub10' de Mobavenue — ¿exact?"), segmentos, tarifa, cap.

6
EL CHECKLIST DE VIDA (reemplaza el recibo muerto)

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.

🔄 auto-verifica cada minuto🔔 "🎉 primer evento — está VIVO" / "🔴 24h sin eventos"
▲ La versión AI

"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" 🔔.

Por qué es la mejor versiónRedefine "done": ningún wizard de la industria verifica que el dato FLUYE antes de declararse exitoso. El costo del cliente-muerto-al-nacer desaparece porque la verificación es asíncrona, honesta y persigue al admin.
F4

El Deal — el contrato de dinero, con la precedencia pintada ★

absorbe: rules + attribution + overrides + caps + Tester · el cap se edita hoy en 6 lugares → aquí en UNO
Modelo mental"UN lugar donde vive el contrato Mobupps×Samsung completo, donde siempre ves QUÉ regla está ganando y por qué, y donde puedes ensayar cualquier cambio contra el motor real antes de firmarlo."
2
Fila de atribución (arriba — sin ella no hay nada)

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.

3
Una tabla por segmento — la precedencia como columnas

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).

4
Editar: ✏️ abre el drawer del gateway

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).

5
EL TESTER (restaurado) — la precedencia ejecutable

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.

6
TEST MODE (restaurado) — ensayar en serio

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.

▲ La versión AI

"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.

Por qué es la mejor versiónNingún sistema de comisiones te enseña qué regla ganó y a quiénes venció, ni te deja ensayar contra el motor de producción sin riesgo. Es operar con rayos X — y el 70% del código ya existe, solo estaba muerto.
F5

El Sprint — lanzar y ajustar campañas de verdad

absorbe: campaign launch/detail · hoy es teatro, debe ser atómico y real
Modelo mental"Una campaña es un deal con fecha de caducidad. Lanzarla = declarar objetivo+ventana, elegir partners, ponerle SU dinero — y que TODO lo que el wizard muestra realmente se escriba."
2
Quiénes y cuánto (el paso que hoy es fake, ahora real)

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.

3
Revisión honesta

Cada línea viene del payload real (nada hardcodeado): N partners × M segmentos, K overrides, J carves. Preview de email/WhatsApp.

4
Lanzar — atómico

Todo o rollback; los overrides van por el gateway (auditados con created_by).

🔔 emails con draft aprobado
5
Vivir la campaña

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.

▲ La versión AI

"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.

Por qué es la mejor versiónMuestra el deal de campaña JUNTO al deal base al decidirlo (nadie pacta $250/u sin ver que el base es $30/u), y elimina la categoría de bug "el wizard dijo sí pero no escribió nada".
F6

La Respuesta — contestar a un partner en <60s

absorbe: partner support + reconciliación · cada "¿por qué me pagaron X?" es hoy 20 min de SQL mental
Modelo mental"Cada pregunta de un partner es una discrepancia entre lo que él ve y lo que el motor calculó. La respuesta perfecta = ver SU pantalla + ver el POR QUÉ del motor, lado a lado."
2
Perfil del partner, mes abril

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).

3
"👁 Ver como el partner" (impersonación auditada)

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.

4
Explicar el delta — el waterfall del motor

$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.

⬥ si el reclamo tiene razón → adjusted_commission con razón, auditado
5
Responder — partner-safe estructural

✉️ con el desglose insertable. El composer bloquea estructuralmente revenue, tarifa del cliente, margen y datos de otros partners (no por disciplina).

▲ La versión AI

"¿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.

Por qué es la mejor versiónEl momento de mayor fricción de confianza del negocio pasa de "20 min reconstruyendo el cálculo con SQL" a "60 segundos leyendo un waterfall", y la respuesta es estructuralmente incapaz de filtrar el margen de Relo.
F7

El Link — el canónico en 10 segundos

absorbe: link generator · la pregunta más frecuente merece el flow más corto
Modelo mental"El link no es una página; es un botón que vive donde estás parado, y siempre produce EL link correcto para ESTE partner en ESTA campaña — tamper-proof por default."
2
Popover (no página)

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.

3
Entregar

[Copiar] · [Copiar WhatsApp] · [Enviar ✉️]. Si vino de un ticket: [Responder con este link] cierra el loop en un click.

▲ La versión AI

"dame el link de tabs para Mobupps" → link + verificación de matching en la respuesta → "mándaselo" → draft → send. 10 segundos, cero navegación.

Por qué es la mejor versiónLa pregunta más frecuente deja de tener página: el link es contextual, verificado contra el motor de atribución, y opinionado (wrapper por default). Un link mal armado = un mes mal atribuido; aquí es difícil armarlo mal.

Los momentos donde la magia pasa

1

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.

2

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.

3

El primer 🟢 del checklist de vida. 🔔 "🎉 Primer evento de WidgetCo" — el onboarding tiene un final emocional real, no un recibo.

4

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.

5

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.

6

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.

7

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

1

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.

2

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.

3

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.

4

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.

5

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.

6

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.

7

Async, nunca rehén

Verificaciones en background con 🔔; "Ir al Hoy" siempre habilitado; los checklists persiguen, no detienen.

8

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.

los mejores flows ever · grounded + AI-first · con Fable · 2026-07-04· el plan maestro· la realidad