· Hernán Pérez Rodal · Engineering  · 6 min read

AI anomaly detection en eventos de trazabilidad: de la detección al yield optimization

Detectar anomalías es el 20% del problema. El otro 80% es convertir alertas en ahorro real de producción. Contamos cómo lo resolvemos en Darwin — con modelos simples que mueven la aguja.

Detectar anomalías es el 20% del problema. El otro 80% es convertir alertas en ahorro real de producción. Contamos cómo lo resolvemos en Darwin — con modelos simples que mueven la aguja.

TL;DR — “AI anomaly detection” suena a deep learning sofisticado. En la práctica, los modelos que mueven la aguja en producción de alimentos son simples, interpretables y están conectados directamente al proceso operativo. Contamos cómo en Darwin pasamos de “detectamos anomalías” a “optimizamos yield” — y por qué el gap entre los dos es más grande de lo que parece.

El problema: anomalías detectadas ≠ valor capturado

Muchas plataformas prometen “detectar anomalías en supply chain con AI”. El ML detecta outliers — fácil. Pero un outlier detectado no es valor hasta que:

  1. El operador lo entiende (no es una caja negra que dice “anomalía”)
  2. Llega a tiempo (alerta 4 horas después no sirve)
  3. Se traduce en una acción concreta (no solo “dashboard con gráfico rojo”)
  4. Se mide el impacto (¿cuánto ahorraste? ¿cuánto yield ganaste?)

La mayoría de proyectos se quedan en el paso 1 — detectan cosas, pero no se cierran el loop. En Darwin construimos el sistema end-to-end. Así es como.

Qué detectamos (y qué no)

✅ Anomalías que sí detectamos

TipoEjemploModelo
Desvíos de procesoTemperatura de cadena de frío fuera de rangoReglas + rolling statistics
Inconsistencias de lotePeso declarado vs. peso real en despachoRegresión simple por producto
Fraude potencialProveedor reportando más volumen que su capacidad productiva históricaIsolation forest sobre features de proveedor
Calidad degradadaRetornos de cliente correlacionan con un lote específicoCorrelación + análisis causal básico
Patrones temporalesRendimiento baja sistemáticamente los lunes después de paradasSeasonal decomposition

❌ Lo que NO hacemos (todavía)

  • Predicción de demanda — no es trazabilidad, no entramos ahí
  • Computer vision de producto — requiere hardware específico; fuera de alcance
  • Deep learning end-to-end — el overhead vs. valor no justifica en este dominio

Nuestra regla: modelo interpretable que el operador entiende > modelo complejo que es “mejor” en métricas. Si un cliente no puede explicarle a su auditor cómo se detectó la anomalía, no nos sirve.

El stack

Data pipeline:

  • Eventos CTE/KDE ingresando via Captia → Pub/Sub → PostgreSQL (raw) + data warehouse (features)
  • Feature engineering programado (cada N eventos o cada X minutos)

Models:

  • Python (scikit-learn, statsmodels) — modelos simples, interpretables
  • Prophet — para patterns temporales
  • Isolation Forest — para multivariate outliers en features de proveedor

Serving:

  • Modelos entrenados offline, scoring en tiempo real en un service dedicado
  • Scoring típico: <100ms por evento
  • Rule-based alerts on top (combinamos ML + reglas de negocio)

Delivery:

  • Alertas a operadores via WhatsApp + email + dashboard
  • Cada alerta incluye: qué se detectó, por qué, qué features contribuyeron, acción sugerida

Del outlier al yield: el paso que nadie cuenta

Acá está el trabajo real. Detectar un outlier es fácil. Convertirlo en valor para el cliente requiere:

1. Alertas accionables, no informativas

Malo:

“Anomalía detectada en lote #12345”

Bueno:

“Lote #12345 tiene peso 7% menor al esperado (basado en 200 lotes similares últimos 90 días). Posible causa: pérdida de humedad por ventilación excesiva. Revisá: compresor #3 (última mantención hace 6 meses) o puerta de cámara (cierre).”

La alerta incluye: qué, por qué, qué chequear primero. El operador actúa en minutos, no en horas.

2. Feedback loop con el operador

