# Recetas de producción

El resto de esta wiki te dice QUÉ podés pedir con una frase (los "Pedile" de cada página). Esta página tiene las recetas de producción completas: prompts largos, probados, que especifican el resultado entero — el dato, el formato, las verificaciones y lo que NO tiene que hacer. Se pegan tal cual y se ajusta lo que está entre corchetes o paréntesis (tu @handle, tu propiedad de conversión, tus DMs reales). Salvo donde se aclara Claude Code, todas funcionan en Claude web.

Los pedidos de esta página son un punto de partida probado: copialos tal cual, o editalos y mejoralos para tu caso.

---

### Un agente que suena a tu cliente, no a un chatbot

**El problema:** el agente escribe correcto pero suena a robot, porque nadie le dio la voz real del cliente. **Cuándo usarla:** cada vez que armás un agente nuevo, antes de escribir una sola línea — solo necesitás 10 a 20 respuestas reales de su DM. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Vamos a armar el agente de un cliente nuevo. Antes de escribir una sola línea, hacé esto:

1. Traé todo lo que ya tenemos de él con get_self_serve_data: su biografía de Instagram procesada, sus publicaciones con métricas, las conversaciones de ejemplo y el formulario que llenó al darse de alta. Decime qué falta y qué tenemos.

2. Mirá los agentes de ejemplo del manual (get_playbook_index) y decime cuál se parece más a este negocio.

3. Recomendame el ARQUETIPO según el precio de la oferta y explicame por qué:
   - menos de $100 → venta rápida
   - $100 a $1.000 → consultivo, cierra en el chat
   - más de $1.000 y compra emocional → premium que cierra en el DM
   - más de $1.000 y se cierra por Zoom → el que agenda llamadas
   Si el caso no encaja limpio en ninguno, decímelo en vez de forzarlo.

4. Acá van DMs reales del cliente, para que el agente suene a él y no a un robot:
[PEGÁ ACÁ 10 A 20 RESPUESTAS REALES SUYAS: saludos, objeciones, entusiasmo, y algún "no sos mi perfil" amable]

5. Escribime el agente COMPLETO, no un cascarón: instrucciones + ejemplos (10 o más, turno por turno) + base de conocimiento. Esas tres nunca van vacías. Más las palabras clave y el programa. Objeciones, historia personal, recursos y casos de éxito: completalas si aplican y decime cuáles dejaste vacías a propósito.

6. Las palabras clave, con la condición canónica: solo literal_response, resource_with_flow o contextual. Ninguna otra. Y metele la dirección del recurso adentro de la palabra clave, para que la entrega la maneje la plataforma y no dependa del modelo.

7. Mostrame todo ANTES de publicar nada. No lo prendas todavía: primero lo leo yo.
```

</details>

---

### La radiografía completa del agente en treinta segundos

**El problema:** el agente "anda", pero no sabés lo que no sabés: los agujeros típicos no se ven leyendo conversaciones, se ven en lo que *no* está cableado alrededor. **Cuándo usarla:** después de cada cambio — el modo rápido es gratis y devuelve siempre lo mismo ante lo mismo. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Corré diagnose_agent (mode: quick) sobre mi agente y explicame cada hallazgo en castellano, sin jerga.

Por cada hallazgo quiero:
1. Qué está roto o faltando, en criollo.
2. Qué me está costando eso en la práctica (ejemplo: "el agente le sigue escribiendo a gente que ya te compró").
3. La herramienta exacta que lo arregla.
4. Si conviene arreglarlo o no. Recomendame vos, con criterio.

Dame el puntaje sobre 100 y ordename los hallazgos por impacto real en plata, no por gravedad técnica.

Después de eso, si el puntaje es bajo, corré diagnose_agent (mode: full) para que además audite las conversaciones reales y las instrucciones publicadas. Avisame antes de correrlo, porque ese modo tiene un costo: hace pensar a la inteligencia artificial sobre muchas conversaciones reales.
```

</details>

---

### El mapa de por qué te dicen que no

**El problema:** sabés que se te caen leads, pero no sabés por qué. Intuís que es el precio, y capaz es la confianza, o el momento — estás arreglando el problema equivocado. **Cuándo usarla:** cuando el embudo pierde gente y antes de tocar el archivo de objeciones. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Quiero el mapa de objeciones de mi agente.

