Quinto artículo de la serie sobre lead nurturing y primero de la línea de fundamentos técnicos. En los cuatro anteriores desmontamos el problema: el coste real de perder leads, la diferencia entre MQL y SQL, el tramo invisible del ciclo de compra y por qué las herramientas de automatización se quedan cortas. Aquí empieza la respuesta técnica, y empieza por lo más incómodo de decir: en muchas scale-ups, el modelo que mejor funciona no es el más sofisticado.

Cuando en una scale-up alguien propone aplicar machine learning al nurturing, la conversación deriva casi siempre hacia el modelo más avanzado que alguien ha oído nombrar. Deep learning, redes neuronales, transformers. Se asume, sin discutirlo, que "más sofisticado es mejor". Ese prejuicio es una de las razones por las que tantos proyectos de IA para lead nurturing no llegan a producción, y de las que llegan, muchas se acaban desactivando porque nadie sabe mantenerlas. El lead scoring con machine learning no es un problema de elegir el modelo más potente: es un problema de elegir el modelo más potente que tu organización puede realmente operar. Y esa es una decisión muy distinta.

Qué es un modelo de lead scoring — y qué no es

Conviene empezar delimitando de qué hablamos, porque bajo la etiqueta "IA para lead nurturing" se venden hoy cosas muy distintas. Un scoring con machine learning es, técnicamente, un problema de clasificación binaria supervisada: a partir del comportamiento observable de un lead, un modelo estima la probabilidad de que ese lead convierta. Punto. No es un chatbot. No es un generador automático de correos. No es un asistente que responde consultas. Todo eso son herramientas útiles para otros problemas, pero no son lo que queremos decir cuando en este cluster hablamos de IA aplicada al scoring.

Esta precisión importa porque el criterio para decidir si un proyecto de scoring merece la pena es muy distinto del criterio para decidir si un chatbot merece la pena. Un modelo predictivo tiene métricas objetivas (AUC, precisión, recall), tiene datos de entrenamiento identificables (el histórico de conversiones), y tiene una arquitectura operativa concreta (un endpoint que devuelve una probabilidad). Cuando un vendedor habla de "IA para lead nurturing" sin especificar estas tres cosas, está vendiendo etiqueta, no arquitectura. Un CTO tiene que saber pedir las tres antes de comprometerse.

La tesis incómoda: la simplicidad como ventaja competitiva

En la mayoría de scale-ups sin equipo de datos propio, la regresión logística es la mejor decisión de scoring. No como paso previo antes de "los buenos modelos", sino como la elección correcta para operar. Esta afirmación va contra el instinto de casi todos los que llegan a este tema por primera vez, y sin embargo hay tres razones concretas que la sostienen, ninguna de las cuales aparece en los tutoriales genéricos que dominan la primera página de Google.

La primera es la interpretabilidad operativa. Un score que el equipo comercial no entiende es un score que el equipo comercial ignora. La regresión logística permite decir con exactitud por qué un lead concreto puntúa como puntúa: cada variable tiene un peso conocido, y ese peso se traduce directamente en una explicación que un comercial acepta. Los modelos más complejos —los árboles de gradient boosting, las redes neuronales— pueden dar predicciones más precisas, pero al coste de convertirse en cajas negras que requieren herramientas adicionales de explicabilidad y que, incluso así, generan resistencia en los equipos que tienen que actuar sobre ellas.

La segunda es el mantenimiento sin equipo especializado. Una regresión logística se reentrena en segundos con cualquier cambio en los datos, se despliega en una función serverless de veinte líneas y su comportamiento anómalo se diagnostica leyendo directamente los coeficientes. Un modelo de gradient boosting con cientos de árboles necesita monitorización activa, versionado disciplinado y alguien que sepa interpretar drift de features. Esa carga operativa es invisible al principio y se convierte en el motivo por el que el modelo termina desactivado seis meses después. La sofisticación tiene un coste que casi nunca se contabiliza cuando se toma la decisión inicial.

