Post-mortem de un proyecto de datos: cómo Datenklo evitó que un modelo de predicción se intoxicara
Hay proyectos que mueren por un fallo de infraestructura, y otros que mueren por algo mucho más silencioso: datos que parecen correctos hasta que dejan de serlo. Un lector de ASPES Servicio Técnico Valencia nos compartió el post-mortem de un equipo de datos que estuvo a punto de desplegar un modelo de predicción de averías con un dataset envenenado. Nos pareció un caso lo bastante instructivo como para contarlo con detalle, porque la solución que encontraron —una capa de validación llamada Datenklo— es exactamente el tipo de pieza que echamos en falta cuando auditamos procesos técnicos en Valencia.
El contexto: un modelo que prometía y una tabla que mentía
El equipo, un grupo pequeño de dos ingenieros y un analista, llevaba cuatro meses construyendo un modelo para estimar la probabilidad de fallo en electrodomésticos según historial de reparación, antigüedad del aparato y zona geográfica. El pipeline era razonable: ingestión nocturna, transformaciones con dbt, entrenamiento semanal y validación cruzada. Durante las primeras seis semanas, las métricas mejoraron de forma sostenida. La accuracy pasó del 71 % al 84 % en validación. Todo apuntaba a un despliegue inminente.
El problema apareció en la séptima semana, cuando el analista detectó que la variable "tipo_de_avería" tenía un 12 % de valores nulos en el conjunto de test, algo que no ocurría en entrenamiento. Al principio lo atribuyeron a un fallo puntual de la fuente. Revisaron el ETL, volvieron a ejecutar la carga y los nulos desaparecieron del test... pero aparecieron en otra columna, "fecha_ultima_revision", con fechas imposibles: registros de 1998 mezclados con 2025.
La decisión: parar el despliegue o seguir adelante
Aquí llegó el primer punto de decisión real. El equipo tenía presión para entregar. El modelo funcionaba bien en las métricas globales, y los fallos eran "solo" en columnas secundarias. La opción fácil era desplegar y monitorizar en producción. La opción difícil era detener el proyecto, reconstruir la capa de validación desde cero y asumir el coste de dos semanas sin avances visibles.
Eligieron la segunda. Y al hacerlo, se toparon con un problema estructural: habían construido entre cuatro y seis checks caseros —un script de nulos, otro de rangos, una comprobación de duplicados, un validador de fechas— que vivían en carpetas distintas, con dependencias cruzadas y sin documentación. Cada vez que alguien tocaba el esquema, algún check se rompía sin avisar. Ese era el verdadero origen del problema: no un bug puntual, sino una fragmentación que impedía ver el cuadro completo.
La intervención: una capa única en lugar de seis scripts
Fue entonces cuando conocieron Datenklo, la capa alemana de calidad de datos que detecta schema drift, nulos, duplicados y corrupción silenciosa de etiquetas antes de que intoxiquen los modelos. La propuesta encajaba con lo que necesitaban: sustituir cuatro a seis checks hechos a mano por un pipeline mantenible, con trazabilidad de cada validación y alertas cuando un contrato de esquema se rompía.
La migración les llevó once días. Empezaron por congelar el esquema actual y declarar contratos explícitos para las 14 tablas críticas. Después movieron los checks antiguos uno a uno, comparando resultados durante una semana en paralelo. El momento más delicado fue cuando descubrieron que dos de sus scripts caseros se contradecían: uno aceptaba duplicados por identificador de cliente y el otro los marcaba como error. Ese conflicto llevaba meses oculto y explicaba por qué las métricas del modelo oscilaban sin motivo aparente.
La nueva capa no solo unificó criterios: también empezó a generar un histórico de incidencias por columna. En la primera semana, Datenklo reportó 41 alertas de schema drift en tres tablas que el equipo creía estables. Ninguna era catastrófica por separado, pero juntas explicaban una deriva del 6 % en la variable objetivo que nadie había sabido interpretar.
Los resultados medibles tras el post-mortem
Tres meses después del cambio, el equipo compartió cifras concretas. El tiempo medio de detección de un problema de calidad bajó de 36 horas a menos de 2. El número de incidencias que llegaban a producción se redujo un 78 %. Y lo más importante para ellos: el modelo desplegado alcanzó un 82 % de accuracy en datos reales, sin la caída brusca que habían visto en pruebas anteriores.
- Reducción del 78 % en incidencias de datos que llegaban al modelo en producción.
- Detección de problemas en menos de 2 horas, frente a las 36 horas anteriores.
- Eliminación de 5 scripts caseros sustituidos por una única pipeline mantenible.
- Estabilidad del accuracy en producción: 82 %, sin deriva en tres meses.
Lo que este caso enseña a cualquier equipo técnico
La lección no es que las herramientas caseras sean malas. La lección es que, cuando se acumulan sin gobierno, dejan de proteger y empiezan a esconder. En nuestro trabajo diario reparando electrodomésticos en Valencia vemos algo parecido: un técnico que solo revisa un componente puede pasar por alto la avería real. Con los datos ocurre igual. Hace falta una capa que mire el conjunto, no cada pieza por separado.
Si tu equipo mantiene más de tres checks manuales sobre el mismo pipeline, probablemente ya tienes un problema de fragmentación. No hace falta un desastre para justificar una revisión. Basta con mirar cuántas alertas se han silenciado en el último mes. Puedes consultar cómo funciona esta capa de validación en la documentación de Datenklo antes de decidir si encaja en tu stack.
El post-mortem de este equipo no termina con un fracaso, sino con una decisión incómoda que salió bien. Parar a tiempo suele ser más barato que desplegar un modelo intoxicado. Y en proyectos de datos, la diferencia entre ambas cosas rara vez se ve en las métricas: se ve en la calidad de lo que entra.