El problema de vender por WhatsApp no es la falta de mensajes: es que llegan todos mezclados. El que quiere comprar hoy, el que pregunta el precio y desaparece, y el que se ha equivocado de número entran por el mismo sitio y con el mismo aspecto.
Esta guía monta un sistema que lee cada conversación, la puntúa y te dice a quién llamar primero.
Qué significa «calificar» de verdad
Antes de programar nada hay que decidir qué es un lead bueno para tu negocio. Si te saltas este paso, acabarás con un sistema que puntúa por entusiasmo, y el entusiasmo no paga facturas.
El marco clásico sigue funcionando: presupuesto, autoridad, necesidad y plazo. Traducido a señales que aparecen de verdad en WhatsApp:
| Señal | Qué indica | Peso | |—|—|—| | Pregunta por disponibilidad o fechas concretas | Plazo real | Alto | | Menciona un presupuesto o pregunta por formas de pago | Presupuesto | Alto | | Habla en plural («lo tenemos que ver») | Hay más decisores | Medio | | Describe un problema concreto y con detalle | Necesidad real | Alto | | Solo pregunta «¿precio?» y nada más | Comparando, poca intención | Bajo | | Escribe fuera de tu zona de servicio | Descartar | — |
Escribe tu propia tabla antes de seguir. Diez minutos aquí valen más que el resto de la guía.
La arquitectura
« WhatsApp → Webhook → guardar mensaje ↓ ¿conversación inactiva 10 min? ↓ Claude analiza el hilo completo ↓ {puntuación, motivo, siguiente paso, datos} ↓ CRM / Sheets + aviso al comercial «
El detalle importante es cuándo se analiza. Calificar en cada mensaje es caro y además da malos resultados: el primer mensaje suele ser «hola». Espera a que la conversación se enfríe unos minutos y analiza el hilo entero de una vez.
El prompt de calificación
Aquí está el núcleo. La clave es pedir salida estructurada y, sobre todo, exigir que cite la frase del cliente que justifica cada juicio. Eso reduce drásticamente las puntuaciones inventadas.
«` Analiza esta conversación de WhatsApp de una [tipo de negocio] y califica el lead.
Devuelve SOLO un JSON con esta forma:
{ "puntuacion": <0-100>, "temperatura": "caliente" | "templado" | "frio" | "descartar", "motivo": "<una frase>", "evidencia": ["<cita literal del cliente>", …], "presupuesto_mencionado": <número o null>, "plazo": "<lo que haya dicho, o null>", "servicio_interes": "<cuál, o null>", "siguiente_paso": "<acción concreta para el comercial>", "datos_faltantes": ["<qué no sabemos aún>"] }
CRITERIOS
- 80-100 (caliente): pide fecha, cita o presupuesto formal.
- 50-79 (templado): problema concreto pero sin plazo ni presupuesto.
- 20-49 (frío): curiosidad, pregunta suelta de precio.
- 0-19 (descartar): fuera de zona, spam, error.
REGLAS
- Cada punto por encima de 50 debe apoyarse en una cita real
del array "evidencia". Sin cita, no subas la puntuación.
- No infieras presupuesto si no lo han dicho: pon null.
- "siguiente_paso" debe ser accionable hoy, no genérico.
CONVERSACIÓN: {{historial}} «`
Dos decisiones de diseño que marcan la diferencia:
La evidencia obligatoria. Sin ella, el modelo tiende a premiar la amabilidad. Con ella, si no hay frase que lo respalde, la puntuación no sube.
datos_faltantes. Es el campo más útil y el que nadie pone: le dice al comercial qué preguntar en el primer contacto, en vez de empezar de cero.
El código
«`js async function calificar(telefono) { const hilo = await db.obtenerConversacion(telefono); if (hilo.length < 2) return; // un «hola» no se califica
const texto = hilo .map(m => ${m.rol === "cliente" ? "Cliente" : "Nosotros"}: ${m.texto}) .join("n");
const r = await claude.messages.create({ model: "claude-sonnet-5", max_tokens: 800, system: PROMPT_CALIFICACION, messages: [{ role: "user", content: texto }], });
let datos; try { datos = JSON.parse(extraerJSON(r.content[0].text)); } catch { await registrarError(telefono, r.content[0].text); return; // nunca revientes por un JSON malo }
await db.guardarCalificacion(telefono, datos);
if (datos.puntuacion >= 80) { await avisarComercial(telefono, datos); } } «`
Fíjate en el try/catch: el modelo puede devolver algo que no parsea. Registrar el fallo y seguir es mejor que tirar el proceso entero por un lead.
Dónde guardarlo
Si ya tienes CRM, escribe ahí. Crea campos personalizados para puntuación, temperatura y motivo, y no montes un sistema paralelo: nada mata más rápido a un CRM que tener los datos en dos sitios.
Si no tienes CRM, una hoja de cálculo es suficiente para empezar. Una fila por lead con: teléfono, fecha, puntuación, temperatura, motivo, siguiente paso, estado. Ordena por puntuación descendente y ya tienes tu lista de llamadas.
No montes una base de datos propia hasta que la hoja se te quede pequeña. Casi nunca ocurre antes de los mil leads.
El aviso al comercial
Un aviso útil cabe en cinco líneas y se lee en el móvil:
« 🔥 Lead caliente (87) — +34 6XX XXX XXX Motivo: pide cita para la semana que viene, presupuesto 3.000 € Cita: «¿podríais el martes o el miércoles?» Siguiente paso: llamar hoy y cerrar hora Falta saber: si decide él o con su socio «
Lo que sobra: la conversación entera, emojis de adorno y el enlace a un panel que nadie va a abrir desde el móvil.
Cómo saber si el sistema acierta
Esto es lo que casi nadie hace y sin ello vas a ciegas.
Cada semana, coge veinte leads calificados y compáralos con lo que pasó de verdad. Te interesan dos errores:
- Falsos calientes: puntuación alta que no fue a ningún lado. Suele significar que el prompt premia entusiasmo. Endurece la exigencia de evidencia.
- Falsos fríos: puntuación baja que acabó comprando. Es el error caro. Mira qué señal se perdió y añádela a los criterios.
Con tres o cuatro rondas de esto, la calificación se ajusta a tu negocio. Sin ellas, tendrás una puntuación bonita que no predice nada.
Y un número de control: tasa de conversión por tramo. Si los «calientes» no convierten bastante más que los «templados», tu sistema no está calificando, está decorando.
Cumplimiento
Estás perfilando personas de forma automatizada, así que:
- Informa en tu política de privacidad de que analizas las conversaciones para gestionar la solicitud comercial.
- Define cuánto tiempo conservas los hilos y bórralos al vencer.
- La calificación no puede tener efectos jurídicos automáticos sobre la persona. Para priorizar llamadas no hay problema; para denegar un servicio automáticamente, sí.
Errores frecuentes
Calificar mensaje a mensaje. Caro y poco fiable. Analiza el hilo cuando se enfríe.
Puntuación sin motivo. Un número solo no lo usa nadie. El motivo y la cita son lo que hace que el comercial se fíe.
No revisar nunca los criterios. Un negocio que cambia de precios o de zona necesita cambiar la tabla de señales. Revísala cada trimestre.
Automatizar el descarte. Marcar como «descartar» está bien; borrar o bloquear automáticamente, no. El sistema se equivoca y ahí se pierden ventas de forma invisible.
¿Quieres aplicar esto en tu empresa?
En ITfluence implementamos agentes de IA, automatizaciones y estrategias de contenido a medida. Pasamos de la guía a los resultados.