Corré get_agent_insights (days: 30, sections: [objections, funnel]). La sección de objeciones agrupa los leads estancados (etapa 1 a 3, callados hace más de 72 horas) por tipo: MONEY, TRUST, TIMING, PRIORITY o UNKNOWN.

Ojo: necesita una ventana de al menos 4 días, porque un lead recién cuenta como estancado tras 72 horas de silencio. Y si me devuelve vacío es porque no tengo las propiedades de objeción configuradas: en ese caso decímelo y proponeme cuáles crear, con el prompt para crearlas.

Con el resultado:
1. Ordename las objeciones por volumen y decime cuál me está costando más.
2. Traé 3 conversaciones reales de la objeción más grande (search_conversations, min_funnel: 1, max_funnel: 3) y leelas enteras.
3. Decime si la objeción es REAL (el producto no encaja) o si es un problema del agente (la maneja mal, la levanta antes de tiempo, no la trabaja).
4. Si es del agente: escribime el ejemplo nuevo para el archivo de objeciones. Ejemplo concreto, con el diálogo, no una regla en prosa.
5. Si el bloque UNKNOWN es grande, alarmame: significa que el agente ni siquiera está detectando por qué se le caen.
```

</details>

---

### Recuperar los leads que pidieron algo y nunca lo recibieron

**El problema:** el caso más caro y más invisible: gente que levantó la mano, recibió el link de agenda y nunca agendó. Leads que ya pagaste, en contenido o en anuncios, muertos en tu base. **Cuándo usarla:** hoy, y después nunca más a mano — la receta cierra con la automatización que evita que se repita. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Quiero recuperar los leads que se me escaparon. Buscame los que YA recibieron el link de agenda y nunca agendaron.

1. search_conversations con: has_booking_link: true, call_booked: false, last_message_before: (hace 7 días), limit: 100. Paginá si hay más de una página.
2. Ordenámelos por lead_score descendente y por funnel descendente: primero los más calientes.
3. Para los top 20, leé la conversación y decime en una línea por qué se cayó cada uno (no vio el link, dijo que lo iba a ver, objeción de plata, se fue en silencio).
4. Agrupalos por motivo de caída.

Después, la parte importante: no quiero recuperarlos a mano nunca más. Armame la automatización para que esto no vuelva a pasar.
- Un seguimiento automático (upsert_workflow, type FOLLOW_UP) condicionado a booking_link_sent = true Y call_booked distinto de true, con minMinutesSinceLastInbound para que solo toque a los que están callados hace rato.
- Mostrame la condición exacta ANTES de crearla y esperá mi OK.

Acordate: condicionar siempre sobre propiedades de sí o no, nunca sobre texto.
```

</details>

---

### El kit de activación: de demo a sistema de producción

**El problema:** tu agente es un texto suelto que contesta bien y nada más: le sigue escribiendo al que ya compró, no te avisa cuando alguien convierte y no persigue al que se enfrió. **Cuándo usarla:** en todo agente nuevo antes de prenderlo, y en todo agente viejo que nunca pasó por esto. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Quiero convertir mi agente de un texto suelto a un sistema de producción.

Paso 1. Corré diagnose_agent (mode: quick) y decime qué me falta del kit de activación.

Paso 2. Cableame el kit con scaffold_agent_activation. Mi propiedad de conversión es: (call_booked / purchased / la que use). Quiero:
- terminal_property: esa, garantizada como propiedad de sí o no (nunca de texto: el texto compara mal).
- Un freno de contacto prendido y condicionado a esa propiedad, para que el agente DEJE DE ESCRIBIRLE al que ya convirtió.
- followup: un seguimiento automático condicionado a NO convertido, con interval_minutes (recomendame vos el número), para reenganchar al que se enfrió. Nunca sin condición.
- notify: la notificación de conversión a mi destino de avisos.

Mostrame qué va a crear y qué va a reusar ANTES de ejecutarlo. La herramienta es segura de correr dos veces: si algo ya existe lo reusa en vez de duplicarlo.

