Ingeniería inversa · ATISA

ATISA Voicebot
por dentro

Un voicebot de calificación de leads sobre Vapi + n8n. Así está armado por dentro, y por qué se cae.

0Nodos
0Workflows
0Estados
0Servicios
Construido sobre
01 — Recorrido

El recorrido de una llamada

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.

Durante la llamada Escritura en CRM / BD Después de colgar Estado compartido (flow_step)
FronteraDurante / después de la llamada
02 — Panorama

El sistema en una frase

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

No es una sola plataforma

Hay 2 cuentas de Twilio (ATISA/"TendencIA" y "American Phone") y un endpoint propio en api.tendencia.ai. El proveedor M Consulting es TendencIA.

Los "agentes Navi" NO son IA

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.

La IA real corre después

Los modelos de lenguaje solo corren DESPUÉS de la llamada, para extraer variables y resumir.

Mezcla de modelos sin criterio

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.

03 — Stack

Stack real

Siete servicios externos, cuatro workflows de n8n, una base de estado compartida.

Voz
Vapi.ai

Eventos assistant-request y end-of-call-report.

Orquestación
n8n

4 workflows, 239 nodos. Toda la lógica vive aquí.

Base de datos
Supabase

users, call_flows, user_property_interests, zoho_updates, call_logs, properties.

CRM
Zoho

30 llamadas HTTP, versiones v2 / v2.1 / v7 / v8 mezcladas.

Telefonía
Twilio

2 cuentas: México (MN) y EE.UU. (USN).

IA post-llamada
OpenRouter + OpenAI

Extracción de variables y resúmenes tras colgar.

Endpoint propio
api.tendencia.ai

/webhooks/vapi · infraestructura del proveedor.

Nodos por workflow

78
Call Control
98
Agents B2B
42
End of Call
21
Schedule Meeting
04 — Estado

El selector de estado

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.

flow_step · selector por categoría6 valores, sin orden
Nuevo Cliente Set prompt: Recepción del primer contacto: identifica al cliente y abre el registro.
Fuera del rielTransferencia a Humano NO es un flow_step; se dispara por la tool transfer-human.
05 — Flujos

Los cuatro workflows

Cada uno se dispara por su propio webhook. Acoplados por el estado compartido en Supabase.

TriggerPOST /fd902016… · Vapi al entrar la llamada

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.

Dos "Create Lead" (Zoho v7 y v2).
Control de horario con bug conocido ("REVISAR TIEMPO").
Nodo Wait de 1s = parche de race condition.
TriggerPOST /9b04a605… · tools atisa-transfer / transfer-human

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.

Emparejamiento de llamada frágil (limit=15).
TODA la lógica duplicada MN/USN.
Modelos distintos para la misma tarea.
Si el parser no repara el JSON, se cae el flujo.
TriggerPOST /447b8622… · tool atisa-schedule-meeting

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.

Mezcla 3 versiones de la API de Zoho (v2, v2.1, v8) en un mismo flujo.
TriggerPOST /cd37b32b… · filtra end-of-call-report

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).

Tres modelos de IA distintos en un solo cierre: costo, latencia y puntos de falla ×3.
06 — Diagnóstico

Diagnóstico de inestabilidad

Hallazgos de falla del sistema, rankeados por severidad.

8.1Crítico

Emparejamiento de llamadas frágil

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.

Fix: usar el call.id que Vapi ya manda en el webhook.
8.2Alto

Parches de Wait fijos

5 nodos (1s ×4, 3s) para "esperar" sincronizaciones; no garantizan nada → síntoma de race condition no resuelta.

8.3Alto

Lógica duplicada MN/USN

Ramas copy-paste; los arreglos se aplican en una y se olvidan en la otra → comportamiento inconsistente según el número.

8.4Alto

Versiones de la API de Zoho mezcladas

v2 / v2.1 / v7 / v8 conviviendo. Al deprecarse una, fallan solo algunos nodos → fallos intermitentes difíciles de diagnosticar.

8.5Medio

Parsers de IA "auto-reparables"

Si la reparación falla, se cae el flujo; modelos distintos varían el formato y agravan esto.

8.6Medio

Estado mutable sin transacciones

