Flujo 04: Cualificación de Leads con IA
El problema
El equipo comercial recibe 40-60 leads semanales desde formularios de contacto. Sin filtro previo, dedican el mismo tiempo a un director general de una empresa de 200 empleados que a un estudiante que hace una encuesta. El 70% de las llamadas de cualificación terminan en "no es el perfil adecuado". Este flujo puntúa automáticamente cada lead del 1 al 10 antes de que llegue al comercial, ahorrando 3-4 horas semanales de llamadas improductivas.
Herramientas necesarias
| Nodo n8n | Función |
|---|---|
| Webhook | Recibe los datos del formulario en tiempo real |
| OpenAI | Puntúa el lead del 1-10 y extrae señales de calidad |
| IF | Bifurca el flujo según si la puntuación es ≥ 7 |
| Airtable | Guarda leads cualificados (score ≥ 7) con su análisis |
| Slack | Alerta al equipo comercial de leads calientes |
| Airtable | Guarda leads fríos (score < 7) en lista de nurturing |
Servicios externos:
- API Key de OpenAI (platform.openai.com/api-keys)
- Cuenta Airtable con una base de datos de leads
- Workspace de Slack con un canal
#leads-calientes
Configuración paso a paso
Nodo 1: Webhook
Añade el nodo Webhook:
- HTTP Method: POST
- Path:
leads/nuevo - Authentication: Header Auth (crea un secreto y configúralo también en tu formulario)
- Response Mode: Immediately (responde 200 OK al instante, procesa en paralelo)
URL resultante: https://tu-n8n.com/webhook/leads/nuevo
Esta URL se configura en tu formulario de contacto (Typeform, Tally, HubSpot Forms, Google Forms vía Apps Script) como endpoint de envío.
Payload de ejemplo que llega al webhook:
{
"nombre": "Marta García",
"email": "marta@empresa-tech.com",
"empresa": "TechSolutions SL",
"cargo": "Directora de Operaciones",
"empleados": "150-500",
"presupuesto": ">10000",
"problema": "Necesitamos automatizar el proceso de onboarding de clientes, ahora manual y tardamos 3 días",
"urgencia": "Este trimestre",
"fuente": "LinkedIn Ads"
}
Nodo 2: OpenAI — Puntuar el lead
Añade el nodo OpenAI y configura:
- Resource: Chat
- Operation: Message Model
- Model:
gpt-4o - Temperature: 0
- Response Format: JSON Object (activa esta opción si está disponible en tu versión de n8n)
- System Message:
Eres el sistema de cualificación de leads de [EMPRESA].
Tu perfil de cliente ideal (ICP) es:
- Empresa B2B con 50-1000 empleados
- Sectores: tecnología, servicios, consultoría, salud
- Presupuesto de software: >5.000€/año
- Decisores: C-level, directores o responsables de área
- Problema real y urgente, no solo curiosidad
Responde ÚNICAMENTE con un JSON válido. Nunca inventes datos.
Si un campo no se puede determinar, usa null.
- User Message (expresión):
=`Cualifica este lead:
Nombre: ${$json.nombre}
Empresa: ${$json.empresa}
Cargo: ${$json.cargo}
Empleados: ${$json.empleados}
Presupuesto declarado: ${$json.presupuesto}
Problema descrito: ${$json.problema}
Urgencia: ${$json.urgencia}
Fuente: ${$json.fuente}
Devuelve este JSON:
{
"puntuacion": número del 1 al 10,
"categoria": "caliente" si >=7, "tibio" si 4-6, "frio" si <=3,
"razon": "frase de máximo 20 palabras explicando la puntuación",
"fit_empresa": "alto|medio|bajo",
"fit_cargo": "decisor|influenciador|usuario|desconocido",
"siguiente_accion": "llamar_hoy|email_seguimiento|nurturing|descartar",
"resumen_problema": "el problema del lead en 15 palabras máximo"
}
`
Nodo 3: IF — Bifurcar por puntuación
Añade el nodo IF:
- Condition:
- Value 1:
={{ JSON.parse($json.message.content).puntuacion }} - Operation:
Larger or Equal - Value 2:
7
- Value 1:
Rama true → leads cualificados (puntuación ≥ 7) Rama false → leads fríos (puntuación < 7)
Nodo 4a: Airtable — Guardar lead cualificado (rama true)
Añade el nodo Airtable en la rama true:
- Operation: Create Record
- Table:
Leads_Cualificados - Fields:
Nombre:={{ $('Webhook').item.json.nombre }}Email:={{ $('Webhook').item.json.email }}Empresa:={{ $('Webhook').item.json.empresa }}Cargo:={{ $('Webhook').item.json.cargo }}Puntuacion_IA:={{ JSON.parse($('OpenAI').item.json.message.content).puntuacion }}Categoria:={{ JSON.parse($('OpenAI').item.json.message.content).categoria }}Siguiente_Accion:={{ JSON.parse($('OpenAI').item.json.message.content).siguiente_accion }}Razon_Score:={{ JSON.parse($('OpenAI').item.json.message.content).razon }}Fecha_Entrada:={{ $now.toISO() }}Estado:Nuevo
Nodo 4b: Slack — Alertar leads calientes (rama true)
Conecta en serie después del nodo 4a. Añade el nodo Slack:
- Operation: Send a Message
- Channel:
#leads-calientes - Message Type: Block (para mejor formato) o Text
- Text (expresión):
=`🔥 *LEAD CALIENTE — ${JSON.parse($('OpenAI').item.json.message.content).puntuacion}/10*
*${$('Webhook').item.json.nombre}* — ${$('Webhook').item.json.cargo} en *${$('Webhook').item.json.empresa}*
📧 ${$('Webhook').item.json.email}
*Por qué puntúa alto:* ${JSON.parse($('OpenAI').item.json.message.content).razon}
*Acción:* ${JSON.parse($('OpenAI').item.json.message.content).siguiente_accion}
*Problema:* ${JSON.parse($('OpenAI').item.json.message.content).resumen_problema}
→ Ver en Airtable: https://airtable.com/tubase`
Nodo 5: Airtable — Guardar lead frío (rama false)
Añade el nodo Airtable en la rama false:
- Operation: Create Record
- Table:
Leads_Nurturing - Fields: mismos que el nodo 4a, más
Lista_Nurturing: "Secuencia_inicial"
Ejemplo de prompt IA
Cualifica este lead:
Nombre: Marta García
Empresa: TechSolutions SL
Cargo: Directora de Operaciones
Empleados: 150-500
Presupuesto: >10000€
Problema: Onboarding manual de clientes, tardamos 3 días
Urgencia: Este trimestre
Fuente: LinkedIn Ads
Respuesta de GPT-4o:
{
"puntuacion": 9,
"categoria": "caliente",
"razon": "Decisora con presupuesto claro, problema específico urgente en empresa grande",
"fit_empresa": "alto",
"fit_cargo": "decisor",
"siguiente_accion": "llamar_hoy",
"resumen_problema": "Proceso de onboarding manual que tarda 3 días en automatizar"
}
Ahorro estimado
| Tarea | Antes | Con automatización |
|---|---|---|
| Revisar 50 leads manualmente | 1,5 h/semana | 0 min |
| Llamadas de cualificación a leads no aptos | 3 h/semana | 0 min |
| Priorizar y distribuir leads | 30 min/semana | 0 min |
| Total semanal | 5 h/semana | ~20 min (revisión Airtable) |
Ahorro neto: ~4,7 horas/semana. El equipo comercial solo llama a leads que ya han sido puntuados como ≥ 7. Tasa de conversión de llamada a reunión: mejora del 40% al eliminar llamadas improductivas.