Eventos assistant-request y end-of-call-report.
Un voicebot de calificación de leads sobre Vapi + n8n. Así está armado por dentro, y por qué se cae.
El proceso completo de punta a punta. Pasa el cursor (o el foco) sobre cualquier pieza para resaltar sus conexiones, y arrastra los recuadros para reacomodarlos y leer mejor el cableado. Las líneas se reajustan solas. El estado vive en Supabase, y casi todo lo toca.
Voicebot de calificación de leads inmobiliarios y comerciales para ATISA. Vapi.ai maneja la voz; n8n maneja toda la lógica. Atiende la llamada, identifica al cliente en Supabase, lo enruta a un agente especializado según su etapa (flow_step), extrae datos de la conversación con IA y los sincroniza con Zoho CRM. Si hace falta, transfiere a un humano vía Twilio.
Revelaciones clave
Hay 2 cuentas de Twilio (ATISA/"TendencIA" y "American Phone") y un endpoint propio en api.tendencia.ai. El proveedor M Consulting es TendencIA.
Son prompts de texto guardados en nodos Set que n8n le devuelve a Vapi. Vapi corre la conversación; n8n solo le pasa el prompt y las tools.
Los modelos de lenguaje solo corren DESPUÉS de la llamada, para extraer variables y resumir.
Gemini 2.5 Flash, GPT-4.1, GPT-4o, o4-mini y Claude 3.7 Sonnet. Notas de los devs: "Probar con Gemini", "Probar con GPT 4.1 o o4 mini", "REVISAR TIEMPO". Se entregó experimental.
Siete servicios externos, cuatro workflows de n8n, una base de estado compartida.
Eventos assistant-request y end-of-call-report.
4 workflows, 239 nodos. Toda la lógica vive aquí.
users, call_flows, user_property_interests, zoho_updates, call_logs, properties.
30 llamadas HTTP, versiones v2 / v2.1 / v7 / v8 mezcladas.
2 cuentas: México (MN) y EE.UU. (USN).
Extracción de variables y resúmenes tras colgar.
/webhooks/vapi · infraestructura del proveedor.
Nodos por workflow
El campo call_flows.flow_step (entero) es un selector por categoría de cliente: según su valor, el Switch carga un prompt distinto. Los números 1–6 son los valores guardados en la base, no un orden de pasos: que Comercial Compra sea el 6 no lo hace "el último", es solo la etiqueta que recibió esa categoría. Selecciona una para ver su prompt.
Cada uno se dispara por su propio webhook. Acoplados por el estado compartido en Supabase.
Verifica assistant-request → detecta número (ATISA vs secundario) → Get User + Get Call Flow en Supabase → If userExists (existe: revisa reincidencia <20 min; no existe: busca/crea Lead en Zoho + usuario) → Switch "Flow Path" por flow_step carga el prompt → responde a Vapi.
Pide GET api.vapi.ai/call?limit=15 y adivina la llamada correcta → identifica cuenta Twilio (MN / USN) → IA: "Obtain summary" (Gemini) y "Output Variables" (Gemini, parser auto-reparable) extrae JSON → actualiza Supabase → clasifica proyecto (o4-mini) → actualiza Zoho por layout → transfiere vía Twilio.
Lee usuario + zoho_updates + intereses en Supabase → If: no hay cita → crea Contacto (v8) + Evento (v8) + notas; ya hay cita → actualiza Evento (v2.1) → marca en Supabase. Un solo agente IA (Claude 3.7 Sonnet) para interpretar fecha/hora.
Evita doble proceso si fue atisa-transfer; si el usuario colgó (hang-up) igual guarda la transcripción. IA: GPT-4.1 + GPT-4o + Claude 3.7 en paralelo → actualiza call_flows / users / intereses en Supabase + notas en Zoho. Wait de 3s (el más largo).
Hallazgos de falla del sistema, rankeados por severidad.
Usa GET /call?limit=15 y adivina cuál es; con llamadas simultáneas agarra la equivocada o no la halla → desconexiones y datos cruzados.
5 nodos (1s ×4, 3s) para "esperar" sincronizaciones; no garantizan nada → síntoma de race condition no resuelta.
Ramas copy-paste; los arreglos se aplican en una y se olvidan en la otra → comportamiento inconsistente según el número.
v2 / v2.1 / v7 / v8 conviviendo. Al deprecarse una, fallan solo algunos nodos → fallos intermitentes difíciles de diagnosticar.
Si la reparación falla, se cae el flujo; modelos distintos varían el formato y agravan esto.
El flow_step se lee, procesa y reescribe; dos eventos casi simultáneos se pisan → cliente en estado incorrecto. Sin locking ni idempotencia real.
"Probar con Gemini", "Probar con GPT 4.1 o o4 mini", "REVISAR TIEMPO" → se entregó experimental.
Qué evento dispara cada workflow y por cuál webhook entra.
| Disparador | Workflow | Webhook |
|---|---|---|
| Llamada entrante (assistant-request) | Call Control | /fd902016… |
| Tool atisa-transfer / transfer-human | Agents B2B | /9b04a605… |
| Tool atisa-schedule-meeting | Schedule Meeting | /447b8622… |
| end-of-call-report | End of Call | /cd37b32b… |
En orden de impacto sobre la estabilidad.
Rediseñar el emparejamiento de llamadas: usar el call.id del webhook, no buscar entre 15.Mayor impacto
Eliminar los Wait fijos; resolver sincronización con confirmaciones reales o idempotencia.
Unificar MN/USN en una sola rama parametrizada.
Congelar una sola versión de la API de Zoho y un solo modelo de IA por tarea.
Evaluar si 239 nodos en 4 workflows acoplados por estado compartido justifican seguir en n8n o conviene migrar la lógica a código.
Antes de cualquier decisión técnica hay que resolver de quién es cada parte del sistema.
El endpoint api.tendencia.ai/webhooks/vapi y las credenciales de Twilio / Vapi están atadas a la cuenta del proveedor (TendencIA / M Consulting). Confirmar qué infraestructura es de ATISA y cuál del proveedor, porque eso define si pueden operar el sistema sin ellos.
Primero, lo que cuesta el stack actual hoy. Aparte, dos propuestas de stack para comparar si conviene internalizarlo. Costo por minuto de llamada, estimado a junio de 2026. Todas las cifras en dólares (USD).
| Concepto | Stack actual · hoy | Propuesta 1 · voz premium gestionada | Propuesta 2 · interno, costo mínimo |
|---|---|---|---|
| Operación | Operado por el proveedor (TendencIA / M Consulting) | Gestionado: ATISA contrata, no opera infra | Interno: lo construye y mantiene el ingeniero de ATISA |
| Plataforma de voz | Vapi $0.05/min | ElevenLabs Conversational AI $0.08/minplan Business $1,320/mes incluye 12,375 min | Pipecat / LiveKit orquestación propia, sin fee de plataforma |
| STT · LLM · TTS en llamada | Gestionado dentro de Vapi ~$0.10–0.18/minla ingeniería inversa no documenta qué proveedor de voz usa; estimación típica de Vapi | STT y TTS incluidos en el agente; LLM (GPT-4o) passthrough de tokens | Deepgram STT $0.0043 + GPT-4o-mini ~$0.01 + TTS Cartesia / Aura ~$0.015 por minuto |
| Telefonía | Twilio ~$0.013/min2 cuentas: México y EE.UU. | Twilio ~$0.013/min | Twilio ~$0.013/min |
| IA post-llamada | Multi-modelo (Gemini + GPT-4.1 + GPT-4o + o4-mini + Claude 3.7) ~$0.02–0.05 por llamada | Aplica igual si se replica ~$0.02–0.05 por llamada | opcional, fuera del pipeline base |
| Total por minuto | ~$0.17–0.23/min | ~$0.10–0.20/min | ~$0.04–0.08/min |
| Notas | Infra fija aparte: n8n + Supabase + licencias Zoho. No incluye el markup del proveedor. | La mejor calidad de voz percibida. Sigue requiriendo LLM, telefonía y la integración al CRM. Sube la calidad, no resuelve la operación. | El más barato por minuto. Alternativa más simple: OpenAI Realtime ~$0.10–0.18/min. Con open-source (Whisper + Kokoro) baja más, pero exige GPU e infra propia. |
| Costo mensual aprox. | ~$107vs ~$400 USD/mes realeslo que cobra hoy el proveedor externo por una bolsa de minutos. La diferencia es el markup. | ~$80 | ~$32 |
Hoy: cerca de $0.17 a $0.23 por minuto estimado, más infra fija y el markup del proveedor que no vemos. La propuesta 1 sube la calidad de voz pero no resuelve la operación ni el CRM. La propuesta 2 es la más barata por minuto si ATISA internaliza, a cambio de tiempo de ingeniería. No hay opción mágica: la decisión es calidad de voz contra costo recurrente contra control.
Estimaciones jun 2026 con base en pricing público de Vapi, ElevenLabs Agents, OpenAI Realtime API, Deepgram y Twilio, más comparativos de costo por minuto (Ringlyn / Retell, 2026). El costo real del stack actual es la factura del proveedor, no esta suma de partes.
Construido sobre 1350 leads reales del CRM, leído en tres ejes: tiempo, costo y calidad.
Datos reales del CRM · 1350 leadsDe 1350 leads recibidos entre el 4 de enero y el 22 de junio de 2026, 739 entraron fuera del horario L a V de 8:00 a 18:00. Hoy esos contactos esperan hasta el siguiente día hábil para recibir respuesta.
Los leads entran a toda hora. Más de la mitad cae fuera de horario, con fuerte actividad de tarde y noche (18:00 a 23:00), cuando el call center ya cerró.
739 leads (55%) entran fuera de horario y hoy esperan al siguiente día hábil. El voicebot responde en segundos, de noche y en fin de semana. Speed to lead.
93% de los leads son Facebook Ads, presupuesto pagado: el que no se contesta a tiempo se enfría y se desperdicia. Cubrir noche y fin de semana con personal exige turnos; el voicebot lo hace a $0.06 a $0.20 USD por minuto (ver Análisis financiero).
Sigue un guion definido: hace las mismas preguntas de calificación y enruta por división igual en cada contacto, sin improvisar ni saltarse pasos. Un asesor humano varía, por cansancio o prisa; el bot sigue la estructura siempre, sin que se escape ningún lead, ni los 739 fuera de horario ni los 137 en seguimiento. Aparte va la naturalidad de la voz, qué tan humano suena: eso depende del stack, y el actual es experimental.
Son leads pagados. En medios de pago la velocidad de respuesta define si el lead convierte o se enfría. El 58% de los leads de Facebook Ads cae fuera de horario: hoy uno que entra a las 21:00 espera hasta el siguiente día hábil.
El 93% de los leads entra por un formulario de Facebook: llegan como texto, con nombre y teléfono, no como llamada. La primera respuesta natural es por WhatsApp o Messenger, por donde el lead ya está. Voz y chat no son lo mismo y no compiten; cada uno gana en su terreno.
| Dimensión | Chatbot · WhatsApp / Messenger | Voicebot · llamada |
|---|---|---|
| Cómo contacta | Mensaje de texto, asíncrono | Llamada telefónica, en vivo |
| Encaja con el lead de Facebook | GanaSí, responde por donde llegó | Parcial: hay que marcarle a un número |
| Fricción para el lead | GanaBaja: contesta cuando puede | Alta: contestar a un número desconocido, a veces de noche |
| Velocidad de calificación | Varias idas y vueltas | GanaUna llamada resuelve |
| Costo aprox. | Gana≈ $0.02 a $0.06 USD por conversación ~10 mensajes: en WhatsApp se cobra el primero (plantilla) y las respuestas dentro de la ventana de 24h son gratis, más el LLM. México | $0.24 a $0.50 USD por llamada 4 min, ver Análisis financiero |
| Mejor para | Primer toque, calificación masiva, leads tibios, fuera de horario | Leads calientes, alto valor (Comercial / Industrial), urgencia |
| Despliegue | GanaMás simple y rápido | Más complejo: el stack de voz actual ya batalla |
| Rastro | GanaQueda por escrito | Requiere transcripción |
| Ventajas | 5 de 6 comparables | 1 de 6 comparables |
WhatsApp o Messenger, respuesta automática en cuanto llega el formulario, 24/7. Califica y agenda. Es el canal nativo del lead, el más barato y el de menor fricción. Cubre el 55% que entra fuera de horario sin un solo turno extra.
Para leads calientes o de alto valor (Comercial, Industrial), o cuando el lead pide llamada. La voz convierte mejor donde el caso es complejo o urgente. No reemplaza al chat: lo cierra.
No es uno u otro. Chat como puerta de entrada ahora, voz como cierre selectivo después. Empezar simple y sumar voz donde pague. De paso, el stack de voz actual es inestable (ver Ingeniería inversa): arrancar con chat baja el riesgo y el costo mientras se estabiliza o se decide la voz.
Costos de chat: WhatsApp Business Platform (Meta), México, jun 2026, estimando una conversación de ~10 mensajes (1 plantilla cobrada + respuestas gratis en la ventana de 24h + LLM). Speed to lead: contactar en menos de 5 min multiplica por 9 la probabilidad de convertir. Cifras de referencia, no facturas.
El voicebot no cierra la venta solo. Califica, responde rápido y mantiene caliente al lead hasta que el asesor entra en horario. Industrial casi no aplica. No es magia: es cobertura y velocidad.
Base: 1350 leads y contactos del CRM, enero a junio de 2026. Horario de oficina considerado L a V 8:00 a 18:00. Cifras calculadas sobre los campos Created Time y Lead Source del export.