Paso 3. Volvé a correr diagnose_agent (mode: quick) y mostrame el puntaje antes y después.

Paso 4. Verificá dos cosas que se olvidan siempre:
- Que la propiedad terminal tenga prendido el "seguir chequeando hasta que sea sí". Sin eso, se congela en "no" en el primer mensaje y el freno no dispara nunca.
- Que el freno de contacto NO tenga mensaje de cierre (el corte va en silencio, es deliberado), y que en cambio SÍ esté cableado el aviso al operador, para que el lead que convirtió no quede en el aire.
```

</details>

---

### Auditar tus palabras clave: que existan de verdad y que entreguen

**El problema:** palabras clave que el agente no reconoce, o que reconoce pero no entregan el recurso: el lead pide la guía, recibe algo genérico y vos ni te enterás. Es la falla más silenciosa y más cara. **Cuándo usarla:** en cada onboarding y cada vez que tocás las keywords. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Auditame todas las palabras clave del agente. Quiero saber cuáles no están entregando.

Una palabra clave vive en 3 lugares, y si falta en uno queda incompleta y no entrega:
1. Disparador de DM (trigger_keywords), que captura el match en mensajes directos.
2. Disparador de comentarios (trigger_comments), si entra por comentario en un post o reel.
3. El contenido del agente (v5Config, sección keywords), que define la condición de entrega y el recurso.

Proceso:
- list_triggers (agent_id) para ver qué existe en plataforma.
- get_agent_config (agent_id) para ver las keywords del contenido del agente.
- Cruzá las dos listas y decime: qué palabra clave está en plataforma pero NO en el contenido (el disparador captura al lead y el agente no sabe qué hacer, cae a flujo genérico), y cuál está en el contenido pero NO en plataforma (el agente sabría responder pero nunca la capturan).

Después chequeá las CONDICIONES. Las únicas 3 válidas son: literal_response, resource_with_flow y contextual. Si ves cualquier otra cosa, esa palabra clave no está entregando el recurso. Listámelas.

Por último, para las que entregan un recurso: verificá que la forma de coincidencia del contenido coincida con la de la plataforma (palabra aislada con palabra aislada, en cualquier parte con en cualquier parte).

Dame una tabla: palabra clave, estado (OK / falta en plataforma / falta en contenido / condición inválida / coincidencia desalineada), y el arreglo concreto de cada una.
```

</details>

---

### El panel que abrís cada mañana y ya está fresco

**El problema:** un panel a pedido es una foto que mañana está vieja. Este se regenera solo todas las mañanas, con los números del día, sin pedirle nada a nadie. **Cuándo usarla:** cuando ya operás en serio y querés una vista diaria de toda la operación. **Dónde:** Claude Code — crea archivos locales y deja una tarea programada del sistema. Si solo querés la foto del momento, borrá la PARTE 3 entera y pegalo en Claude web o desktop.

<details>
<summary>Ver la receta completa</summary>