La tercera es el margen de mejora real. En problemas de scoring con datos tabulares moderados —cientos o pocos miles de leads históricos, que es la realidad de la inmensa mayoría de scale-ups—, la diferencia de AUC entre una regresión logística bien construida y un gradient boosting suele estar entre dos y cinco puntos porcentuales. Es una diferencia real y en algunos contextos justifica el salto, pero rara vez compensa el coste operativo que añade. Esta comparativa honesta casi nunca se hace porque el vendedor de la solución compleja no tiene incentivo para hacerla.

⚖️
La analogía

Es la diferencia entre un coche que puedes reparar en el garaje del pueblo y un Fórmula 1. El F1 va más rápido, pero necesita un equipo de mecánicos, telemetría en tiempo real y una fábrica detrás. Si vives lejos de esa fábrica, el coche del pueblo llega antes a todos los sitios porque nunca deja de arrancar.

Qué significa que un modelo "aprende" pesos

Antes de tocar código conviene fijar la intuición, porque quien la tenga clara podrá entender qué está haciendo el modelo aunque no lea Python. Una regresión logística mira cada variable de un lead —su cargo, su canal de origen, cuántas páginas ha visitado, cuántos correos ha abierto, cuántos días lleva desde el primer contacto— y aprende, a partir de los datos históricos de la empresa, cuánto influye cada una en la probabilidad de conversión. El resultado no es una fórmula que alguien haya escrito en una reunión: es una fórmula cuyos pesos emergen de observar qué combinaciones de comportamiento realmente predijeron conversión en el pasado.

El modelo combina esos pesos con los valores del lead en una suma ponderada, y luego aplica una función que transforma esa suma en una probabilidad entre cero y uno. Ese número final es el score. Un score de 0.85 significa que, según los patrones que el modelo ha aprendido de los datos históricos, este lead tiene un 85% de probabilidad de convertir. Nada de esto lo ha decidido un humano por intuición: lo ha decidido el estimador estadístico ajustando los pesos hasta minimizar el error sobre miles de casos pasados.

El dataset de Aura Commerce

Para hacer esto concreto usamos el CRM sintético de Aura Commerce, el caso ficticio de referencia en toda la serie: un ecommerce B2B que vende a retailers pequeños y medianos. El dataset contiene dos mil leads con su comportamiento durante las semanas anteriores a la decisión de compra y una tasa base de conversión del 15,8%, coherente con lo que se observa en un ecommerce B2B en su fase de crecimiento. Estas son las nueve variables que capturamos por cada lead y el aspecto que tiene el CRM.

Aura Commerce · muestra del CRM (2.000 leads)
lead_id canal_origen cargo empresa_tamano num_interacciones dias_desde_primer_contacto paginas_visitadas emails_abiertos convertido
L00001 referido responsable_compras pequena 4 11 3 3 0
L00002 email_frio responsable_compras pequena 4 27 3 5 0
L00003 paid_search analista pequena 6 33 1 0 0

Tres notas importantes sobre este esquema. La primera: es reproducible con cualquier CRM que tenga export a CSV. No necesitas una arquitectura de datos moderna para tener estos ocho campos ni para entrenar el modelo. La segunda: la variable objetivo es convertido, una columna binaria que sabemos porque miramos hacia atrás. Todo scoring predictivo funciona así — se entrena sobre pasado conocido para predecir sobre futuro desconocido. La tercera: exactamente las mismas variables comportamentales que aquí usamos para predecir conversión de leads, en un modelo de detección de churn se usarían para predecir abandono del cliente. Solo cambia la variable objetivo. El mismo tipo de arquitectura, en dos puntos distintos del ciclo de vida.

Construir el modelo de principio a fin

Todo el pipeline —carga del dataset, preparación de las variables, entrenamiento, evaluación— cabe en un único bloque de código bien comentado. La lógica es la que un CTO debería entender sin necesidad de ejecutarlo: cómo se transforman las variables categóricas en algo que un modelo pueda leer, por qué se separa el dataset en entrenamiento y evaluación, y qué métrica se usa para saber si el modelo funciona.

🐍 Python · lead scoring end-to-end
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import roc_auc_score

# 1. Cargar el CRM y separar variables predictoras de la objetivo
df = pd.read_csv('aura_commerce_leads.csv')

categoricas = ['canal_origen', 'cargo', 'empresa_tamano']
numericas   = ['num_interacciones', 'dias_desde_primer_contacto',
               'paginas_visitadas', 'emails_abiertos']

