Puntaje de leads con IA para negocios locales: una rúbrica que aguanta datos reales
«Puntúa este lead de 0 a 100» no es una rúbrica, es un deseo. Un puntaje sirve solo si dos corridas dan el mismo número para el mismo negocio, si puedes explicarle ese número a un cliente y si el corte que eliges corresponde a algo que de verdad puedes vender. Esta es la rúbrica que entregamos y cómo afinarla sin adivinar.
Regla cero: el modelo puntúa, el código decide qué merece ser puntuado
Todo lo que se pueda calcular con los datos crudos se calcula en código: más barato, determinista, auditable y gratis. Lo que queda para el modelo es criterio: si el rubro vale una propuesta, cuál es el dolor comercial más probable, cómo abriría la conversación un consultor.
En la práctica el flujo calcula primero un prior barato (sin web, sitio solo móvil, pocas reseñas,
cerrado permanentemente) y se lo pasa al modelo como contexto con un nombre tipo score_previo.
El modelo lo ve, puede discrepar, y el número final es el suyo. Dos números, dos propósitos: el prior te
dice dónde mirar, el puntaje te dice a quién llamar.
La rúbrica: seis señales positivas y un veto
Los pesos son la parte que los clientes discuten, así que conviene tenerlos escritos y visibles en vez de enterrados en un prompt. Los nuestros suman exactamente 100:
| Señal | Peso | Por qué predice una venta |
|---|---|---|
| Sin sitio web, o el sitio devuelve error | +35 | La brecha más vendible del B2B local. Es visible, es binaria y tiene precio fijo. |
| Menos de 30 reseñas en Google | +15 | Poco volumen de reseñas correlaciona con baja madurez digital y con un dueño que todavía contesta el teléfono. |
| Calificación entre 3,0 y 4,5 | +10 | Suficiente para estar operando, insuficiente para que el trabajo de reputación no tenga upside medible. |
| Teléfono público disponible | +15 | Un lead al que no puedes llamar es una fila, no un lead. Es además el campo que mueve la SKU del mapa. |
| El negocio está operativo | +15 | Cerrado permanente o temporalmente es una llamada perdida y una forma rápida de quemar la lista. |
| Rubro con alto valor por cliente | +10 | Salud, dental, legal, inmobiliaria, contabilidad, construcción: tickets que absorben una mensualidad. |
| Parece cadena, franquicia o sucursal de empresa nacional | -20 | Veto. La decisión se toma en la casa matriz, no con quien contesta el teléfono. |
Dos consecuencias que conviene decir en voz alta. Primero, las señales positivas ya suman 100, así que una franquicia con todo lo demás presente cae en 80: el veto tiene que ser lo bastante fuerte para importar, y el recorte a 0–100 debe ser explícito o vas a tener 115 en la hoja. Segundo, los pesos codifican un modelo de negocio: si vendes gestión de reputación y no webs, el +35 va en reseñas y la web baja a +10. La rúbrica no es universal; es una afirmación sobre lo que puedes entregar.
Haz que el modelo devuelva estructura, no prosa
La salida es un objeto JSON fijo, sin claves extra. No es gusto estético: el nodo siguiente necesita leer campos, y cada frase en texto libre es un campo que vas a terminar parseando con una expresión regular a las dos de la mañana.
{
"id": "copia exacta del id recibido, sin modificar",
"score": 0,
"motivo": "una frase, máx. 20 palabras, que justifique el puntaje",
"dolor_principal": "el dolor comercial más probable, máx. 12 palabras",
"servicio_sugerido": "uno de: web, seo_local, automatizacion, reputacion, crm",
"pitch": "mensaje de primer contacto, máx. 45 palabras, personalizado con el nombre del negocio"
}
El campo id sostiene todo. Las respuestas por lote vuelven desordenadas y a veces con
un item menos. El nodo que fusiona arma un diccionario placeId → negocio y descarta lo que no
puede emparejar. Si borras id del esquema de salida, todas las filas se descartan y el flujo
parece roto cuando en realidad está siendo perfectamente disciplinado.
El determinismo es un ajuste, no una esperanza
- Temperatura 0,2 (o menos para extracción). A 0,8 la misma clínica dental saca 71 el lunes y 89 el martes, y tu umbral deja de significar algo.
- Nada dinámico en el prompt de sistema. La fecha de hoy, la ciudad, la configuración: todo va al mensaje del usuario. El prompt de sistema estático es lo que gana el descuento de caché (~50x sobre la parte cacheada; medido: 512 de 660 tokens de entrada por lead vinieron de caché). Mueve una variable al prompt de sistema y el costo de entrada se multiplica.
- Un solo idioma de salida, inyectado como campo, no traduciendo el prompt.
Calibra minScore con los descartes, no con la intuición
Todo umbral produce dos listas: lo que pasó y lo que no. Casi todas las plantillas tiran la segunda. Guárdala — manda los descartes a un nodo no-op para que la ejecución muestre el conteo — y revísalos:
- ¿Nada por encima de 60? Tu nicho está saturado de negocios que ya tienen web. Eso es información sobre el mercado, no sobre el modelo: cambia de nicho antes de cambiar los pesos.
- ¿Todo por encima de 90? El modelo está de acuerdo con el prior en lugar de juzgar. Baja la temperatura primero y después reescribe la rúbrica con lenguaje más duro («sé estricto», ejemplos negativos explícitos).
- ¿Un grupo sospechoso en el mismo número exacto? Estás leyendo el prior, no el puntaje. Verifica que el prompt pida un puntaje calculado y que el nodo de fusión tome el campo del modelo.
Secuencia práctica: empieza en 60, corre una semana con datos reales y sube a 70. Subir no cuesta nada y ahorra tokens; bajar es cómo terminas con 200 filas y ninguna llamada hecha.
Qué no pedirle al modelo
- Garantías. Si el prompt dice «promete 50 pacientes nuevos al mes», el modelo lo va a escribir y tú lo vas a enviar. Nuestro prompt prohíbe promesas, precios y descuentos a propósito.
- Datos que no están en la entrada. Facturación, cantidad de empleados, stack tecnológico: si el modelo los inventa, tu pitch está mal en la primera línea y el prospecto lo sabe antes que tú.
- Una escala distinta por lead. «Puntúa este de 1 a 10 con comentarios» no se puede umbralizar. Misma rúbrica, mismas claves, misma temperatura, siempre.
La rúbrica es lo gratis; el cableado es el trabajo
El kit Starter trae esta rúbrica como un nodo de configuración que editas en un solo lugar —nicho,
ciudad, puntaje mínimo, modelo, idioma de salida— con el batching, el emparejamiento por identificador y
el try/catch del parseo ya resueltos.
Relacionado: las cinco etapas del flujo · por qué la segunda corrida no devuelve nada · todos los artículos