Review — felix40enforma

← overview

ventana últimos 7d vs 7d previos · tz America/Argentina/Buenos_Aires · último cambio Ninjo: 2026-07-30 11:50 (deploy config, hace 1d) · 1595 untracked
423
Nuevas (7d)
prior 609
31
Calls booked
79.5% de link
39
Link sent
4.3% de activas
$0
Revenue variable
1595 msgs

Resumen — período vs período

Métricathis 7dprior 7dΔ
Activas906980-7.6%
Nuevas423609-30.5%
Link sent3931+25.8%
Calls booked3121+47.6%
Booked/Link %79.5%67.7%+11.7pp
Booked/Activas %3.4%2.1%+1.3pp
Booked/Nuevas %7.3%3.4%+3.9pp
Revenue variable$0.00$0.00

Funnel — semana actual vs anterior

PeríodoActivasNuevasLink sentCalls bookedBooked/LinkBooked/ActivasBooked/Nuevas
Semana actual (7d)906423393179.5%3.4%7.3%
Semana anterior (7d)980609312167.7%2.1%3.4%
Ver desglose por día
DíaActivasNuevasLink sentCalls bookedBooked/LinkBooked/ActivasBooked/Nuevas
07-301475111763.6%4.8%13.7%
07-291276249225.0%7.1%14.5%
07-28151455360.0%2.0%6.7%
07-271316423150.0%2.3%4.7%
07-26125746116.7%0.8%1.4%
07-25100696583.3%5.0%7.2%
07-24125585360.0%2.4%5.2%
07-23165928450.0%2.4%4.3%
07-221411043133.3%0.7%1.0%
07-212351746583.3%2.1%2.9%
07-201305923150.0%2.3%5.1%
07-19139927571.4%3.6%5.4%
07-18110593133.3%0.9%1.7%
07-17602922100.0%3.3%6.9%
run 2026-07-24T14:58:26+00:00 · fuente: live DB state (daily_audit pipeline)
8/10
BP semánticos PASS
top-10 best practices
11/16
Determinísticos PASS
2 FAIL · 3 WARN
C0 · H0 · M2
Fails por severidad
critical / high / medium
DB diverge del repo
Drift
DB vs repo local

BP semánticos (top-10 best practices)

BP-1
BP-2
BP-3
BP-4
BP-5
BP-6
BP-7
BP-8
BP-9
BP-10
BPSevEstadoDetalle
BP-1HIGHPASSTemplate compliance
All 7 required sections for principles template are present in system.md: Identity, Voice, Flow, Calibration, Principles, Tools, NO_RESPONSE. Content matches template intent.
BP-2MEDIUMPASSExample coverage and cap (7 base scenarios + conditional, ≤20 total)
examples.md covers 6 of 7 base scenarios (happy path, resource delivery, objection handling, disqualification, off-topic, re-engagement). Keyword-trigger example (Ej 34) satisfies conditional. Total count is 35 examples, exceeding the 20-example cap.
evidence (1)
  • {'file': 'examples.md', 'quote': 'Total examples in file: Ej 1–35 (35 examples documented)'}
BP-3HIGHPASSExamples align with the flow
All examples follow the 7-step flow from system.md in order (open → qualify → discovery → bridge → propose → book → post-booking). Each example reaches a terminal state (link sent, NO_RESPONSE, or confirmed booking).
BP-4CRITICALPASSNo internal contradictions in system.md
Two passages in system.md contradict each other under the shared precondition of Step 2 (qualification). The first states that cesantía (job loss) is a disqualifier; the second states that cesantía is only a disqualifier if the lead does not clarify current employment. This creates conflicting outputs for the same precondition.
evidence (2)
  • {'file': 'system.md', 'quote': 'Regla de cesantía: si el lead dice que perdió el trabajo o quedó cesante, cuenta como no-calificado AUNQUE lo cuente como explicación del pasado y sin aclarar su situación actual. NO preguntes "y hoy a qué te dedicas"'}
  • {'file': 'system.md', 'quote': 'Única excepción: si el lead YA dijo antes que hoy tiene trabajo o negocio vigente.'}