```
Quiero un panel de control visual de mi operación en Ninjō. Tiene que ser real (datos traídos del MCP, cero invención), tiene que ser lindo, y después tiene que quedar actualizándose solo.

Trabajá en tres partes. No saltees ninguna y no me preguntes nada hasta terminar la Parte 1.

═══════════════════════════════════════
PARTE 1 - TRAER LOS DATOS REALES
═══════════════════════════════════════

Usá únicamente las herramientas del MCP de Ninjō. Regla innegociable: si un dato no viene, se muestra como "sin datos". No estimes, no completes, no inventes un solo número.

1. Empezá con `get_me`. Eso te dice a qué cuentas tengo acceso y el nombre de usuario de cada una. Si hay más de una cuenta, el panel las tiene que cubrir a todas, con un selector arriba para cambiar entre ellas.

2. Para cada cuenta, corré `list_agents` para saber qué agentes tiene.

3. Traé los datos del período. Ventana principal: 30 días. Traé también la ventana de 7 días para poder mostrar variación.

   a) `get_agent_insights` con days=30 y sections=["volume","funnel","sources","objections"]:
      - volume: conversaciones nuevas, leads calificados, links de agenda enviados, más la línea de las últimas 24 horas
      - funnel: las etapas configuradas de MI embudo. Usá los nombres de etapa que devuelve la herramienta, no inventes etapas genéricas. Traé la cantidad de conversaciones por etapa y el porcentaje de conversión entre etapas consecutivas
      - sources: rendimiento por origen (DM orgánico, respuesta a historia, título del anuncio)
      - objections: leads frenados agrupados por objeción (MONEY / TRUST / TIMING / PRIORITY / UNKNOWN)
      Repetí la llamada con days=7 para la comparación.
      IMPORTANTE: esta herramienta puede devolver una sección vacía con una entrada en `warnings`. Es un comportamiento previsto. Si pasa, esa sección va al panel como "sin datos" y el resto se muestra igual. NO abortes el trabajo por eso.

   b) `get_agent_metrics` con days=30 y min_leads=3, acotada a cada cuenta (pasá siempre influencer_id, no la llames sin filtro). De ahí sacá: leads, new_conversations, qualified_leads, avg_engagement_score, avg_funnel, avg_lead_score, bookings_sent, booking_send_rate, calls_booked, call_book_rate_total, avg_happy_path_score, avg_nurturing_score, risk_score_0_100.
      Si esta llamada falla o tarda demasiado, seguí adelante sin ella y anotalo en el pie del panel. No es bloqueante.

   c) Las listas que requieren acción mía:
      - Calientes sin agendar: `search_conversations` con min_funnel=4, call_booked=false, limit=25. Son los leads que llegaron lejos y no agendaron. Es la plata que está sobre la mesa.
      - Trabados: `get_conversations` con mode="stuck", limit=10. Son las conversaciones donde el agente mandó 6 mensajes o más y el embudo no avanzó.
      - Alta intención pero baja calidad: `get_conversations` con mode="bad", limit=10.

   d) `get_workflow_activity` con days=30, para saber cuántas veces dispararon mis automatizaciones. Cruzalo con `list_workflows` y `list_custom_notifications`. Esto me importa mucho: si hay una automatización configurada que NO disparó ni una sola vez en 30 días, quiero verla en rojo.

   e) `list_contact_limits`, para saber qué frenos tengo puestos y sobre qué condiciones.

   f) `search_contacts` con created_after = hace 30 días, para saber cuántos contactos nuevos entraron. Corré también con from_ads=true para separar cuántos vinieron de anuncios de Meta.

ANTES de escribir una sola línea de HTML: mostrame en pantalla, en texto plano, un resumen de todo lo que trajiste con los números crudos. Quiero revisarlo. Si algo se ve raro te lo digo y lo corregís antes de seguir.

═══════════════════════════════════════
PARTE 2 - EL PANEL
═══════════════════════════════════════

Armá UN solo archivo HTML autocontenido. Todo el CSS y el JS van adentro del archivo, y los datos van horneados adentro como un objeto de JavaScript. La página NO debe hacer ninguna llamada a internet: ni fuentes externas, ni librerías por CDN, ni imágenes remotas. Cero pedidos a servidores de afuera.

Estructura, de arriba hacia abajo:

1. ENCABEZADO
   Nombre de la cuenta (o el selector, si son varias), la ventana de tiempo usada, y bien visible la fecha y hora de la última actualización. Ese sello es lo que me dice de un vistazo si el panel está fresco. Que se lea.

2. FILA DE INDICADORES PRINCIPALES
   Tarjetas grandes: número grande arriba, etiqueta abajo, y la variación contra los 7 días previos con flecha y color.
   - Conversaciones nuevas
   - Leads calificados
   - Links de agenda enviados
   - Llamadas agendadas
   - Tasa de agenda (llamadas agendadas sobre leads)

3. EMBUDO
   Barras horizontales, una por etapa, con el nombre real de MI etapa, la cantidad de gente, y entre etapa y etapa el porcentaje que pasó. Quiero ver de un vistazo dónde se me cae la gente.

4. REQUIERE ATENCIÓN
   Es la sección más importante. Si hay items, va arriba de todo lo demás.
   Lista accionable con los leads calientes sin agendar y las conversaciones trabadas. Por cada uno: usuario, última etapa que alcanzó, días de silencio, y un extracto del último mensaje. Ordenados por urgencia (más caliente y más silencioso, primero).

5. ORIGEN
   Tabla por fuente (DM orgánico, respuesta a historia, anuncio) con volumen y conversión. Marcá visualmente cuál convierte mejor.

6. OBJECIONES
   Los leads frenados, agrupados por motivo, con el conteo de cada grupo. Si esta sección no vino del MCP, mostrala en gris con la leyenda "sin datos".
   Mostrá los nombres de las objeciones EN CASTELLANO: plata, confianza, momento, prioridad, sin identificar. El panel lo va a ver un cliente.

7. AUTOMATIZACIONES
   Tabla con cada seguimiento y cada notificación que tengo configurada, cuántas veces disparó en 30 días, y un semáforo:
   - verde: dispara con normalidad
   - ámbar: dispara poco
   - rojo: está configurada y NUNCA disparó
   Abajo de la tabla, listá los frenos de contacto activos.

8. PIE
   Hora de generación, ventana usada, y una línea honesta con las secciones que no se pudieron traer, si hubo alguna.

Reglas de diseño:
- Que se vea profesional y sobrio. No quiero un dashboard de plantilla genérica. Elegí una paleta con criterio y sostenela.
- Tiene que verse bien en tema claro y en tema oscuro. Definí los colores como variables CSS en :root, redefinilas dentro de @media (prefers-color-scheme: dark), y también en :root[data-theme="dark"] y :root[data-theme="light"] para que el interruptor de tema gane en las dos direcciones.
- Responsive de verdad: en el celular las tarjetas se apilan y las tablas anchas scrollean dentro de su propio contenedor, nunca la página entera de costado.
- Los números que van en columna llevan font-variant-numeric: tabular-nums, así quedan alineados.
- El color del semáforo (verde, ámbar, rojo) es información, no decoración. No lo uses para nada más.
- Nada de emojis como íconos de sección.

Guardá el archivo en una carpeta fija de mi computadora, creándola si no existe: ~/Panel-Ninjo/index.html

Después publicalo con la herramienta Artifact, para que yo tenga una dirección web fija que pueda abrir y compartir. Cuando lo publiques, decime la URL y guardala también en ~/Panel-Ninjo/URL.txt. La vas a necesitar en la Parte 3.

═══════════════════════════════════════
PARTE 3 - QUE SE ACTUALICE SOLO
═══════════════════════════════════════

(Si estoy usando Claude en la web o en la app de escritorio, ignorá esta parte entera: no aplica ahí. Aplica solo en Claude Code.)

Dos cosas que ya sabemos y que tenés que respetar al pie de la letra:

- Una corrida automática de Claude en segundo plano SÍ puede consultar el MCP de Ninjō y SÍ puede reescribir el archivo HTML. Lo que NO puede es publicar Artifacts. Así que el script de refresco NO debe intentar usar la herramienta Artifact. Solo regenera el archivo ~/Panel-Ninjo/index.html.
- Por lo tanto, la corrida programada mantiene el archivo local siempre fresco. Si además quiero que una dirección de internet se actualice sola, eso se resuelve por la vía de publicación del punto 4.B de abajo.

Hacé lo siguiente:

1. Escribí la rutina de actualización (el script) en ~/Panel-Ninjo/refrescar.sh. Que corra Claude en modo no interactivo, o sea sin nadie adelante para contestarle, con las herramientas permitidas declaradas explícitamente, para que nunca se quede esperando un permiso que nadie va a dar. Adentro va un prompt autocontenido que rehaga exactamente la Parte 1 y la Parte 2 de este mensaje, sin el paso de Artifact, y sobrescriba ~/Panel-Ninjo/index.html. Que cada corrida deje registro en ~/Panel-Ninjo/refresco.log.

2. Corré ese script UNA VEZ a mano, ahora, delante mío. Mostrame que el archivo se regeneró y que el sello de "última actualización" cambió. Si no funciona, arreglalo antes de avanzar. No me digas que quedó listo sin haberlo probado.

3. Programalo con el programador de tareas de mi sistema operativo, de forma que sobreviva a un reinicio, para que corra todos los días a las 8:05 de la mañana. Decime exactamente qué creaste y cómo lo apago el día que quiera apagarlo.

4. Preguntame cuál de estas dos opciones quiero, y hacé la que elija:

   A. ME ALCANZA CON ABRIRLO YO. Dejame un acceso directo en el escritorio que abra ~/Panel-Ninjo/index.html. Se actualiza solo todas las mañanas mientras mi computadora esté encendida. No creo ninguna cuenta nueva.

   B. QUIERO UNA DIRECCIÓN QUE VEA TODO MI EQUIPO. Publicá el panel en un servicio gratuito que hospede páginas web, y agregá a la rutina de actualización el paso de publicación, así la dirección se actualiza sola todas las mañanas. Decime cuál servicio usar, explicame en criollo qué cuenta gratuita tengo que crear y guiame apretando botones. Nada de tarjeta de crédito.

Cerrá con un resumen de tres líneas: dónde está mi panel, a qué hora se actualiza, y cómo lo apago.
```

