Coopen / Work / Demand forecasting
Client case study
A purchasing brain that knows what to reorder, and when.
BetSupplier stocks hundreds of products with wildly different demand: some sell every day, some sell three times a year. Coopen built BetStock IA — a forecasting engine that classifies each product before predicting it, computes what to buy and by when, and then measures how wrong it was against real history.
The challenge
A wholesaler does not have one demand curve, it has hundreds — and they are not the same shape. A product that moves every day and a product that moves in three big orders a year need genuinely different mathematics. Applying one formula to everything produces confident numbers that are wrong.
And wrong here is expensive in both directions: capital frozen in stock nobody asked for, or an empty shelf on the item that actually sells.
What we built
What we built
- A model per product, not per catalog — The engine classifies each series first and then applies the method that fits it — smoothing, trend, or intermittent demand (Croston-SBA) for the ones that sell in rare bursts.
- The actual purchasing answer — Safety stock, reorder point, the date you have to order by, and how many units — not just a graph.
- It grades itself — Every forecast is backtested against real history and scored with WAPE. Accuracy is a number on screen, not a promise.
- Inventory traffic light — Each product coloured by urgency, with its production lead time and unit value in view.
- Combos, separated out — A combo is a pack with no stock of its own. It has its own screen showing units sold as a pack and how many can be assembled from the components in stock.
- One-button ingestion — The team refreshes the data itself, with a guard that blocks two runs from colliding.
Four failures you only find by measuring
The engine was readable, tested and wrong in four different ways — and none of them were visible in the code. They appeared when we ran it against the real sales history.
The observation window was global, so the ERP history padded newer products with thousands of days of zero sales. The outlier filter was eating more than half the volume, because in a wholesaler the large orders are the business, not an anomaly. A negative trend projected to zero — "never sells again". And safety stock asked for 198 units of something that sells 25 a year, while the traffic light said "overstocked" and the engine said "buy".
That is the difference between an engine that looks right and one that is right. We measure ours.
The stack
A pure, auditable engine
The forecasting logic is an isolated, dependency-free module: same inputs, same outputs, testable on its own. That is what makes a number you can defend to whoever signs the purchase order.
The service behind it
Related
Buying on gut feel?
If your reorder decisions live in someone's head or in a spreadsheet they maintain by hand, there is a measurable version of that. Tell us what you stock.