Forty Locations, One Truth: How a Regional Retail Chain Ended Its Inventory Guessing Game
A 40-location retail chain ran on 40 separate inventory realities. Here is how we unified stock data into one system and cut stockouts by 61%.
The client operated 43 retail locations across three regions, each running point-of-sale software that had been selected, configured, and modified independently by local store managers over a decade of growth. Head office had a dashboard. It was, by the CFO's own description, "a beautifully designed lie." The numbers it displayed were real inputs run through inconsistent logic, and nobody at head office could say with confidence how much stock of a given product existed across the network at any moment.
The symptom that brought them to us was stockouts. Popular items were routinely unavailable at one location while sitting in surplus at another, twenty minutes away. Regional managers were placing emergency reorders for stock that technically already existed in the network. The finance team was writing off shrinkage that, on closer inspection, was really just inventory nobody could locate.
What We Found
We spent the first two weeks doing something unglamorous: pulling raw exports from all 43 point-of-sale instances and reconciling them by hand against physical counts at six sample locations. The result was a data integrity map that the client had never seen. Fourteen of the 43 locations were using a SKU numbering convention that had drifted from the corporate standard, meaning the same physical product was being tracked under different identifiers depending on which store sold it. Nine locations updated their inventory counts in batch overnight, while the rest updated in near-real time — so any cross-location report generated during business hours was comparing live numbers against numbers that were, on average, 14 hours stale.
There was no single source of truth because there was no single system. There were 43 systems that happened to feed into the same spreadsheet.
What We Did
We did not replace the point-of-sale systems. That would have meant a multi-year rollout and significant retraining risk across a workforce that was already stretched thin during peak season. Instead, we built a data engineering layer that sat above the existing systems: a canonical SKU registry, a normalization pipeline that reconciled the 14 divergent numbering conventions back to a single identifier, and a near-real-time sync service that pulled inventory counts from every location on a 15-minute cycle rather than the overnight batch nine stores had been running on.
On top of that layer, we built a single inventory dashboard that regional and head-office managers could trust, with a transfer-recommendation engine that flagged, automatically, when one location was overstocked on an item that another location was about to run out of. What used to be a phone call and a guess became a suggested transfer with delivery-time estimates attached.
We had been managing forty-three separate businesses and calling it one company. The transfer engine alone paid for the entire engagement in the first quarter — we stopped ordering stock we already owned.— VP of Operations, post-engagement retrospective
The Outcome
Within five months, stockout incidents across the network fell 61%. Emergency reorders — stock purchased urgently that later turned out to already exist somewhere in the network — dropped to near zero. The finance team recovered a meaningful chunk of what had been recorded as shrinkage, because it was never lost stock; it was simply invisible stock. The transfer-recommendation engine now handles roughly 200 inter-location transfers a month, almost all of them without a human making a judgment call first.
You do not always need to rip out the systems that are causing the pain. Sometimes the fix is a data engineering layer that forces forty-three inconsistent truths to agree with each other. Unifying the data is often cheaper, faster, and less disruptive than unifying the software underneath it.