Skip to main content

Manufacturing · Data Science & AI

A demand forecast that had to beat a moving average — or it would not ship

Two internal demand-forecasting POCs had already failed. We started by establishing the simplest possible baseline and set the rule that any model had to beat it to be deployed.

Sector
Manufacturing
Size
9 sites, 2,100 employees
Service
Data Science & AI
Model
Framing then fixed price
Duration
2-week framing, 11-week project

Context

Production planning relied on planner experience and a spreadsheet moving average. Both stockouts and overstocks were frequent, on short-shelf-life products.

The problem

  • Two forecasting projects already abandoned at POC stage
  • Sales history available but promotions not tracked separately
  • No internal consensus on which metric to optimise
  • Strong planner distrust of an automated model

What we did

  • Two-week framing spent first on settling the metric, with supply chain and financial control
  • Reconstruction of promotional history from invoicing data
  • Explicit baseline: the current moving average, measured over a rolling twelve months
  • Rule set in writing: no model ships unless it beats the baseline on the agreed metric
  • One model per product family, not a single model — low-rotation families stay on the baseline
  • Manual override interface for planners, with override tracking
  • Monthly retraining pipeline and drift alerting

Results

-31 %
forecast error reduction
4 / 7
families moved to the model
11 sem.
framing to production
18 mois
in production with no manual retraining

What remains

Three of seven product families stayed on the moving average because the model did not beat it. The client considers that the project's most credible outcome: it is what convinced the planners to accept the model on the other four families. Manual overrides are tracked and feed the retraining signal.

« This is the first provider who told us that part of our need did not require artificial intelligence. »
Supply Chain Director, Food industry manufacturer

Stack

  • Python
  • scikit-learn
  • MLflow
  • Azure ML
  • PostgreSQL

Case studies

Twenty minutes is enough to know whether we are useful

No sales deck. You describe the need, we say whether it is in scope, at what price and on what timeline. If it is not for us, we say so during the call.