Saltar al contenido
GUREN AI Docs

Empieza aquí

Cómo funciona la plataforma

La arquitectura que comparten Ana, Laura y David: eventos canónicos, capacidades, una sesión durable por contacto, conectores por cliente y modo borrador.

Actualizado el

Los tres trabajadores digitales corren sobre una misma plataforma. Está diseñada para que sumar un cliente sea configuración y no código, para que ningún proveedor quede amarrado a la lógica del agente y para que cada acción quede registrada antes de ejecutarse.

vista general
 TUS CANALES Y SISTEMAS
 WhatsApp · Messenger · Instagram · SMS · Voz · Meta Lead Ads · Google Ads
 Slack (respuestas de tu equipo) · Tu CRM o sistema propio
        │
        ▼
 PLATAFORMA GUREN AI (edge)
 1. Verificar la firma del proveedor
 2. Traducir a un evento canónico            message.received · lead.created …
 3. Sesión durable del contacto              orden · deduplicación · estado
 4. Playbook decide                          acciones por capacidad
 5. Ejecutor                                 capacidad → conector instalado
        │
        ▼
 TUS SISTEMAS
 WhatsApp · Vapi · Google/Microsoft Calendar · HubSpot · Pipedrive
 Slack · Teams · webhook firmado · MCP

#Las cinco piezas

PiezaQué hacePor qué importa
ConectorHabla con un proveedor: verifica la firma de lo que entra, lo traduce y ejecuta las acciones que salen.Cambiar de proveedor (por ejemplo, de Pipedrive a HubSpot) no toca la lógica del agente.
Evento canónicoUn solo formato para todo lo que entra: un mensaje, un lead, el fin de una llamada, la respuesta de tu equipo.El agente nunca ve datos crudos de un proveedor, solo hechos de negocio.
Sesión por contactoUn objeto durable por persona con su historial, su cadencia, sus alarmas y su registro de acciones.Los eventos de una persona se procesan en orden y los reintentos no duplican nada.
PlaybookDecide qué hacer ante cada evento: responder, ofrecer horarios, llamar, avisar a tu equipo, actualizar el CRM.Se configura por cliente, sin código.
EjecutorConvierte cada acción en una llamada al conector instalado que tenga esa capacidad.El agente pide “agendar”; el ejecutor sabe si tu calendario es Google o Microsoft.

#Eventos canónicos

Todo lo que entra se normaliza a un evento con un identificador estable, el cliente, el canal, el contacto (teléfono en formato E.164, correo o identificador externo) y el detalle del caso. Estos son los tipos:

EventoCuándo ocurre
message.receivedEl contacto escribió por WhatsApp, Messenger, Instagram, SMS o el chat web.
message.interactiveEligió una opción de una lista o un botón (por ejemplo, un horario).
message.statusUn mensaje se entregó, se leyó o falló.
lead.created · lead.updatedLlegó un lead desde un formulario, Meta Lead Ads, Google Ads o tu CRM, o cambió uno existente.
lead.flow_abandonedEl lead no terminó un flujo de tu sistema (por ejemplo, dejó una agenda a medias).
call.started · call.endedUna llamada empezó o terminó: contestada, sin respuesta, buzón de voz, ocupado o fallida.
handoff.reply · handoff.releaseUna persona de tu equipo respondió desde Slack, o devolvió la conversación a Ana.
meeting.bookedSe creó una reunión en el calendario.

#Capacidades, no proveedores

Los playbooks piden capacidades. El ejecutor resuelve cuál de tus conectores las cumple. Las capacidades de registro y aviso se envían a todos los conectores que las tengan: si tienes HubSpot y además un webhook hacia tu ERP, ambos reciben la actividad.

CapacidadEjemplos de conector
message.send_text · send_template · send_choices · mark_readWhatsApp Business, Messenger, Instagram, SMS
voice.callVapi
calendar.availability · calendar.bookGoogle Calendar, Microsoft Calendar, tu sistema vía MCP
crm.upsert_contact · log_activity · set_statusHubSpot, Pipedrive, webhook firmado, MCP
notify.post · notify.handoffSlack, Microsoft Teams, correo
tools.callCualquier herramienta de un servidor MCP de tu empresa

El catálogo completo, con las credenciales que pide cada conector, está en Integraciones y conectores.

#Una sesión durable por contacto

