Automatización
Captador de Leads
Multicanal con IA
Cómo un chatbot con IA captura leads desde WhatsApp, web y chat interno — extrae datos, genera cotizaciones y hace followup automático. Caso real en producción.
3 canales → 1 pipeline → cotización automática → followup en 3 etapas
Contexto
El Problema: 3 Canales, 0 Estructura
Una empresa de arriendo de equipamiento pesado (excavadoras, camiones tolva, cama baja) recibe consultas por WhatsApp Business, un chat web y operadores internos. Cada canal tiene su propio formato de mensaje, distinto nivel de información del cliente, y ninguno se conecta con el otro.
El resultado: leads que se pierden entre canales, cotizaciones que tardan horas en generarse manualmente, y seguimientos que dependen de la memoria del operador. Un lead que escribe a las 22:00 no recibe respuesta hasta las 09:00 del día siguiente — si es que alguien lo ve.
Tiempo promedio de respuesta en PYMEs
Leads perdidos si no respondes en 5 min
Followups sistemáticos antes del sistema
Método
Arquitectura: 3 Workflows Orquestados
El sistema se compone de 3 workflows en n8n que se invocan entre sí, una base de datos relacional y una Knowledge Base configurable.
| Componente | Tecnología | Función |
|---|---|---|
| Orquestación | n8n | 3 workflows: Multichannel (A), Quotes (B), Followups (D) |
| IA Conversacional | OpenAI API | Dual: AI1 (conversación) + AI2 (extracción de entidades) |
| Base de Datos | MySQL | Leads, messages, events, jobs, knowledge base |
| Meta Graph API | Webhook entrante + envío de respuestas | |
| Cotizaciones | PHP + PDF | API que resuelve precios desde KB y genera PDF |
| Admin | PHP + Tailwind | Panel self-service: leads, KB, precios, usuarios |
Flujo de un Lead (de punta a punta)
Webhook recibe
WhatsApp, web o chat interno → Input Envelope normaliza el payload
Resolve Lead
Busca por phone/session_id. Si no existe, crea nuevo con status TEMP
AI1 — Conversación
Genera respuesta natural con contexto de últimos 12 mensajes
AI2 — Extracción
Nombre, empresa, teléfono, servicio, fecha, cantidad → structured data
¿Datos mínimos?
Switch: si min_ok=true → genera cotización. Si no → sigue conversando
Quote → PDF
Resuelve precios desde KB, genera PDF, envía al canal de origen
Evidencia
Los Patrones que Hacen la Diferencia
IA Dual: Conversar ≠ Extraer
La mayoría de chatbots usan un solo prompt para todo. Este sistema separa dos funciones cognitivas en dos llamadas independientes a la API:
Genera la respuesta natural
Recibe los últimos 12 mensajes del lead + contexto de la KB. Produce una respuesta empática y útil. Si faltan datos, pregunta. Si hay ambigüedad, aclara.
Extrae entidades estructuradas
Del mismo mensaje extrae: nombre, empresa, email, teléfono, servicio, fecha, cantidad, distancia. Output JSON. Calcula min_ok cuando los campos mínimos están completos.
¿Por qué separar?
Un solo prompt que conversa Y extrae tiende a "contaminar" ambas salidas. Al separar, la conversación es más natural y la extracción más precisa. El costo de una llamada extra a la API es marginal vs. la calidad del dato.
Policy-as-Data: Reglas de Negocio en la BD
Las reglas de negocio no están hardcodeadas en el prompt ni en el código. Viven en una tabla knowledge con 4 tipos de entidad:
Catálogo de equipos con tarifa UF/hora y keywords de búsqueda
Reglas de negocio: "martillo requiere excavadora", "RESPEL es servicio integral"
Reglas especiales de precio: movilización, descuentos por volumen
Variables administrativas: valor UF, costo combustible/km, tarifa operador
"knowledge_id": "POL-ACC-001",
"entity_type": "Policy",
"canonical_name": "Accesorios requieren equipo base",
"rule": "Martillo y cizalla son ACCESORIOS que se instalan
en una excavadora. NO funcionan solos. Si el cliente
pide solo martillo, SIEMPRE preguntar si tiene
excavadora propia o si necesita arrendar una."
Ventaja clave
El operador del negocio actualiza precios y políticas desde un panel admin — sin tocar código, sin redeploy, sin llamar al desarrollador. Los cambios se aplican en la próxima conversación.
Followup con Job Queue: 3 Etapas, 72h
Cuando un lead recibe cotización pero no responde, el sistema activa una cadena de seguimiento automático con stored procedures:
Recordatorio
72h sin respuesta → email con resumen de cotización
Seguimiento
+72h → segundo contacto con datos del lead
Cierre
+72h → último intento antes de marcar como frío
-- Cada 10 min: buscar jobs pendientes
SELECT * FROM v_jobs_pending
WHERE job_type = 'FOLLOWUP_CLIENT'
AND due_at <= NOW();
-- Reservar job (evita doble ejecución)
CALL sp_claim_job(job_id, 'n8n');
-- Después de enviar email exitosamente
CALL sp_complete_job(job_id, 'DONE');
CALL sp_create_next_followup(lead_id);
-- ^ Crea etapa siguiente con due_at +72h
Resultado
Qué Cambia con el Sistema
Antes vs. después de implementar el captador multicanal.
Tiempo de primera respuesta
Canales integrados
Cotización
Seguimiento
Lifecycle del Lead
Riesgos
Limitaciones y Trade-offs
No todo se resolvió en v1. Estos son los trade-offs conocidos.
Cotización única por lead
V1 genera una sola cotización. Si el cliente pide cambios, el bot no puede modificar el PDF ya generado. Solución en roadmap: formato editable + regeneración.
Cálculo de distancia
La movilización (cama baja) depende de distancia, pero la lógica de cálculo km es básica. Sin integración con API de mapas aún.
Loops conversacionales
Cuando la IA no encuentra un dato en el contexto, puede entrar en loop repitiendo la misma pregunta. Mitigado con límite de reintentos.
Costo de API dual
Dos llamadas a OpenAI por mensaje. En volumen alto, el costo escala. Trade-off: precisión de extracción vs. costo por interacción.
Implementación
Panel Admin: Self-Service
El operador del negocio gestiona sin tocar código.
Leads
Ver leads capturados, conversaciones completas, historial de eventos y status del pipeline.
Cotizaciones
PDFs generados, números de cotización (COT-YYYYMMDD-NNNN), modificación post-generación.
Knowledge Base
CRUD de equipos, políticas y reglas de precio. Filtro por tipo de entidad. Activar/desactivar items.
Configuración
Valor UF, costo combustible/km, tarifa operador/día, tarifa cama baja, mínimo horas arriendo.
Usuarios
Gestión de acceso al panel. Roles y permisos por módulo.
Métricas
Leads por canal, tasa de cotización, tasa de conversión, tiempo promedio de respuesta.
uf_value 39000 # Valor UF en CLP
fuel_cost_per_km 733 # Costo combustible CLP/km
operator_daily 83636 # Tarifa diaria operador CLP
cama_baja_daily 300000 # Tarifa diaria cama baja CLP
min_rental_hours 180 # Mínimo horas arriendo pesado
Lectura relacionada
Captación y Derivación de Leads
Meta Ads + WhatsApp + calificación automática + derivación al vendedor correcto.
Ver solución →Integración de Sistemas
n8n, APIs, conectores y automatización de procesos entre sistemas.
Ver solución →Cómo Leer Respaldos de WhatsApp con IA
Otra forma de extraer inteligencia desde conversaciones de WhatsApp — esta vez desde respaldos locales.
Ver tutorial →¿Necesitas un sistema de captura como este?
Analizamos tus canales de entrada, diseñamos el pipeline y lo dejamos operando con IA, followup automático y panel de gestión.