Cómo se mueve el admin — 7 journeys re-pensados para que todo cuadre
El corazón no son las páginas, son los flows. Cada journey es un flujo atómico: qué VES, qué DECIDES, dónde CONFIGURAS, dónde se rompe hoy y cómo cuadra ahora. Los ⬥ branch son decisiones, 🔄 async corre en background y 🔔 avisa sin bloquearte.
◆ 6 primitivas compartidas
Piezas que se repiten entre journeys — cajas reutilizables, no inventadas cada vez. Diseñarlas una vez las resuelve en todos lados.
La cifra canónica
El par Generado / Validado del engine, siempre etiquetado, idéntico entre superficies.
Cinta del ciclo
Planear→Tráfico→Validar→Cerrar→Pagar con la estación activa resaltada, por cliente×mes.
Drawer con recalc vivo
La bolsa + ecuación paga − pagamos = queda + quién se pausa, ANTES de aplicar.
Cadena de precedencia
default→deal→override→EFECTIVA, ganadora resaltada, perdedoras atenuadas con su origen.
Checklist de vida
Checks honestos 🟢/🟡/🔴 con re-chequeo automático; nunca un ✓ falso.
Month switcher de sesión
Un solo selector de mes que gobierna toda superficie de dinero.
"¿Cómo va todo?" — el vistazo diario
Samsung 🟢 Jul $1.42M · 3 partners · 0 alertas / Quote 🟡 412 leads · 1 partner sin tarifa512 órdenes · $118,430 generada / $96,120 validada) · la cinta del ciclo (Estamos en: TRÁFICO) · "Lo único raro hoy" (máx 3 líneas)Mobavenue MX · cap $48,223 · 94% · pausa auto en 2 díasasignado $195K / pool $164K — overbooking +19%) + ecuación (paga 5% $221K − $118K = queda $103K) · recalc en vivoLos 3 números no reconcilian; el drill no existe — las alertas son contadores ruidosos ("3720") sin línea accionable; el ciclo mensual es invisible.
La cifra canónica Generado/Validado acompaña TODO el drill — nunca un tercer número. El drawer enseña la consecuencia antes de aplicar: no existe el edit ciego.
El loop mensual — planear → tráfico → validar → cerrar → pagar
$113,314 → 2:1 Mobupps $116,739 / Mobavenue $48,223) o manual · "copiar mes anterior"NULL=sin tope · 0=paga-nada), tarifas con effective_from, deals tiered/sprintMobupps MX $30K→$116,739 · BEdig pausado · WR/TAB cerrados"al ritmo, Mobupps MX pausa el día 22") · fraude/salud en una línea solo si hay algo30,107 órdenes · 28,911 matchean · 1,196 sin match (3.9%) · delta por partner (BEdig gen $73,550 / val $71,180 · Δ −3.2%)generated_advance 🟡, recordatorio hasta reconciliar)Mobupps $50,000 (cap) · Mobavenue $10,197.73 · BEdig $73,550 🟡. Cada fila declara su basis.pending = engine vivo, no snapshot rancio).adjusted_commission con razón, gana siempre, marcadopending → approved → factura → processing → paid, con antigüedad por etapaPAGADO · julio; agosto ya aparece en PLANEAR. Pendientes cross-month no se esconden: "junio: 3 cierres sobre generado esperan archivo · 12 días 🟡" (21 días → 🔴)El loop vive repartido en Planner / Reconciliation / Payments sin noción de posición; los cierres pending mostraban números congelados viejos; cerrar sin archivo era un hack sin rastro.
Posición en el ciclo siempre visible + atada al month switcher. generado/validado etiquetado en cada estación + "lo que apruebas = lo que se congela". Los cierres sobre generado quedan marcados y perseguidos hasta reconciliar — el sistema no olvida.
Dar de alta un cliente nuevo — que nazca VIVO
"leads × pixel → hablas de Leads y CPL; comisión $/lead"). Fija el vocabulario de TODO lo que sigue.lead_submit, stages)✓ evento hace 8s · event=lead_submit · partner_param=sub2 o 🔴 con diagnóstico concreto"sub1 chocaría con Mobupps"); tarifa y cap inicialesattribution_field (se salta si pixel → manda el click-wrapper)3 segmentos · 2 partners · 24 budgets · 7 reglas de fraude clonadasfuente 🟢 · primer evento 🟡 esperando · atribución 🔴 sin probar · deal 🟢 · link canónico 🟢 — cada 🔴/🟡 con SU botón de arregloEl wizard termina en un "created ✓" falso; nada fluye, nadie sabe si está vivo; el problema se descubre días después cuando no hay datos.
"creado" ≠ "vivo" — el estado de vida es explícito, honesto (🟢/🟡/🔴 por check, nunca un ✓ inventado) y solo el primer evento real con timestamp lo cierra.
Ajustar el dinero de un partner — el Deal
default 3% → deal 2% → override atb-tabs $250/u → EFECTIVA $250/u — ganadora resaltada, perdedoras atenuadas con link a su origen. Tier: WR 0→3% · 75→3.5% · 150→4% · actual 938 uds → 4% (retro)$164K→$195K / pool $164K · +19%) · ecuación (paga 5% ($8,634×512=$221K) − $30/u ($15,360) = queda $205K (93%)) · MTD nuevo 🟡 "aplica desde día 15" · quién se pausa/despausabudget_start_from=mañana 00:00 + locked_commission: "los $19,250 ya ganados quedan intactos"⬥ margen < 87% → bloqueo + escape auditado"esta tarifa efectiva es la que muestran: Hoy · la campaña · el cierre pendiente" — los tres números idénticos, del mismo engineEl mismo valor es editable en N lugares sin precedencia visible — editas una tarifa y no sabes si gana; los cambios mid-month se comían lo ya ganado o pagaban doble.
La precedencia siempre pintada con la ganadora resaltada — nunca más "¿cuál manda?". Consecuencia antes de aplicar + protección explícita de lo ya ganado en cambios mid-month.
Responder a un partner en < 2 minutos
Julio MTD $9,214 gen / $8,730 val · cap $48,223 (19%) — byte-idéntica a la de su portaljunio: approved — esperando SU factura hace 6 días) → recordatorio 🔔 o subir su facturaLos earnings difieren entre dashboard/deal/pagos, así que no sabes con qué número contestar; PID, factura y link viven en 3 páginas sin relación.
"Ver como el partner" garantiza que respondes exactamente lo que él ve; una sola cifra del engine encabeza el perfil y todos los tabs cuelgan de ella.
Lanzar / ajustar una campaña
"gana sobre el deal para este CID"), cap por partner, sugerencia de split ("$25K → 2:1 según histórico"), la bolsa de la campaña vs presupuesto…always-onT_sub2…) con colisión en vivo; preview email/WhatsApp por partner con su link canónico ya resuelto (journey G embebido)primer click con CID 🟡 · primer evento atribuido 🟡 — la campaña también nace, y hay que verla nacerLanzar toca 5 páginas sueltas (campaña, tarifas, budgets, emails, links); los overrides de campaña son invisibles desde el deal — nadie sabe qué tarifa ganó.
Los overrides de campaña viven en la MISMA cadena de precedencia del Deal (un solo modelo mental de tarifas). El link que se envía es el canónico de G — no hay improvisación.
"¿Cuál es mi link?" — micro-journey transversal
t.relo.mx/c/AB12 (tamper-proof + cookie); MMP ventas → OneLink; postback → URL con macros. Colapsado: "Avanzado" (deep links, S2S, param crudo)✓ click registrado · cookie sembrada · atribuiría a Mobavenue7 conceptos de link en 7 páginas; ops improvisa cuál mandar y a veces manda uno que no atribuye.
Un link canónico por partner×campaña, testeable con eco real, idéntico en admin y portal del partner.
✦ Los 3 momentos donde la magia tiene que pasar
Las 3 interacciones de mayor palanca. Si estas salen exactas, ganan el rediseño completo.
El recalc vivo del drawer de dinero D3 · reusado en A4 · F6
Es el átomo que comparten 4 journeys. Si tocar un número muestra bolsa + ecuación + quién-se-pausa en <300ms y con honestidad (los 🟡 marcados, "calculado con ticket de junio"), el admin le confía la plata a la plataforma — y todos los flujos heredan esa confianza. Si falla, la gente vuelve a SQL y el rediseño murió.
El par Generado/Validado etiquetado idéntico en TODAS las superficies B · A · E
El dolor de reconciliación ya no es de datos (el engine ya es único) — es de etiquetado. Una sola convención visual (validado sólido, generado en ghost, Δ en una línea) repetida sin excepción en Hoy / Deal / Cierre / Perfil mata para siempre el "aquí dice X, allá dice Y".
El primer 🟢 real del checklist de vida C6 · F5
Convierte "configuré filas" en "esto está VIVO": el primer evento con timestamp real es el payoff emocional del alta, y ENSEÑA el principio en carne propia — la plataforma prefiere decir 🟡 esperando antes que inventar un ✓. Si ese momento se siente bien una vez, el equipo entiende cómo leer todos los semáforos del sistema.