</details>

---

### El tablero de riesgo de toda tu cartera, en una sola llamada

**El problema:** con ocho, quince o treinta sub-cuentas, para saber cuál está en llamas tenés que entrar una por una — y te enterás de que un cliente está mal cuando te escribe enojado. **Cuándo usarla:** todas las semanas, o todos los días si la cartera es grande. **Dónde:** Claude web; requiere conexión multi-cliente.

<details>
<summary>Ver la receta completa</summary>

```
Soy una agencia y manejo varias sub-cuentas. Quiero el tablero de riesgo de TODA mi cartera.

Llamá a get_agent_metrics (days: 30) SIN pasar influencer_id. Con una conexión multi-cliente eso devuelve una fila por cada cliente que manejo, en una sola llamada. No hagas un loop de get_agent_insights cliente por cliente: es innecesario.

Con eso armame un panel con una tabla ordenada por risk_score_0_100 descendente (el más riesgoso arriba), y por cada cliente mostrame:
- leads y conversaciones nuevas
- avg_funnel y avg_lead_score
- booking_send_rate y call_book_rate_total
- pct_happy_lt_60 (conversaciones de baja calidad)
- risk_score_0_100

Pintá en rojo los que tengan riesgo alto o mucha conversación de baja calidad.

Después, para los 3 peores, corré diagnose_agent (mode: quick) y decime en una línea por cliente cuál es el problema concreto y cuál es la herramienta que lo arregla.

Cerrá con: "esta semana atacá estos 3, en este orden, por esta razón".
```