El flow_step se lee, procesa y reescribe; dos eventos casi simultáneos se pisan → cliente en estado incorrecto. Sin locking ni idempotencia real.

8.7Medio

Indecisión técnica documentada

"Probar con Gemini", "Probar con GPT 4.1 o o4 mini", "REVISAR TIEMPO" → se entregó experimental.

07 — Disparadores

Mapa de disparadores

Qué evento dispara cada workflow y por cuál webhook entra.

DisparadorWorkflowWebhook
Llamada entrante (assistant-request)Call Control/fd902016…
Tool atisa-transfer / transfer-humanAgents B2B/9b04a605…
Tool atisa-schedule-meetingSchedule Meeting/447b8622…
end-of-call-reportEnd of Call/cd37b32b…
08 — Recomendaciones

Recomendaciones

En orden de impacto sobre la estabilidad.

1

Rediseñar el emparejamiento de llamadas: usar el call.id del webhook, no buscar entre 15.Mayor impacto

2

Eliminar los Wait fijos; resolver sincronización con confirmaciones reales o idempotencia.

3

Unificar MN/USN en una sola rama parametrizada.

4

Congelar una sola versión de la API de Zoho y un solo modelo de IA por tarea.

5

Evaluar si 239 nodos en 4 workflows acoplados por estado compartido justifican seguir en n8n o conviene migrar la lógica a código.

Cierre — dependencia del proveedor

Quién controla la infraestructura

Antes de cualquier decisión técnica hay que resolver de quién es cada parte del sistema.

Dependencia

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.

Análisis financiero

Cuánto cuesta operar el voicebot

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).

Supuestos del cálculo
Calculadora de supuestos estimación ajustable
Llamadas IA / mes 134 leads × % atendido
Minutos / mes 535 llamadas × minutos
Costo por minuto, 3 escenarios
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
Cómo leerlo
Lo que cuesta hoy es opaco. ATISA paga el precio gestionado del proveedor, con un markup que no conocemos. La cifra de arriba es una suma estimada de partes, no la factura real. Acción: pedir la factura del proveedor para saber el costo exacto de hoy.
El stack interno es barato por minuto, caro en ingeniería. El menor costo recurrente, a cambio de tiempo de construcción y mantenimiento. ATISA tiene un ingeniero con buen nivel de IA que lo haría.
Lectura

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.

Análisis de valor

Dónde aporta valor: tiempo, costo y calidad

Construido sobre 1350 leads reales del CRM, leído en tres ejes: tiempo, costo y calidad.

Datos reales del CRM · 1350 leads
55%
de los leads llegan con el call center cerrado

De 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.

Volumen de leads por hora del día

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ó.

Fuera de horario (0 a 7 h y 18 a 23 h) Horario call center (8 a 17 h)
Tiempo

Atiende al instante, 24/7

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.

Costo

Cubre el horario muerto sin turnos extra

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).

Calidad

Trabaja bajo una estructura fija

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.

De dónde vienen los leads
Facebook Ads 93% · 1259

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.

Dónde impacta más, por división
Venta de inmuebles60% del volumen
Máximo impacto
Leads
813
Fuera de horario
61%
Comercial37% del volumen
Alto impacto
Leads
495
Fuera de horario
49%
Industrial3% del volumen
No priorizar voz aquí
Leads
42
Fuera de horario
12%
Decisión de canal

Voz vs chat: ¿por dónde empezar?

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 contactaMensaje de texto, asíncronoLlamada telefónica, en vivo
Encaja con el lead de FacebookGanaSí, responde por donde llegóParcial: hay que marcarle a un número
Fricción para el leadGanaBaja: contesta cuando puedeAlta: contestar a un número desconocido, a veces de noche
Velocidad de calificaciónVarias idas y vueltasGanaUna 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 paraPrimer toque, calificación masiva, leads tibios, fuera de horarioLeads calientes, alto valor (Comercial / Industrial), urgencia
DespliegueGanaMás simple y rápidoMás complejo: el stack de voz actual ya batalla
RastroGanaQueda por escritoRequiere transcripción
Ventajas 5 de 6 comparables 1 de 6 comparables
1

Empezar por el chatbot

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.

2

Sumar el voicebot como escalamiento

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.

La secuencia

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 cierre

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.