Forecasting demand for 2,400 SKUs
Planners worked from last year plus intuition. We built a forecasting service per SKU and region, retrained weekly, with a manual override planners actually use.
- Forecast error
- -19%
- Working capital freed
- $2.1M
- SKUs covered
- 2,400
- Retraining cadence
- Weekly
The situation
Carter Foods runs three plants and ships 2,400 active SKUs. Planning worked from last year’s volumes plus the planner’s judgement, in a spreadsheet rebuilt each Monday.
It was not a bad process. It was an undocumented one that depended on two people, and it could not react to a promotion the commercial team had agreed on Friday.
Constraints
Planners had to stay in control. An earlier attempt at automated replenishment had been abandoned because overriding it was slower than ignoring it, so the override path mattered more than the model.
What we did
We built one demand history across retail, foodservice and wholesale, with returns and promotional lift handled consistently for the first time. Forecasting runs per SKU and region and retrains weekly.
The override sits in the planning screen the team already used. A planner changes a number, the reason is recorded, and that reason feeds the next evaluation round.
What surprised everyone
The largest single gain came from fixing how promotions were recorded, not from the model. Three months of history had been attributing lift to the wrong week.
Results
| Measure | Before | After |
|---|---|---|
| Mean absolute percentage error | 31% | 12% |
| Stockouts per quarter | 184 | 96 |
| Planning hours per week | 60 | 22 |
| Models in production | 0 | 3 |
Everything is in our repository, commented, with tests. Two of my analysts now ship changes that used to need a consultant.
Marcus ElderHead of Data, Carter FoodsWhat we left behind
- A project in the client's own repository, with tests and CI
- Documented definitions with named owners
- Runbooks for every scheduled job, written for a non-engineer
- Two weeks of training for the team taking it over
Other engagements you might want to read
Tell us which number you cannot trust
Send one paragraph about the report that always starts an argument. A data lead, not a salesperson, replies within one business day.