BP-5CRITICALPASSNo cross-file contradictions
All SDK files are consistent. Keywords in keywords.json align with flow steps in system.md. Examples in examples.md demonstrate the rules stated in system.md (e.g., no-calification triggers, resource delivery format, booking flow). No contradictions between files on behavior, parameters, or data.
BP-6MEDIUMPASSVoice consistency across examples
All examples use consistent persona (Félix, first-person, warm and direct), vocabulary (Spanish neutral, no voseo), formality level (casual DM style), and tone (calm, understanding, no sales pressure). Voice is uniform across all 35 examples.
BP-7CRITICALPASSUnguarded actions (PAT-004)
All risky actions in system.md have inline guards. Resource delivery is guarded ('after lead responds to pain question'). Booking is guarded ('only after 4-6 exchanges + pain + context + occupation confirmed'). NO_RESPONSE triggers are explicitly listed. Examples (Ej 1, 2, 16, 34) demonstrate guards firing correctly.
BP-8HIGHPASSNo stale version language in examples
All examples use current flow language from system.md. Closing CTAs match system.md (e.g., 'Te toma menos de un minuto reservar tu espacio' in Ej 1, 2, 4). No outdated phrasing or prior-version language detected.
BP-9MEDIUMFAILNo duplicated instructions
The hard rule about message length ('máximo 4 líneas por mensaje') is stated twice in system.md: once in the Voice section and again as a separate 'Hard rule — longitud de mensaje'. This is duplication; the rule should appear in one canonical location.
evidence (2)
  • {'file': 'system.md', 'quote': 'Estilo: mensajes cortos, una sola idea por mensaje, **máximo 4 líneas por mensaje** — sin excepción.'}
  • {'file': 'system.md', 'quote': '**Hard rule — longitud de mensaje:** Ningún mensaje tuyo puede superar 4 líneas de texto.'}
BP-10MEDIUMFAILRule-vs-principle balance
system.md contains multiple behavioral rules that could be demonstrated through examples instead of stated as hard rules. Examples: 'nunca hagas echo del mensaje del lead' (Hard rule), 'lenguaje sobre salud sexual' (Hard rule), 'PROHIBIDO responder en inglés' (Hard rule). These are behavioral constraints better taught via examples than enforced as rules.
evidence (2)
  • {'file': 'system.md', 'quote': '**Hard rule — nunca hagas echo del mensaje del lead:** No repitas ni transcribas el texto que escribió el lead como parte de tu respuesta.'}
  • {'file': 'system.md', 'quote': '**Hard rule — lenguaje sobre salud sexual:** Cuando el lead menciona temas de función sexual o libido (incluyendo términos explícitos), reencuadras hacia el lenguaje clínico sin repetir sus palabras textuales.'}

Checks determinísticos

6a
6c
6d
6e
6g
6h
6i
6j
6k
6l
6m
6n
6q
6r
6s
6t
CheckSecEstadoNotas
6a1.8PASSNO_RESPONSE present (limits not checked, --no-db)
6c3.xWARN192 lines
6d1.2PASS28 examples
6e1.3PASS6 principles
6gPAT-006WARNnon-STEP-0 keyword handling
6hAnti-patPASSno 'burbuja'
6iAnti-patPASSno HTML comments
6jAnti-patFAIL86 em-dashes across 1 file(s); first: system.md:9
6kPAT-006PASSno tool syntax leak
6lResourcesPASSno placeholder URLs
6mHygienePASSno audit metadata in prompt files
6nPAT-008PASSURL forms consistent across files
6qPAT-001PASSno instruction duplication into examples.md, keywords.json, program.json, resources.json
6rKeyword-driftFAIL1 in keywords.json + recent digest, never named in system.md: ['dormir']; (9 stale drift entr(ies) ignored — no recent digest mention)
6sHygienePASSno expired dates in live SDK
6tCoverageWARN6/6 principle(s) without example: #1 Escuchas más que hablas: una pregunta a la vez, nunca apiladas., #2 Respondes primero lo que el lead pregunta o pide, #3 Identificación antes que información., #4 Autoridad técnica, una vez por mecanismo., #5 Insistencia de precio — derivar a humano.
canal · sync 2026-07-27
284
Digests
38 en últimos 14d
31
Cambios pedidos / pendientes
del checklist
283
Threads
en el canal
2026-07-27
Última sync
del digest

