## Asset Header

- **Asset ID:** ARQ-MPX-CRM-BridgeSpec-v0.1
- **Version:** v00
- **Status:** Draft
- **Owner:** Victor Heredia
- **IntellBank:** IB-MPX-MasterPlaybooks
- **Tipo:** ARQ — Architecture
- **Propósito:** Puente MasterPlaybooks → CRM
- **Última actualización:** 2026-04-11

---

# Puente MasterPlaybooks → CRM
## Mini-Spec Técnica v0.1 — Para Juan Carlos
**EmpowerLabs / MasterPlaybooks**
Fecha: 24 marzo 2026

---

## Contexto

El AI Sherpa OS registra todo lo que pasa con un usuario en el Event Ledger. Tu trabajo, Juan Carlos, es construir el **puente** que hace que esos eventos lleguen al CRM en tiempo real — para que el equipo de ventas y onboarding sepa exactamente en qué estado está cada usuario y cuándo actuar.

El Sherpa detecta las señales. El CRM activa a las personas.

---

## Tu entregable

Un webhook bidireccional (o unidireccional en primera fase) entre:

```
MasterPlaybooks (plataforma) → Event Ledger (Supabase) → CRM
```

Coordina con Alex para usar el endpoint `POST /events` — él tiene el Event Ledger. Tú conectas los dos extremos: la plataforma MasterPlaybooks y el CRM.

---

## Mapa de disparadores

### PRIORIDAD 1 — Señales comerciales (acción inmediata del equipo)

| Evento en Sherpa | Qué pasó | Acción en CRM |
|-----------------|----------|---------------|
| `pricing_interest_detected` | Usuario preguntó por precio o costo | Crear tarea: "Contactar en las próximas 2 horas" + asignar a ejecutivo de ventas |
| `call_intent_detected` | Usuario pidió hablar con alguien | Crear tarea urgente: "Usuario quiere llamada — contactar hoy" |
| `urgency_detected` | Usuario expresó fecha límite o urgencia | Marcar lead como HOT + notificación inmediata al equipo |
| `upgrade_interest_detected` | Usuario preguntó por plan superior | Crear oportunidad de upsell en CRM |

### PRIORIDAD 2 — Señales de progreso (actualización de perfil)

| Evento en Sherpa | Qué pasó | Acción en CRM |
|-----------------|----------|---------------|
| `session_started` | Usuario entró al Sherpa | Actualizar `last_activity` en el contacto CRM |
| `user_goal_declared` | Usuario declaró su objetivo | Actualizar campo `goal` en el contacto |
| `module_completed` | Usuario completó un módulo | Actualizar `progress_score` + registrar nota |
| `milestone_reached` | Usuario alcanzó un hito importante | Registrar nota + considerar mensaje de felicitación |
| `session_ended` | Sesión cerrada | Actualizar `sessions_count` y `last_session_summary` |

### PRIORIDAD 3 — Señales de riesgo (intervención proactiva)

| Evento en Sherpa | Qué pasó | Acción en CRM |
|-----------------|----------|---------------|
| `engagement_drop_detected` | Señal de desenganche | Crear tarea: "Check-in proactivo con usuario" |
| `blocker_detected` | Usuario expresó un bloqueo | Registrar nota + crear tarea de seguimiento |
| Sin actividad 14 días | Inactividad prolongada (regla del State Engine) | Tarea de reactivación + enviar mensaje de WhatsApp |

---

## Estructura del webhook

### De MasterPlaybooks → Event Ledger

Cada acción del usuario en la plataforma MasterPlaybooks dispara un POST al Event Ledger:

```http
POST https://[supabase-project].supabase.co/functions/v1/capture-event

Headers:
  Authorization: Bearer [service_key]
  Content-Type: application/json

Body:
{
  "user_id": "uuid-del-usuario",
  "session_id": "uuid-de-la-sesion",
  "event_type": "module_completed",
  "event_category": "progress",
  "payload": {
    "module_id": "NOM035-001",
    "module_name": "Diagnóstico inicial",
    "completion_time_seconds": 1240
  },
  "playbook_id": "sherpa-nom035-v1"
}
```

**Obtener de Alex:** URL del proyecto Supabase + service key para el webhook.

### Del Event Ledger → CRM

Supabase puede disparar una función cuando se inserta un evento con categoría `commercial` o cuando el State Engine detecta un cambio en `risk_level`:

**Opción A (recomendada para v0.1):** Polling desde el CRM
- El CRM consulta `GET /state/{user_id}` cada X horas
- Si detecta cambio en `engagement_level` o `risk_level`, actualiza el perfil

**Opción B (más tiempo real):** Supabase Realtime
- Suscribirse a cambios en la tabla `events` con `event_category = 'commercial'`
- Cuando llega uno, disparar webhook al CRM

**Opción C (más simple para arrancar):** Edge Function con notificación directa
- Cuando `on-event-created` detecta `event_category = 'commercial'`, hace POST al webhook del CRM
- Implementar junto con Alex en la misma edge function

---

## Campos que necesitas en el CRM por contacto

Para que el puente sea útil, el perfil del contacto en CRM debe tener estos campos:

| Campo | Tipo | Fuente |
|-------|------|--------|
| `sherpa_user_id` | UUID | Enlace con el Event Ledger |
| `active_sherpa` | texto | Ej: "sherpa-nom035" |
| `progress_score` | número 0-100 | Del State Engine |
| `engagement_level` | texto (high/medium/low) | Del State Engine |
| `readiness_level` | texto | Del State Engine |
| `active_goal` | texto | Declarado por el usuario |
| `last_activity` | fecha | Último evento registrado |
| `sessions_count` | número | Total de sesiones |
| `commercial_signals` | lista | Señales detectadas |
| `last_session_summary` | texto | Resumen de última sesión |

---

## Definition of Done — Fase 1

- [ ] Webhook funcional: acción en MasterPlaybooks → POST /events en Supabase
- [ ] Al menos 3 event_types de progreso disparándose correctamente desde la plataforma
- [ ] Al menos 1 señal comercial (`pricing_interest_detected`) llegando al CRM como tarea
- [ ] Campos básicos del perfil CRM actualizándose con cada sesión
- [ ] Prueba end-to-end documentada: usuario completa módulo → CRM actualizado

---

## Preguntas que necesitas responder con Alex antes de arrancar

1. ¿Qué CRM están usando actualmente? ¿Tiene webhook de entrada?
2. ¿Los usuarios de MasterPlaybooks ya tienen UUID consistente o necesitamos crear el mapeo?
3. ¿Cuál es el primer Sherpa que va a producción? (Priorizar los eventos de ese Sherpa primero)
4. ¿La plataforma MasterPlaybooks puede disparar webhooks hoy o requiere desarrollo adicional?

---

## Coordinación con Alex

Alex tiene el Event Ledger. Tú tienes el puente. Puntos de coordinación:

- **Alex te da:** URL de Supabase + service key + documentación de POST /events
- **Tú le das a Alex:** webhook URL del CRM para las señales comerciales (para que las envíe desde la edge function)
- **Checkpoint:** al final de Semana 1, prueba conjunta del flujo completo

---

*Mini-spec: MP-CRM-Bridge-Spec-v0.1.md | Para: Juan Carlos | EmpowerLabs | 24 marzo 2026*