# 2. Codificar categóricas con one-hot encoding: cada categoría se convierte en columna 0/1.
#    Un modelo lineal solo entiende números, no strings.
X = pd.get_dummies(df[categoricas + numericas], columns=categoricas, drop_first=True)
y = df['convertido']

# 3. Split 70/30. El modelo aprende de train y se evalúa sobre test que nunca ha visto.
#    stratify=y mantiene la proporción de convertidos en ambos conjuntos.
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42, stratify=y
)

# 4. Escalar las numéricas para que los coeficientes sean comparables entre sí.
#    Sin esto, num_interacciones (0-15) y dias_desde_primer_contacto (0-60) tendrían pesos
#    numéricamente incomparables aunque su importancia real fuera similar.
scaler = StandardScaler()
X_train[numericas] = scaler.fit_transform(X_train[numericas])
X_test[numericas]  = scaler.transform(X_test[numericas])

# 5. Entrenar la regresión logística.
modelo = LogisticRegression(max_iter=1000, random_state=42)
modelo.fit(X_train, y_train)

# 6. Predecir probabilidades sobre el test set y calcular AUC-ROC.
#    AUC mide la capacidad de ordenar bien: dada una pareja de leads, la probabilidad
#    de que el modelo puntúe más alto al que realmente convirtió.
y_pred_proba = modelo.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, y_pred_proba)

print(f"AUC-ROC: {auc:.3f}")  # → AUC-ROC: 0.730

El AUC-ROC del modelo entrenado sobre Aura Commerce es de 0,730. Esta métrica se interpreta así: si tomas al azar un lead que convirtió y otro que no, hay un 73% de probabilidad de que el modelo puntúe más alto al que efectivamente convirtió. Un AUC de 0,5 sería el rendimiento del azar; un AUC de 1,0 sería la perfección. Un 0,73 es un modelo útil pero no espectacular, exactamente lo que cabe esperar de una regresión logística sobre datos tabulares moderados. Y aquí aparece el matiz que separa a los que entienden estos números de los que solo los citan: un AUC de 0,73 puede parecer poco, pero es la línea de base honesta contra la que hay que comparar cualquier modelo más complejo que alguien proponga. Si un gradient boosting sobre estos mismos datos da 0,76, la mejora es de tres puntos. La pregunta legítima es si esa mejora justifica el coste operativo.

Curva ROC del modelo de lead scoring Curva ROC del modelo entrenado sobre el dataset de Aura Commerce, con AUC de 0.730, comparada con la diagonal del azar. Tasa de falsos positivos (FPR) Tasa de verdaderos positivos (TPR) 0.0 0.25 0.5 0.75 1.0 0.0 0.25 0.5 0.75 1.0 Azar (AUC = 0.5) AUC = 0.730 Modelo sobre Aura Commerce

Curva ROC del modelo. El área bajo la curva mide la capacidad del modelo para separar leads que convertirán de los que no. La diagonal punteada representa el rendimiento del azar; cuanto más se aleja la curva de esa diagonal hacia el vértice superior izquierdo, mejor discrimina el modelo.

El momento de valor: interpretar lo que el modelo aprendió

Aquí es donde la regresión logística demuestra su superioridad práctica sobre modelos más opacos. El modelo ha ajustado un coeficiente para cada variable, y esos coeficientes cuentan una historia legible del negocio. Un coeficiente positivo significa que la variable aumenta la probabilidad de conversión; uno negativo, que la disminuye. Y su magnitud indica cuánto. Estos son los coeficientes que aprendió el modelo, ordenados de mayor a menor peso predictivo.

Coeficientes del modelo · Aura Commerce
canal_origen_referido
+1.32
cargo_propietario
+1.07
canal_origen_organic
+0.86
paginas_visitadas
+0.61
emails_abiertos
+0.19
dias_desde_primer_contacto
−0.37
empresa_tamano_micro
−0.80