</details>

---

### El reporte que prueba cuánta plata tocó el agente

**El problema:** sabés cuántas conversaciones tuvo el agente, pero no cuánta *facturación* tocó. Cuando el cliente pregunta "¿y esto me sirve?", contestás con conversaciones y agendas, que es exactamente lo que no le mueve la aguja. **Cuándo usarla:** a fin de mes, con la planilla de compradores del cliente en la mano — es el número que justifica el contrato. **Dónde:** Claude web.

<details>
<summary>Ver la receta completa</summary>

```
Te paso mi lista de compradores del mes (una planilla con nombre, email, usuario de Instagram, teléfono y monto pagado). Quiero un reporte de atribución de ventas del agente.

Proceso:
1. Consolidá y deduplicá los compradores por email. Decime total facturado y cantidad de compradores.
2. Para cada comprador, buscalo en mis contactos con search_contacts (probá por email, después por instagram_username, después por phone).
3. Para los que matchean, traé su conversación con search_conversations (contact_username) y fijate si el agente le habló DE VERDAD. Criterio mínimo: 5 mensajes del agente (min_agent_messages: 5) y que el primer contacto del agente sea ANTERIOR a la fecha de compra.
4. Clasificá a cada comprador en 3 niveles: (a) agendó llamada vía el agente, (b) conversó con el agente y compró sin agendar, (c) sin contacto con el agente.
5. Dame el total en $ de cada nivel, el % de la facturación del mes, y la tabla de los 10 compradores más grandes con su nivel.

Reglas: no inventes ningún número. Si un comprador no matchea, va a "sin contacto", no lo fuerces. Al final decime explícitamente qué porcentaje de la facturación tocó el agente y con qué nivel de confianza.

Encuadre: el agente CALIFICA Y CALIENTA, el equipo humano cierra. No digas nunca "el agente cerró la venta". Decí "el agente trabajó al comprador".
```

