RM
Volver a casos

Machine Learning / Inventory Intelligence

DemandOS

Decisiones de inventario desde datos raw de comercio.

DemandOS convierte registros sintéticos de comercio en forecasts, señales de riesgo, orientación de reposición, diagnósticos y superficies de monitoring. Proveedores, productos, tiendas, pedidos, snapshots de inventario, promociones y órdenes de compra aportan los datos fuente para esas salidas.

Registros sintéticos rawForecasting MLNeon + VercelSin acciones externas
Machine LearningForecastingOperations IntelligenceInventory RiskFastAPINext.jsscikit-learnNeon PostgresVercelSynthetic DataMonitoringScenario Planning
Cockpit operativo de DemandOS con readiness del pipeline, riesgo de inventario y recomendaciones
Demo pública con datos operativos sintéticos y efectos externos desactivados.

Tesis estratégica

Para decisiones de inventario, la fiabilidad pesa más que la autonomía.

El ML se usa para forecasting y diagnóstico. El código determinista gestiona ingesta, validación, contratos de esquema, feature engineering, routing, safety gates y control de efectos. El sistema está diseñado para ser auditable y reproducible: no usa agentes autónomos para decidir compras, contactar proveedores ni crear órdenes de compra.

Resumen del caso

El brief estratégico

El problema, la respuesta del sistema, la prueba disponible, el valor estratégico y el límite intencional.

01Problema
Los operadores retail suelen tener datos operativos fragmentados y poca visibilidad sobre demanda, riesgo de stockout y urgencia de reposición.
02Sistema
Un pipeline determinista de ML que convierte registros sintéticos de comercio en forecasts, scores de riesgo de stockout y guía interna de reposición.
03Prueba
Demo, GitHub, conteos del pipeline raw, métricas de modelo, capturas del dashboard, tests backend, smoke checks y validación public-readiness.
04Valor
Ayuda a priorizar qué puede agotarse, qué requiere atención de reposición y dónde aumenta el riesgo de planificación.
05Límite
Prototipo sintético de portfolio; sin datos reales de clientes, conectores ecommerce live, compras autónomas, comunicación con proveedores ni efectos externos.

Metadatos del proyecto

Un prototipo público de ML y producto de datos

Tipo
Machine learning / data product prototype
Rol
Arquitectura de producto, backend, frontend, workflow ML, despliegue y evaluación
Stack
Python, FastAPI, pandas, scikit-learn, SQLAlchemy, Alembic, Next.js, TypeScript, Neon Postgres, Vercel
Estado
Prototipo público de portfolio
Datos
Datos operativos sintéticos de comercio
Seguridad
Sin compras, comunicación con proveedores, conectores live ni efectos externos
Año
2026

Problema

De datos operativos a decisiones de inventario

Retail y ecommerce dependen de registros fragmentados: catálogos, tiendas, pedidos, snapshots de inventario, proveedores, promociones y órdenes de compra. Un dashboard convencional explica qué ocurrió, pero rara vez conecta esos datos con forecasts, calidad de modelo, riesgo de stockout y decisiones revisables de reposición.

¿Puede un workflow creíble de ML convertir registros de comercio en orientación de inventario sin usar datos reales de clientes ni fingir outputs de dashboard?

Objetivo de producto

Una herramienta interna de ML para orientar inventario

El objetivo fue construir un ciclo funcional que empezara en datos operativos brutos, evaluara modelos y terminara en orientación revisable, manteniendo el sistema seguro y no autónomo.

+

Qué hace

  • Genera datos sintéticos operativos.
  • Limpia, valida y agrega datos.
  • Construye features leakage-safe.
  • Entrena y evalúa modelos de forecasting.
  • Calcula riesgo de stockout.
  • Propone recomendaciones internas de reposición.
  • Permite escenarios simulados.
  • Expone monitoring y health checks.
  • Prepara conectores Shopify/WooCommerce como stubs desactivados.

Qué no hace

  • No usa datos reales de clientes.
  • No crea órdenes de compra reales.
  • No contacta proveedores.
  • No ejecuta conectores live.
  • No automatiza compras.
  • No promete precisión productiva.
  • No siembra forecasts, riesgos o recomendaciones como KPIs finales.

Decisión de arquitectura

Workflow determinista de ML, no agente autónomo