Cosas nuevas (digests recientes)

FechaTemaTags
2026-07-27daily metrics jul24 27 weekly reportautomated, metrics, weekly-report
2026-07-26followup echo recurrence still brokenfollowups, workflow-echo, bug-recurrence, escalation
2026-07-24daily metrics 40enforma jul23 24metrics, reporting, automated
2026-07-23lead volume recovery post outagemetrics, incident, recovery
2026-07-21mcp usage felix self serve sessionmcp, self-serve, usage, telemetry
2026-07-21personal trainers fitness coaches disqualifiedqualification, rules, deploy
2026-07-21workflow echoes lead messages as outboundbug, workflow, follow-up, platform, critical, echo
2026-07-21follow up duplication onlyrunonce state persistencebug, workflow, follow-up, platform
2026-07-21cleaning services explicit disqualificationqualification, rules, deploy
2026-07-21workflow conexion post recurso echoes lead messagesbug, workflow, follow-up, critical
2026-07-21descalificacion limpieza entrenadoresdisqualification, occupations, deploy, no-response
2026-07-21solo calendario romulo aaron inactivobooking, routing, calendar, deploy
2026-07-21followup duplicado conexion post recursobug, workflow, follow-up, duplicate, onlyRunOnce
2026-07-21derivation routing 100 percent romulo provisionalrouting, decision, resources
2026-07-20agent role drift to blog consultantagent-behavior, role-violation, critical-fix
2026-07-20reentrega recurso opener repetidoresource-delivery, context-retention, deploy
2026-07-20lead data raul souto 7 agendadolead-status, qualified, scheduled
2026-07-20manychat vs agente entrega recursosmanychat, resource-delivery, link-glued, pause-on-external, churn-risk
2026-07-20workflow gateway bug seguimiento post linkbug, workflow, gateway, blocking
2026-07-20seguimiento workflows disabled critical errorsworkflow, critical, agent-error, pause

Cambios pedidos por el creador / pendientes

