Retail · 2024
Inventory API and operator console
Brought stock accuracy across eleven branches from roughly 82% to above 98%.
- 82% → 98%
- Stock accuracy
- 11
- Branches on one source of truth
- Quarterly → daily
- Discrepancy detection
Structural placeholder — replace with a real engagement before publishing.
The challenge
Each branch tracked stock separately. Head office numbers were a week old and wrong, so purchasing was guesswork and popular lines ran out while slow stock accumulated.
What discovery found
- Branches kept private spreadsheets because they distrusted the central figure
- Transfers between branches were recorded at one end only
- Stock counts happened quarterly and were reconciled by adjustment
- No alerting existed for lines about to run out
The approach
A single stock API as the source of truth, with every movement — sale, delivery, transfer, write-off — recorded as an event. The operator console shows live positions and flags discrepancies as they appear rather than at quarterly count.
Event-sourced stock ledger. Current position is a projection, so any historical state can be reconstructed and discrepancies traced to the movement that caused them.
ArchitectureWhat we built
- Central stock API with event history
- Branch transfer with two-sided confirmation
- Live stock console with discrepancy flags
- Reorder levels and alerts
- Cycle counting to replace quarterly stocktakes
- Purchasing reports by velocity
Security
Branch-scoped permissions, signed API access per terminal, and full attribution on every stock movement.
What went wrong
Opening balances were unreliable. We ran the new ledger alongside the old system for one full cycle and reconciled the difference before cutting over.
Why this section exists
Every project has one. A case study without it is a sales brochure.
The result
- 82% → 98%
- Stock accuracy
- 11
- Branches on one source of truth
- Quarterly → daily
- Discrepancy detection
Got a problem shaped like this?
Send a short brief. We reply within two working days and say plainly if we are not the right fit.
Start a project