Los modelos se usan para forecasting y diagnóstico. Ingesta, validación, routing, contratos de esquema, puertas de seguridad y control de efectos permanecen deterministas. Los pasos ya son conocidos: la decisión de producto es hacerlos fiables, inspeccionables y repetibles.

  1. 01Raw commerce data
  2. 02Cleaning / validation
  3. 03Canonical daily tables
  4. 04Leakage-safe features
  5. 05Forecasting models
  6. 06Model metrics
  7. 07Stockout risk
  8. 08Reorder guidance
  9. 09Dashboard

Cada capa derivada se calcula y persiste antes de que la siguiente etapa la consuma.

Data pipeline

La demo empieza con registros brutos, no con métricas inventadas

DemandOS no siembra KPIs finales, forecasts precalculados, scores de riesgo ni recomendaciones. Parte de entidades operativas sintéticas y calcula todas las capas posteriores.

ProveedoresProductosTiendasPedidosSnapshots de inventarioPromocionesÓrdenes de compra
10productos
2tiendas
1.677pedidos
1.156snapshots de inventario
1.154filas de features
946forecasts baseline
560forecasts de planificación
20filas de riesgo
10recomendaciones

Conteos validados en una ejecución demo small-mode; pueden cambiar después de reseedear.

Raw vs derivado

El dashboard se calcula, no viene precargado

DemandOS parte de entidades operativas y calcula internamente las superficies de planificación. Ese es el límite de prueba entre datos demo raw y outputs de producto.

Input rawCalculado por DemandOS
PedidosForecast de demanda
Snapshots de inventarioDías hasta stockout
Órdenes de compraCobertura entrante
Lead times de proveedorTiming de reposición
Productos y tiendasRanking de riesgo producto/tienda
PromocionesContexto de features de demanda
Histórico de ventasComparación con baseline de forecast

Forecasting y capa ML

Forecasting como capa central del producto

Los baselines ofrecen un punto de comparación transparente. El modelo global usa scikit-learn y features de demanda, inventario, calendario, promoción, precio y ciclo de vida. Sus outputs alimentan riesgo de stockout y orientación de reposición.

Baseline

Comparación antes de complejidad

Seasonal naive y medias móviles establecen referencias legibles. El modelo ML no está obligado a ganar.

ML

HistGradientBoostingRegressor

Modelo global sobre series producto/tienda, entrenado con una matriz de features que excluye información futura.

Evaluación

Backtesting honesto

Split temporal, predicciones no negativas, métricas persistidas y bandas p10/p90 documentadas como heurísticas.

WAPE

Error total ponderado como porcentaje de la demanda real agregada.

MAE

Error absoluto medio entre demanda observada y forecast.

RMSE

Métrica que penaliza con más fuerza los fallos grandes.

Bias

Indica si el modelo tiende a sobreestimar o infraestimar demanda.

En este prototipo, WAPE funciona como señal direccional de calidad. Un WAPE alto no se oculta: la interfaz explica que el forecast es útil como señal demo de planificación, no como modelo calibrado para producción.

ML Insights

Una capa de interpretación para entender el modelo

La superficie de data science organiza resumen de diagnósticos, comparación de modelos, grupos de señales e interpretación de impacto de negocio sin mutar la base de datos.

/api/data-science/summary/api/data-science/forecast-diagnostics/api/data-science/model-comparison/api/data-science/feature-signals/api/data-science/business-impact

Los cinco endpoints son read-only: explican el sistema y sus resultados, pero no ejecutan entrenamiento, pipeline ni cambios de estado.

Feature engineering

De features a señales interpretables

Las señales describen información usada por el modelo o asociada con patrones de demanda. No se presentan como relaciones causales.

Demanda reciente

Lags y ventanas móviles anteriores al día objetivo.

Estacionalidad

Calendario, día de semana y patrones temporales.

Precio y margen

Precio, coste, margen y cambios recientes.

Promociones

Exposición promocional y lift observado en los datos.

Cobertura

Inventario disponible, stockout flag y días de suministro.

Ciclo de vida

Edad del producto y etapa de madurez.

Canal

Señales de tienda, categoría y canal de venta.

Riesgo y reposición

Del forecast al riesgo operativo

El riesgo combina demanda prevista, inventario actual, suministro entrante, lead time, fiabilidad del proveedor, safety stock y ventas perdidas estimadas. Las recomendaciones son orientación interna para revisión: nunca órdenes de compra reales.