Cada persona tiene su propia sesión, identificada por su teléfono, su correo o su identificador en la plataforma de origen. La sesión vive en el edge y guarda:

  • El historial de la conversación y la última vez que la persona escribió por cada canal (para la ventana de 24 horas de Meta).
  • La cadencia en curso y sus alarmas: el próximo intento se agenda como una alarma, no como una tarea externa que se puede perder.
  • Los horarios que se le ofrecieron, la reunión agendada y las referencias del contacto en tu CRM.
  • Si una persona de tu equipo tomó la conversación.
  • El registro de las últimas acciones (outbox), con lo que se envió o se habría enviado.

#El manifiesto de cada cliente

Cada implementación se describe en un manifiesto: qué conectores tiene instalados, con qué configuración, qué playbooks usa, su horario y su perfil de conversación. Agregar un cliente es escribir un manifiesto y cargar sus credenciales; no requiere cambiar código.

manifiesto (forma resumida, ejemplo)
{
  status: 'draft',                          // draft: decide y registra, no envía
  defaultCountry: '56',
  profileSlug: 'clinica-ejemplo',           // identidad, negocio y tema de la reunión
  hours: { timezone: 'America/Santiago', days: [1, 2, 3, 4, 5, 6], from: '08:00', to: '20:00' },
  consent: { requireForOutbound: true, assumeForSources: ['meta_lead_ads'] },
  connectors: {
    whatsapp: { type: 'whatsapp_cloud', config: { phoneNumberId: '…', wabaId: '…' } },
    metaleads: { type: 'meta_lead_ads', config: { pageId: '…' } },
    voice:    { type: 'vapi', config: { assistantId: '…', phoneNumberId: '…' } },
    calendar: { type: 'google_calendar', config: { calendarIds: ['evaluaciones@clinica.cl'], durationMin: 30 } },
    crm:      { type: 'hubspot', config: {} },
    slack:    { type: 'slack', config: { channel: 'C0…' } }
  },
  playbooks: {
    conversation: { enabled: true, handoffKeywords: ['reclamo', 'hablar con una persona'] },
    lead_created: {
      enabled: true,
      steps: [
        { action: 'call', after: 0 },                                         // minutos desde el paso anterior
        { action: 'template', after: 10, template: 'primer_contacto', variables: ['{{nombre}}'] },
        { action: 'call', after: 180 }
      ]
    }
  }
}

#Borrador antes de vivo

Todo cliente parte con status: 'draft'. En borrador, el trabajador recibe los eventos reales, decide y deja registrada cada acción, pero no envía nada: ni mensajes, ni llamadas, ni correos. Si aún no hay credenciales de calendario, la agenda se simula. Así tu equipo revisa exactamente cómo se comportaría antes de exponer a un solo cliente.

  1. Borrador

    Se conectan los canales y se ensayan escenarios. Cada decisión queda en el registro de la sesión.
  2. Revisión

    Tu equipo revisa las conversaciones simuladas y las acciones registradas. Se ajusta y se repite.
  3. Vivo

    Con el checklist completo, el manifiesto pasa a status: 'live'. Volver a borrador es inmediato.

#Secretos y aislamiento

  • Las credenciales de cada cliente se guardan como secretos cifrados del entorno de ejecución, nunca en el código ni en el manifiesto.
  • Cada conector solo puede leer los secretos de su propia instancia, con el nombre ANA__<CLIENTE>__<INSTANCIA>__<CLAVE>. Un conector de un cliente no puede leer los de otro.
  • Cada aviso entrante se verifica con la firma de su proveedor antes de procesarse. Ver Webhooks firmados.
  • Las rutas de administración exigen un token de administrador; sin él, no responden.

#Dónde corre

La plataforma corre en la red edge de Cloudflare: el sitio, la API, los conectores y las sesiones durables están en un mismo servicio, cerca de quien escribe. Los modelos de lenguaje se consumen por APIs empresariales (Claude, de Anthropic, como modelo principal), con respaldo automático si el proveedor principal no responde. Ver Seguridad y datos personales.

#Cómo encajan los tres trabajadores

TrabajadorSobre qué corre
AnaSesión durable por contacto, playbooks de conversación y de cadencia, conectores de canal, agenda, CRM y aviso.
LauraUn escritorio durable por cliente (prospectos, buzones, aprobaciones y aprendizaje), los mismos manifiestos y secretos, y conectores de correo, Apollo y Slack.
DavidLa capa semántica del cliente, un compilador determinista, el guardrail sobre el árbol sintáctico y la ejecución en tu base a través de MCP.