Automatización con IA

Cualificación de Leads con ChatGPT

Puntúa y categoriza leads entrantes automáticamente con n8n + GPT-4

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

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.