La lectura que se puede hacer de esta tabla en veinte segundos, sin ser data scientist, es exactamente el valor operativo que da la interpretabilidad. Los leads que llegan por referido son los que más convierten con diferencia, seguidos por los que vienen de tráfico orgánico. Los propietarios de negocio convierten mucho mejor que otros perfiles, coherente con que son quienes deciden. El número de páginas visitadas es la variable comportamental con más peso predictivo, muy por delante de los emails abiertos, lo que sugiere que la señal que emite un lead al recorrer la web activamente es más fuerte que la señal pasiva de abrir un correo. Los días desde el primer contacto pesan en negativo: cuanto más tiempo pasa sin comprar, menor la probabilidad de que lo haga. Y las empresas más pequeñas convierten sensiblemente menos que las medianas y grandes, algo lógico en un contexto de venta B2B mayorista con pedido mínimo.

Todo esto son afirmaciones que un CTO puede llevar a una reunión con marketing y ventas sin necesidad de traducirlas. Puede decir "el modelo confirma que el canal de referido tiene 1,32 puntos más de peso predictivo que la media" y esa frase es literalmente lo que el modelo dice. No hay interpretación intermedia, no hay caja negra, no hay herramienta adicional. Es lo que un modelo de gradient boosting pierde en el camino y lo que ninguna herramienta de explicabilidad recupera del todo.

💡 El mismo modelo, dos puntos del ciclo de vida

Esta misma técnica de lectura de coeficientes es la que se aplica en un modelo de detección de churn. Con las mismas variables comportamentales cambiadas de referencia temporal —tiempo desde la última compra en lugar de desde el primer contacto, frecuencia de uso en lugar de páginas visitadas— y con la variable objetivo cambiada a abandonado, la regresión logística revela qué comportamientos anticipan que un cliente está a punto de irse. Es la misma arquitectura de datos y la misma técnica de análisis en dos puntos distintos del ciclo de vida del cliente: predecir conversión antes de la compra y predecir abandono después de ella son problemas de la misma familia.

Cuándo la regresión logística deja de ser la respuesta correcta

Nada de lo anterior significa que la regresión logística sea la respuesta correcta para todos los casos. Su límite es real y se puede identificar con criterios objetivos, no con "sensaciones". Hay tres situaciones concretas en las que el coste de mantener la simplicidad supera al de introducir un modelo más potente, y saber reconocerlas es tan importante como saber defender el uso del modelo simple cuando toca.

⚖️ Cuándo cambiar de modelo

Criterio 1: interacciones no lineales fuertes entre variables.

Cuando la relación entre variables no se suma sino que se combina. Si un lead con muchas visitas y muchos emails abiertos convierte al 60% pero uno con muchas visitas y pocos emails abiertos convierte al 15%, la relación no es lineal: hay una interacción. La regresión logística puede capturar esto forzando features de interacción manualmente, pero se vuelve frágil rápido. Los árboles de decisión y sus ensembles capturan estas interacciones de forma nativa.

Criterio 2: volumen histórico alto.

Con decenas o cientos de miles de leads históricos, los modelos basados en árboles tienen más datos para descubrir patrones sutiles que la regresión logística deja sobre la mesa. Con dos mil leads, como Aura Commerce, el margen de mejora es marginal. Con doscientos mil, ya no lo es.

Criterio 3: interpretabilidad ya no es un requisito operativo.

Cuando el equipo comercial ha adoptado ya el score y lo usa por confianza acumulada, o cuando la operación permite convivir con explicabilidad basada en herramientas externas como SHAP, el coste de la caja negra deja de ser un bloqueante. Ese suele ser el punto de madurez adecuado para plantearse el salto.

La pregunta que abre el siguiente artículo

El modelo que hemos construido es un baseline honesto y, para la mayoría de las scale-ups que están empezando a poner orden en su nurturing, es el modelo que deberían operar durante meses antes de plantearse cualquier otra cosa. La regresión logística no es la etapa previa a los modelos buenos: es una decisión estratégica válida que, en muchos contextos, es la mejor decisión disponible. Pero los tres criterios que hemos identificado señalan un territorio distinto — el de las relaciones no lineales entre variables, donde el propio algoritmo tiene que decidir por dónde partir los datos para encontrar los patrones. ¿Cómo funciona un modelo que, en lugar de aprender pesos sobre una fórmula fija, aprende dónde hacer los cortes que separan a los leads que convierten de los que no?