</details>

---

### Replicar el agente que mejor anda, de un cliente a otro

**El problema:** cuando un agente funciona en un cliente, eso que funciona es un activo tuyo, y una sola conexión te deja leerlo de un cliente y publicarlo en otro — pero es la palanca que nadie usa. El trabajo de tres días de onboarding se convierte en el trabajo de una tarde. **Cuándo usarla:** al onboardear un cliente nuevo, si ya tenés uno que convierte. **Dónde:** Claude web; requiere conexión multi-cliente. **La regla que vale la relación con el cliente:** lo que se replica es la *estructura* (el flujo, el timing, el manejo de objeciones), nunca el contenido. Los casos de éxito, la historia personal y los testimonios son de cada cliente: copiarlos de uno a otro no es un atajo, es una mentira, y se descubre en la primera llamada.

<details>
<summary>Ver la receta completa</summary>

```
Quiero replicar en un cliente lo que ya me está funcionando en otro.

Paso 1. Elegí el ganador con datos, no con mi intuición: get_agent_metrics (days: 30) sin influencer_id, y decime cuál de mis clientes tiene la mejor tasa de agenda. Ese es el modelo.

Paso 2. Leé su configuración completa (get_agent_config del cliente ganador): instrucciones, ejemplos, objeciones, base de conocimiento, palabras clave, programa.

Paso 3. Decime en 5 puntos QUÉ es lo que lo hace ganar. Concreto: en qué momento manda el link, cómo abre, cómo maneja la objeción de precio, cuántos ejemplos tiene, cómo califica. Eso es lo que vamos a replicar.

Paso 4. Leé la configuración del cliente destino y traé su contexto (get_self_serve_data). Después escribime su agente nuevo tomando la ESTRUCTURA del ganador, pero con:
- el programa, el precio y los links del cliente destino
- la voz del cliente destino (te paso sus DMs reales)
- sus palabras clave, no las del otro

NO copies el contenido del ganador tal cual. Si copiás sus casos de éxito o su historia personal a otro cliente, eso es una mentira que el lead va a descubrir.

Paso 5. Antes de publicar: mostrame el diff conceptual (qué me traje del ganador y qué es propio del destino), corré 5 conversaciones sintéticas y las leo yo. Recién después publicamos.

Paso 6. Cableale la automatización con scaffold_agent_activation, igual que al ganador. Un agente replicado sin frenos ni avisos es un agente a medias.
```

</details>

---

### El reporte semanal por cliente, programado

**El problema:** el reporte que hoy armás a mano, cliente por cliente, y que te come el primer lunes de cada mes. Se arma una vez y llega solo. **Cuándo usarla:** una sola vez — después corre solo todos los lunes. **Dónde:** Claude Code — deja una tarea programada del sistema.

<details>
<summary>Ver la receta completa</summary>

```
Quiero el reporte semanal de cada uno de mis clientes, armado una vez y programado para siempre.

Para CADA cliente de mi cartera (get_me te da la lista):
- get_agent_insights (days: 7): volumen, embudo por etapa con la conversión entre etapas, rendimiento por origen, y objeciones.
- get_agent_metrics (days: 7) acotado a ese cliente: tasa de envío del link y llamadas agendadas.
- La comparación contra la semana anterior, con la variación.
- Los leads calientes sin agendar (search_conversations, min_funnel 4, call_booked false): la plata que quedó sobre la mesa esta semana.

Armá UN archivo HTML por cliente, autocontenido, con los datos horneados adentro, listo para mandárselo. Con el nombre del cliente arriba y la fecha de generación bien visible.

Reglas:
- Si un dato no viene, va como "sin datos". No estimes ni un número: esto lo ve el cliente.
- Los nombres de las objeciones, en castellano: plata, confianza, momento, prioridad, sin identificar.
- Cerrá cada reporte con una sección de "qué hacemos esta semana": 2 o 3 acciones concretas, no un resumen.

Después dejámelo programado para que corra solo todos los lunes a las 8 de la mañana, y decime exactamente qué creaste y cómo lo apago.
```

</details>
