Summary

A multi-store retailer network asked Partners to forecast six months of sales by publisher and segment. Sprint one delivered a working forecast model on the client's own infrastructure, with top-segment forecast error roughly halved against their previous baseline. With forecasting working, the leadership team came back with the harder problem: stock in the wrong place. Six months of store-to-warehouse transfer requests told the story. The stores had requested 9,000 items, the warehouse had shipped 4,000. More than half of what their stores believed their customers wanted was not in the warehouse. The stores had been right. The central forecast had been wrong. Sprint two rewired the central forecast to listen to the store signal and surface phantom demand in real time. A quarter of stable operation later, unfulfilled transfer requests had fallen by roughly 40 %.

The state we found

Most multi-store retailers run forecasting and stock decisions the way this one had been running them. A mix of last year's sales, store managers' instincts, weekly fire-drills, and a buying team carrying so much undocumented context that the assumptions had become invisible, even to the people making them.

The approach had worked while the business was small. It stopped working when the catalogue grew, when the supplier mix expanded, and when the demand cycles fragmented across segments and seasons.

Three things were failing at the same time. Sales forecasts at the publisher and segment level had drifted from reality, and nobody fully trusted them anymore. Store-level assortment decisions were guesswork. Every store manager had a sense of what their customers bought, but no shared view of how their local pattern fit the network. Stock allocations between the warehouse and the stores were reactive: the stores asked, the warehouse fulfilled what it could, the gap was absorbed week after week.

None of this was anyone's fault. It is what running a multi-store retailer on intuition looks like at scale. It is also why customers walk into stores and find empty shelves, and why end-of-quarter dead stock keeps showing up on the books.

What they had already tried

The leadership team had tried to fix the forecasting layer once before. Their own internal BI specialist had built a report. It landed on time, in the format they had asked for. The numbers were off. Two months in, nobody on the buying team was reading it. The exercise was written off as time spent, not result delivered, and the team went back to running on intuition.

They had never engaged anyone external on this. We were the first. The brief was to build something that fit how their team actually worked, on infrastructure they already owned, that the buying team could read and challenge and use on a Monday morning. The trust they extended was the trust the previous internal attempt had used up. We had a single sprint to earn it back.

Sprint one: a forecast they could trust

The brief was modest. Build a six-month sales forecast at the publisher and segment level. Not a magic AI dashboard. A model the buying team could trust enough to open in their Monday meeting.

We started by going to where their data already lived. Point-of-sale data going back several years. Supplier and publisher catalogues. The store-level transaction layer that had never been unified across the network. We stitched it into a single warehouse on infrastructure they already owned. All processing runs locally. Their NDA-bound supplier relationships demand that nothing leave the network.

The model is conventional in shape: gradient-boosted forecasts at the SKU-publisher-segment level, refreshed weekly, ensembled with seasonality decomposition for the categories where buying patterns are calendar-driven. The point was never the model. The point was that the buying team could finally open a dashboard, see what the next six months looked like at the segment level, and challenge the number with their own context.

By the end of sprint one, forecasting error on top-tier publisher segments had roughly halved against their prior baseline. The buying team was using the forecasts in their weekly cadence within three weeks of deployment. The leadership team had something to read in their Monday meetings that they actually trusted.

That was the easy part. The harder problem was visible only after the easy part had landed.

Sprint two: and what their data surfaced

With forecasting working, the leadership team asked the next question. If we know what is going to sell, can we make sure the stock is in the right place when customers walk in?

We started with the simplest possible version of that question. Their stores already had a system for requesting stock transfers from the central warehouse. We pulled six months of those transfer requests and lined them up against what had actually shipped.

The picture stopped the conversation in the room.

In a representative period, the stores had collectively requested 9,000 items in transfer. The warehouse had shipped 4,000. The remaining 5,000, more than half of what the stores believed their customers wanted, were simply not in the warehouse. Not because the supply chain had failed. Not because the suppliers had let them down. Because the central purchase orders that fed the warehouse had been written against a demand model that did not reflect what the stores were actually selling.

The stores had been right all along. The warehouse had been buying against a different signal.

That was the moment the project changed shape. Sprint two was no longer about building a stock-distribution model on top of a working forecast. It was about closing a gap that had been hiding in plain sight: the central purchasing layer had to start hearing the store demand signal it had been ignoring for years.

What we built on top of it

The model we shipped at the end of sprint two does three things at once.

It feeds the store signal back into the central forecast. Warehouse purchase orders are now driven by what stores have been asking for, not just by what the central system has historically forecast.

It runs a per-store assortment optimiser. The model takes the local sales pattern, the segment-level forecast, and the cost of carrying inventory in each location, and outputs a recommended assortment per store. Store managers can edit, accept, or reject. Every recommendation is auditable. Every override is logged.

It surfaces phantom demand in real time. When a store requests a transfer and the warehouse cannot fulfil it, the system flags the gap, classifies it, and routes the signal back to the buying team, so the same item appears on the next purchase order, before another quarter of empty shelves passes.

A quarter of stable operation in, the picture had changed. Unfulfilled transfer requests had fallen by roughly 40 %. The phantom-demand signal that opened sprint two had reshaped how the buying team writes purchase orders. And the stores, for the first time, were getting what they had been asking for.

The lesson

Most multi-store retailers think of stockouts as a supply-chain problem. They are not. Stockouts are a forecasting and central-purchasing problem in supply-chain clothing. The stores hear demand. The warehouse buys against an assumption. The gap is where customers walk out empty-handed and revenue leaks out of the books.

The stores already know what your customers want. The work is to make sure your warehouse listens.

A diagnostic any multi-store retailer can run this week

You probably already have the data. It lives in two places.

Step 1. Pull six months of internal stock transfer requests from your store network. Group them: requested vs. shipped vs. unfulfilled. Compute the unfulfilment rate per category and per store. If that rate is above 10 % in any major category, you have a phantom-demand problem in that category. Above 25 % and the problem is structural.

Step 2. Take the three categories with the highest unfulfilment rate. For each, pull the central purchase orders for the same period. Compare what the central team ordered to what the stores asked for. The gap is your forecasting blind spot. That gap, multiplied across a year, is the size of the revenue you are losing without realising it.

Step 3. Show those two numbers to your store managers. They already know. The data will confirm what they have been telling you all along. They will start sharing things they had stopped trying to say, because nobody at the centre had ever been listening.

The numbers belong to your team. The work of making them visible is a few weeks. The change in how your buying team writes purchase orders is what happens next.