Full Case Record · Multi-site retail · Northern Europe
From detection to execution, and to cash
An in-aisle robot already detected the problems on the shop floor every night. Nobody was resolving them: the alerts arrived without order, without an owner and without a value attached. The work here was the layer that closes that circuit — every alert becomes a task with a price, a rank and a named owner, and a record of what was actually done.
Client identity and robotics vendor withheld. Method, figure set, assumptions and open gaps published in full; no figure is rounded.
- 317 of 318
- assigned tasks resolved
- 3.1x
- value of a selected task vs. a random alert
- 9.4%
- of exposed value captured from 3% of alerts

The situation
Detection was not the problem. An in-aisle robot already walked the floor every night and identified two things reliably: product missing from the shelf, and price wrongly labelled. What arrived the next morning was an undifferentiated list. 100% of alerts repeated every night for as long as the underlying problem stayed there, so the list never shortened and reading it stopped being worth anyone's time. None of them carried the impact in money, so a missing high-margin line and a mislabelled slow mover weighed exactly the same. And 0% of the actions taken against them was recorded, so nobody could measure what had been done, defend a decision, or show a result to a manager or an auditor. The chain was paying for detection it had already installed and capturing almost none of the margin that detection exposed. Detection remains the robotics vendor's; what was built here is everything that happens after the alert.
What we deployed
- Every alert converted into a task carrying an owner, a rank and a value in dollars — which is what stops it being an infinite list and starts it being work.
- A value in dollars attached to each alert from the store's own prices and margins, which is what makes ranking possible at all — and what is absent in the stores where those files have never been loaded.
- A replenisher queue on tablet, ordered from the task that recovers most margin downwards, closed in a single tap.
- A record of who acted, when, and what was done — the artefact that can be shown to a manager, a client or an auditor, which did not exist before.
- Twelve rounds of improvement run with real users, with the unfavourable numbers kept in rather than filtered out.
What it produced
- 317 of 318
- assigned tasks resolved
- 3.1x
- value of a selected task vs. a random alert
- 9.4%
- of exposed value captured from 3% of alerts
- 3% of alerts captured 9.4% of the value: the average executed task was 3.1x more valuable than a random alert. Measured on one store over 18 days of operation.
- 99.7% execution — 317 of 318 assigned tasks resolved.
- 37% utilisation: 10 of 27 available days worked. The ceiling in the pilot was set by the routine, not by the product.
- Per-store monthly ladder: US$ 1,967 today (10 of 27 days) → US$ 8,976 with the same team every day (+294%) → US$ 12,987 with one more person on half shift (+560%) → US$ 21,566 with a dedicated shift (+996%). Each rung is an operating decision, not a development.
- First-year cash of US$ 86,872 per store, accumulated as a ramp and not as a flat run rate: US$ 3,662/month at ≈M2, US$ 6,074/month at ≈M6, US$ 11,379/month at ≈M11–M12 — a run rate of US$ 136,548/year/store by month 12.
- US$ 995,940/year/store of exposed margin sitting in alerts nobody was prioritising, of which 2.4% was being captured.
- Across the 42-store chain: US$ 41.8M/year of exposed margin — the ceiling, not the promise — US$ 3.6M of year-one cash and a US$ 5.7M year-two run rate. Published as a range of US$ 2.6M to US$ 3.6M, because the pilot's second store showed 56% less exposed margin than the first.
US$ / store / month
Show the figures as a table
| Scenario | Value (US$ / store / month) | Note |
|---|---|---|
| Today | 1,967 | 10 of 27 days |
| Same team, every day | 8,976 | — |
| One more person, half shift | 12,987 | — |
| Dedicated shift | 21,566 | — |
Show the figures as a table
| Row | Value (%) | Note |
|---|---|---|
| Assigned tasks resolved | 99.7% | 317 of 318 |
| Available days worked | 37.0% | 10 of 27 available days |
What we assumed
- 50% of recovered margin converts into real sale. At 25% the case still stands, which is why the assumption is stated rather than buried.
- 5 minutes of search avoided per task. That is the whole basis of the released-hours component.
- 27 scan days per month, and a chain-average store that resembles the pilot's. The second store already tells us the second half of that assumption is the weak one.
What we did not measure
- The action is not yet confirmed at task close. Until it is, the impact is a well-founded calculation and not hard data — and that is the single change that would convert it.
- 75,504 alerts a month cannot be prioritised at all in the stores that have no prices and margins loaded. Without that file there is no value to rank by, so those stores fall back to the undifferentiated list the system was built to replace. It is a file to load, not a project to build.
- The daily routine is still not closed. It is worth +294% and requires no development, which makes it the largest unbooked figure in the case.
What this means on an EPC program
The engine that ranks nightly shop-floor alerts by the money each one recovers is the engine that ranks an open RFI backlog by the money each item exposes on an EPC program.