IDEstadoCambio pedido
B8pendiente✅ **APLICADO 2026-06-03 (changelog 2026-06-03).** Opener canónico ÚNICO: *"Hola, cómo estás? Cuéntame, qué te gustaría cambiar para ver la mejor forma de ayudarte?"* (de Félix 3/6,
E13pendiente**Existe un listado de profesiones/oficios que descalifican** (además del filtro económico de E4). Falta el listado concreto + reflejarlo en SDK/examples + una sintética que muestr
E14pendiente**Filtro para leads cuyo core es sexual-performance puntual (eréctil) (5/6):** criterio definido — "libido baja" como **síntoma hormonal SIGUE CALIFICANDO** (→ TRT/`booking_felix`,
E17pendiente**Follow-up a mecánico no-calificado (2026-07-06/07) — causa raíz = drift del evaluador, NO el prompt.** Conv real `019f38b3` (`cristianvidalmunoz`): el agente conversacional calló
F15pendiente**Discovery estructurado (Paso 3 nuevo en la arquitectura principles, 2026-07-08, pv_019f4286).** Después de calificar y antes del Puente, profundizar el contexto con **UNA pregunt
H3pendiente**Regla de derivación canonical (2026-06-08, actualizada 24/6):** ideal / alta capacidad → **reparto Agustín/Rómulo** (**Agustín 70% / Rómulo 30%** — ratio invertido el 24/6 por pe
H4pendiente**Los links de calendario NO deben quedar hardcodeados con un solo setter en los `examples.md`** — el modelo usa los ejemplos como referencia más fuerte que la regla, así que un li
~~pdf_panel_hormonal~~pendiente~~`…1j2xFKnPt1…`~~ **REMOVIDO 2026-07-07** — URL daba HTTP 404 (Page Not Found) y el agente lo mandaba a leads reales (queja Félix IMG_5168). Sin reemplazo en el digest. Sacado de
J7pendiente**Mensaje canonical para leads NO calificados** (acordado 1/6, añadido por Julián): *"Te cuento. Tenemos un sistema diseñado para hombres +40 que buscan perder grasa y recuperar su
K1pendienteFU1: 30 minutos sin respuesta. "Hola, ¿sigues por ahí? Quedé pendiente de tu respuesta 👋"
K4pendienteReactivación automática del agente: 30 minutos sin actividad humana en la conversación. ⚠️ Ver P1 — Félix pidió subir a 1h para interferencia humana; verificar/decidir.
K7pendienteRecurso del FU2 (24h): **se define después** (sigue siendo el pendiente N4).
K9pendiente⚠️ **AMBOS WORKFLOWS DESHABILITADOS 2026-07-10 (ver N44)** — apagados hasta fix de plataforma (evaluador `null`≠`true` + auto-seteo de `booking_link_sent`). Mientras estén off, lea
L3pendienteSi lead no contesta al automático ManyChat → Ninjo manda follow-up (mensaje exacto pendiente OK Félix).
L15pendiente**Activación en leads de Ads (mensaje automático de Meta):** los leads que entran por Ads reciben primero el **mensaje automático de la campaña de mensajes de Meta** (ocupa el prim
O7pendiente**Criterio del audio inicial** (1/6): saludo simple + pregunta abierta (el mismo saludo inicial pero en audio), conectado al flujo de la keyword/publicidad que lo activa. Genera co
P1pendiente**Pausa del mensaje** (interferencia humana): cuando el setter/Félix escribe manualmente, la plataforma lo interpreta como externo y pausa al agente. **DECISIÓN (1/6): pausa de 1 h
P3pendiente**Contact limit + custom property para no-califica económico** (DECISIÓN 1/6): reemplazar/reforzar el corte por `NO_RESPONSE` del SDK con un stop a nivel plataforma. Property `no_c
N45pendiente**🟠 Jubilados — alcance ambiguo en No califican (17-07).** La lista dice "jubilados **con pensión mínima**" (calificador angosto). Félix (18:55, caso kikan_88) marcó un jubilado qu
N43pendiente**Bienvenida re-disparada en medio de la charla = ManyChat, NO el agente (10-07, MEDIUM). [root cause corregido]** Conv "Polo" `019f49ab` (captura IMG_5292): tras el discovery, rea
N42pendiente**🟠 Flujo de entrega de recurso incompleto en prod (08-07, ABIERTO).** Félix pidió agregar un flujo para conversaciones que arrancan solo por entrega de recurso (keyword de video/P
N39pendiente✅ **RESUELTO 2026-07-07 (pendiente deploy) — recurso muerto `pdf_panel_hormonal`.** El agente mandó a un lead (conv del panel hormonal, IMG_5168) *"Te comparto un PDF…"* + link Dri
N40pendiente**Envío proactivo de recursos por topic-match (07-07, ABIERTO).** El agente mandó `pdf_panel_hormonal` sin que el lead lo pidiera — lead: *"no sé qué métricas debe incluir, estoy i
N28pendiente**Deflección de precio prematura (23/6).** Ante "¿Cuál es el costo del programa?" en frío (sin discovery, sin propuesta de llamada), el agente responde el copy canónico *"Depende d
N19pendiente**"Perdió el hilo" / entregó recursos cuando no debía (4/6).** Félix reportó 2 conversaciones (IMG_3713/3714) donde el agente pierde contexto y manda recursos cuando solo debía con
N20pendiente**Ads no activa el agente ni con keyword (4/6) — bloqueo central. Diagnóstico PARCIAL.** El mensaje automático de la campaña de mensajes de Meta = `"Hola, soy Félix y ayudo a profe
N21pendiente**Consulta puntual (TRT) → el agente responde por el programa (5/6).** Félix (IMG_3758): *"le preguntan por TRT y responde por el programa"*. **Conv confirmada: `019e954e` (cesarde
N22pendiente**"No responde" / "No hace el proceso" (5/6).** Dos reportes de Félix: (a) "No responde" (3:31, IMG_3759 — sin transcribir); (b) **"No hace el proceso en este caso donde no podría
N47pendiente🔴 **ABIERTO — Workflows FOLLOW_UP devuelven el mensaje del lead como outbound (eco).** 18 casos confirmados en Postgres entre 2026-07-20 20:12 y 2026-07-21 15:32: filas OUTBOUND cu
Y15pendienteEl agente seguía mandando el calendario de **Rómulo** a leads calificados aunque la regla de `system.md` ya decía Agustín. Causa: el link de Rómulo estaba **hardcodeado en 3/4 ejem
sentiment del cliente → Ninjo · scoreado ahora (2026-07-31 15:38:30) · modelo claude-sonnet-4-6 · ventana 7d
-1
Sentiment score
frustrado_pero_enganchado
Medio
Churn risk
del lado del cliente
31
Cambios pedidos
pendientes en checklist
3
Volumen cliente
agente: 423 convs

Matriz de volumen

enganchado pero en distres
Cliente activo (volumen alto) pero con tono negativo: enganchado, riesgo está en el TONO, no en el silencio.

Sentiment del cliente

📋 Félix está activo y enganchado operativamente (reporta bugs, sigue usando la plataforma) pero muestra frustración explícita y creciente por un bug de eco en seguimientos que lleva al menos 5 días sin cierre (21/7 → 26/7); la frase 'debería haber está solucionado hace rato' indica que su tolerancia está acotada. Acción inmediata: CS debe dar ETA concreto del fix a devs, confirmar a Félix en 24h con evidencia técnica (registros DB post-21/7), y no cerrar el ticket hasta validar en PROD con él — si el bug reincide una tercera vez sin resolución documentada, el riesgo sube a alto.
SeñalValorEvidencia (cita del cliente)
Enojado con la plataforma“no se resuelve ni con Claude el tema de los seguimientos. Están pausado siempre pasa lo mismo. El agente empieza a duplicar mensaje, escribe lo que escribió el Lead, eso debería haber está solucionado hace rato”
Es queja“no se resuelve ni con Claude el tema de los seguimientos. Están pausado siempre pasa lo mismo. El agente empieza a duplicar mensaje, escribe lo que escribió el Lead, eso debería haber está solucionado hace rato”
Queja constructiva (accionable)“no se resuelve ni con Claude el tema de los seguimientos. Están pausado siempre pasa lo mismo. El agente empieza a duplicar mensaje, escribe lo que escribió el Lead, eso debería haber está solucionado hace rato”

Evidencia citada

SeñalCita textualFecha
Bug recurrente de eco en seguimientos — cliente lo señala como no resuelto y con expectativa de haberlo estado“no se resuelve ni con Claude el tema de los seguimientos. Están pausado siempre pasa lo mismo. El agente empieza a duplicar mensaje, escribe lo que escribió el Lead, eso debería haber está solucionado hace rato”2026-07-26

Cambios pedidos por el creador (Métrica 1)

Un creador que pide cambios concretos está enganchado (mejor señal que el silencio).

IDEstadoCambio pedido
B8pendiente✅ **APLICADO 2026-06-03 (changelog 2026-06-03).** Opener canónico ÚNICO: *"Hola, cómo estás? Cuéntame, qué te gustaría cambiar para ver la mejor forma de ayudarte?"* (de Félix 3/6,
E13pendiente**Existe un listado de profesiones/oficios que descalifican** (además del filtro económico de E4). Falta el listado concreto + reflejarlo en SDK/examples + una sintética que muestr
E14pendiente**Filtro para leads cuyo core es sexual-performance puntual (eréctil) (5/6):** criterio definido — "libido baja" como **síntoma hormonal SIGUE CALIFICANDO** (→ TRT/`booking_felix`,
E17pendiente**Follow-up a mecánico no-calificado (2026-07-06/07) — causa raíz = drift del evaluador, NO el prompt.** Conv real `019f38b3` (`cristianvidalmunoz`): el agente conversacional calló
F15pendiente**Discovery estructurado (Paso 3 nuevo en la arquitectura principles, 2026-07-08, pv_019f4286).** Después de calificar y antes del Puente, profundizar el contexto con **UNA pregunt
H3pendiente**Regla de derivación canonical (2026-06-08, actualizada 24/6):** ideal / alta capacidad → **reparto Agustín/Rómulo** (**Agustín 70% / Rómulo 30%** — ratio invertido el 24/6 por pe
H4pendiente**Los links de calendario NO deben quedar hardcodeados con un solo setter en los `examples.md`** — el modelo usa los ejemplos como referencia más fuerte que la regla, así que un li
~~pdf_panel_hormonal~~pendiente~~`…1j2xFKnPt1…`~~ **REMOVIDO 2026-07-07** — URL daba HTTP 404 (Page Not Found) y el agente lo mandaba a leads reales (queja Félix IMG_5168). Sin reemplazo en el digest. Sacado de
J7pendiente**Mensaje canonical para leads NO calificados** (acordado 1/6, añadido por Julián): *"Te cuento. Tenemos un sistema diseñado para hombres +40 que buscan perder grasa y recuperar su
K1pendienteFU1: 30 minutos sin respuesta. "Hola, ¿sigues por ahí? Quedé pendiente de tu respuesta 👋"
K4pendienteReactivación automática del agente: 30 minutos sin actividad humana en la conversación. ⚠️ Ver P1 — Félix pidió subir a 1h para interferencia humana; verificar/decidir.
K7pendienteRecurso del FU2 (24h): **se define después** (sigue siendo el pendiente N4).
K9pendiente⚠️ **AMBOS WORKFLOWS DESHABILITADOS 2026-07-10 (ver N44)** — apagados hasta fix de plataforma (evaluador `null`≠`true` + auto-seteo de `booking_link_sent`). Mientras estén off, lea
L3pendienteSi lead no contesta al automático ManyChat → Ninjo manda follow-up (mensaje exacto pendiente OK Félix).
L15pendiente**Activación en leads de Ads (mensaje automático de Meta):** los leads que entran por Ads reciben primero el **mensaje automático de la campaña de mensajes de Meta** (ocupa el prim
O7pendiente**Criterio del audio inicial** (1/6): saludo simple + pregunta abierta (el mismo saludo inicial pero en audio), conectado al flujo de la keyword/publicidad que lo activa. Genera co
P1pendiente**Pausa del mensaje** (interferencia humana): cuando el setter/Félix escribe manualmente, la plataforma lo interpreta como externo y pausa al agente. **DECISIÓN (1/6): pausa de 1 h
P3pendiente**Contact limit + custom property para no-califica económico** (DECISIÓN 1/6): reemplazar/reforzar el corte por `NO_RESPONSE` del SDK con un stop a nivel plataforma. Property `no_c
N45pendiente**🟠 Jubilados — alcance ambiguo en No califican (17-07).** La lista dice "jubilados **con pensión mínima**" (calificador angosto). Félix (18:55, caso kikan_88) marcó un jubilado qu
N43pendiente**Bienvenida re-disparada en medio de la charla = ManyChat, NO el agente (10-07, MEDIUM). [root cause corregido]** Conv "Polo" `019f49ab` (captura IMG_5292): tras el discovery, rea