1riesgo crítico
5riesgos altos
4riesgos medios
10riesgos bajos
10recomendaciones abiertas
≈ €9.516exposición a ventas perdidas
≈ €6.686coste estimado de pedido

Salida visible en una ejecución demo validada; los valores pueden variar después de reconstruir el dataset.

Monitoring

Comparaciones simples y legibles

Compara métricas recientes de modelo y salud de datos frente a ejecuciones anteriores mediante estados y umbrales documentados, sin convertir una demo en una afirmación estadística compleja.

Scenario planning

Simular sin mutar la verdad base

Los escenarios se guardan por separado, se etiquetan como simulados y nunca alteran las tablas canónicas de riesgo o recomendaciones.

Multiplicador de demandaMultiplicador de lead timeFiabilidad del proveedorLift promocionalAjustes de inventarioHorizonte de planificación

Extensiones

Preparadas, pero seguras por defecto

CSV Upload

Solo registros operativos brutos

Valida entidades raw, rechaza lags, forecasts, scores y recomendaciones derivados, limita archivos a 2 MB y escribe registros de auditoría.

Connector Prep

Shopify y WooCommerce desactivados

Los stubs validan únicamente la forma de configuración. El dry-run no llama APIs, no almacena credenciales y no existe sincronización live.

Dashboard walkthrough

Del pipeline a superficies concretas de decisión

Las capturas proceden de la demo pública y muestran datos sintéticos calculados en la superficie del producto.

Deployment architecture

Un despliegue gratuito y acotado para portfolio

Un proyecto Vercel sirve Next.js y una función Python FastAPI bajo /api/*. Neon Postgres conserva el estado y las llamadas del navegador son same-origin.

Browser

Interfaz Next.js y llamadas same-origin

Vercel

Frontend + función FastAPI en modo serverless

Neon Postgres

Persistencia de datos, runs y outputs

Small mode

Escala sintética compatible con límites de demo

Un sistema mayor migraría backend, workers y artefactos de modelo a infraestructura dedicada. El prototipo asume límites serverless, artefactos efímeros y restricciones de free tier.

Fiabilidad y evaluación

Tests, smoke checks y límites explícitos

La credibilidad no depende de una captura aislada, sino de contratos de datos, pruebas, checks de seguridad y validación contra el despliegue público.

451tests backend únicos passing
Passingfrontend typecheck + build
201checks en scripts/verify.sh
Passingpublic-readiness scan
29 / 29production smoke checks
0secretos o efectos externos detectados

El conteo backend anterior era mayor porque incluía copias duplicadas no trackeadas. El caso público utiliza el conteo limpio de tests únicos.

Safety boundary

Permitido vs bloqueado

Los endpoints públicos de lectura están disponibles. Las acciones de escritura y control se protegen con API key, y el prototipo no cruza el límite hacia acciones externas.

PermitidoBloqueado
Recomendaciones internas de reposiciónÓrdenes de compra reales
Subidas CSV sintéticasDatos reales de clientes en producción
Simulación de escenariosEmails a proveedores
Dry runs de conectoresLlamadas live a Shopify/WooCommerce
Diagnóstico de forecast y riesgoCompras autónomas
Demo pública de portfolioEfectos externos

Resultado

Un flujo completo de ML

DemandOS demuestra un workflow end-to-end: ingesta raw, validación, feature engineering, forecasting, diagnóstico de modelos, riesgo y recomendaciones, monitoring, escenarios, despliegue y disciplina de publicación.

El trabajo de portfolio con ML es más fuerte cuando el modelo vive dentro de un workflow fiable de ingesta, validación, features, evaluación, explicabilidad, seguridad y despliegue.

Limitaciones

Lo que el prototipo no demuestra

  • Solo utiliza datos sintéticos.
  • No está entrenado con datos reales de clientes.
  • No es un sistema productivo de reposición.
  • No existe integración ecommerce live.
  • No realiza compras autónomas.
  • No incluye scheduler en background.
  • El runtime serverless de Vercel limita escala y duración.
  • Neon se usa dentro de límites de prototipo/free tier.
  • La calidad del forecast está calibrada para demo, no para producción.

Qué aprendí

El modelo solo es una parte del producto

El proyecto combina el entrenamiento del modelo con el entorno necesario para revisar sus resultados: contratos de datos, validación, features sin leakage, métricas interpretables, observabilidad, límites de seguridad y una interfaz que ayuda a decidir qué revisar primero.