Cuando el operador resuelve una alerta, la app pregunta:

  • ¿Era una anomalía real? (feedback al modelo)
  • ¿Cuál fue la causa raíz?
  • ¿Qué acción tomaste?

Esos labels se vuelven training data para la próxima iteración del modelo. Los modelos aprenden de las decisiones humanas, no solo de la data histórica.

3. Métricas de negocio, no solo de ML

Los dashboards que enseñamos al cliente NO muestran “precision: 0.94 / recall: 0.87”. Muestran:

  • Yield preservado — toneladas recuperadas porque la alerta llegó a tiempo
  • Tiempo de respuesta mejorado — de X horas a Y minutos
  • Recalls evitados — incidentes que se detectaron antes de llegar al consumidor

Esos son los números que hacen que el cliente renueve el contrato, no la matriz de confusión.

4. Causal analysis, no solo correlation

Detectar que “el yield baja los lunes” es fácil. Lo útil es: por qué.

Combinamos:

  • Event sequence analysis — qué eventos preceden al drop de yield
  • Operator feedback — el conocimiento local del planta manager
  • LLM-assisted root cause — el LLM propone hipótesis que el experto confirma

Resultado: no solo alertamos, explicamos patrones. Eso transforma “detección” en “optimización”.

Un caso real: pérdida de yield en procesamiento de frutas

Un cliente notaba que el rendimiento de procesamiento (kg materia prima → kg producto final) bajaba sin explicación clara. Varía entre 72% y 78%, sin patrón obvio.

Con Captia + Tracium ya teníamos todos los eventos detallados. Aplicamos:

  1. Feature engineering — temperatura ambiente, proveedor, lote de origen, turno, operador, tiempo entre cosecha y procesamiento
  2. Modelo de regresión simple — predice yield esperado dado features conocidos
  3. Analysis de residuos — casos donde yield real difiere >3% del esperado

Hallazgo: el tiempo entre cosecha y procesamiento era el predictor más fuerte. Lotes que entraban a procesamiento >48hs después de cosecha tenían yield 5-8% más bajo.

Acción del cliente: reorganizaron el flujo logístico para priorizar lotes más viejos. En 3 meses:

  • Yield promedio +3.2% → $180k/año en ahorro para esta sola planta
  • Alertas accionables cuando un lote pasa el threshold de “riesgo”
  • Mejor negociación con proveedores — data para exigir entregas más rápidas

Este no es deep learning sofisticado. Es regresión + feature engineering + distribución disciplinada de la alerta. El valor está en cerrar el loop, no en la complejidad del modelo.

Lo que no funcionó

V0: deep learning end-to-end — probamos LSTMs sobre series temporales de eventos. Precisión parecida a regresión simple, pero no interpretable. Los operadores no confiaban en alertas que no podían explicar. Abandonamos.

Dashboards como principal canal — muchas anomalías quedaban en el dashboard sin acción. Migramos a push notifications (WhatsApp) con call-to-action explícita.

Modelos globales por industria — un modelo para “todas las frutas” daba peor precisión que modelos específicos por producto-planta-proveedor. Ahora entrenamos específicos y damos versioning claro.

Lessons learned

  1. El gap entre detección y valor es el 80% del proyecto — no el modelo
  2. Interpretabilidad > precisión en dominios con operadores humanos
  3. Feedback loop desde el día 0 — sin labels de operadores, el modelo se estanca
  4. Métricas de negocio, no de ML en los reportes al cliente
  5. Simples modelos + domain knowledge > complex modelos sin contexto

¿Y ahora?

Estamos explorando causal AI con herramientas como DoWhy — no solo detectar correlations sino inferir causalidad real de eventos. Combinado con LLMs para formular hipótesis, puede acelerar mucho el root cause analysis.

Si estás construyendo anomaly detection en supply chain y tu modelo detecta bien pero nadie actúa sobre las alertas, el problema no es tu modelo — es el loop de acción. Empezá por ahí.


¿Tenés un problema de yield, waste o pérdida de calidad en producción? Hablemos — podemos mostrarte casos reales con impacto medible.

Compartir:
Back to Blog

Related Posts

View All Posts »