Lessons · Lesson 2 of 3
The error that nets to zero
Measure stock accuracy at the level a replenishment engine actually reads, separate gross error from net error, and price four weeks of the difference across a whole estate.
Lesson 2 of 3 · 35 min
The number that was reported, and the number that mattered
A shop can count its shelves and find the total exactly right. Its stock record can still be wrong everywhere it matters. That happens whenever two errors point in opposite directions and cancel each other. One size is recorded as having more than it has. Another is recorded as having less. This lesson measures the same night's counting two ways, and compares the answers.
At the end of week 10, Sunday 8 November 2026, Netherby counted NB-4180 in all 62 shops. Ottoline Tolhurst wanted one thing from it. Not the total, which she could have guessed, but the total by size, by door.
The style is stocked in six age sizes across 62 shops, so it occupies 372 store-and-size positions. A position is one size in one shop. That is the grain the replenishment engine works at. It does not send "packs" to "Rowanbank". It sends 3 packs of 6 to 9 months to Rowanbank, and to decide that it reads one number: the book stock of that size at that door.
Two results came back from the same count.
- At style level, the book said 2,914 packs across the estate and the count found 2,888. A gap of 26 packs, or 0.9%. Stock accuracy 99.1%. This is the figure that went in the board pack.
- At store-and-size level, the book matched the count exactly in 266 of the 372 positions. Accuracy 71.5%.
Both are honest measurements of the same night's work. They differ by a factor that decides whether a customer finds a bodysuit.
One door, opened up
Start with Rowanbank from lesson 1, now broken out by size. The book said 41 packs and the count found 36. That gap of five is what lesson 1 traced to a short-shipped carton, a theft and an unkeyed write-off.
| Age size | Book | Counted | Book minus counted |
|---|---|---|---|
| 0 to 3 months | 3 | 2 | 1 over |
| 3 to 6 months | 7 | 4 | 3 over |
| 6 to 9 months | 2 | 5 | 3 under |
| 9 to 12 months | 4 | 3 | 1 over |
| 12 to 18 months | 15 | 13 | 2 over |
| 18 to 24 months | 10 | 9 | 1 over |
| Total | 41 | 36 | 5 over |
The style-level answer is five. Now add up the six size rows without regard to sign. The answer is eleven: eight packs the book has too many of, and three it has too few of. On a book of 41 packs, that is a net error of 12.2% and a gross error of 26.8%.
The five that vanished are the shrink. The extra six are something else entirely, and Barnaby found them in ten minutes of till journal.
On the Saturday of week 8 a colleague sold a customer three 3 to 6 months packs during the after-school rush. He scanned the 6 to 9 months barcode each time. Three packs left the shop, and three of the wrong size came off the book. The style total is untouched, which is why it does not appear in the five. And two sizes are now wrong in opposite directions by three packs each.
Nothing was lost. Nothing was stolen. Every pack is accounted for, and two of six sizes are wrong.
What the wrong number then does
Work through what the engine sees on Monday morning at Rowanbank.
- 3 to 6 months. Book says 7, the shop has 4, and the shelf target for this size is 4. Book is above target, so nothing ships. The shop is at target on paper. It is two weeks from empty in fact, with no top-up behind it. This size is 16% of demand.
- 6 to 9 months. Book says 2, the shop has 5, target is 5. Book is below target, so three packs ship. They go into the one size that already had a fortnight's cover. They will still be there in December.
One mis-scan, two sizes, and the engine made both of them worse than doing nothing at all. That is the property worth learning. An inaccurate stock number does not make replenishment less effective. It makes replenishment actively harmful. The engine acts with confidence on a figure that is wrong, and it acts again every single week until somebody counts.
The same measurement across 62 shops
Now the estate. Of the 372 positions, 106 were wrong: 61 held less than the book claimed, and 45 held more.
| Measure | Packs | As a share of book |
|---|---|---|
| Book stock across the estate | 2,914 | |
| Counted | 2,888 | |
| Overstated positions, 61 of them | 159 over | |
| Understated positions, 45 of them | 133 under | |
| Gross error | 292 | 10.0% |
| Net error | 26 | 0.9% |
Ten per cent of the book is in the wrong place. Nine tenths of that wrongness cancels out before anybody sees it. The board pack's 99.1% is not a lie. It answers the question "how much stock have we lost", which is a finance question. It is then presented as though it answered "can our shops sell what we own", which is a trading question.
Two honest caveats on the 71.5%, because an exact-match test is a harsh one. Allow a tolerance of one pack and accuracy rises to 85.5%. But the average position on this style holds 7.8 packs and sells about 1.7 a week. So one pack of tolerance is roughly 0.6 weeks of that position's sales. A size that runs to zero six-tenths of a week early is a size that was out on the Saturday. Choose the tolerance deliberately, in weeks of cover rather than in units, and say which you used.
Four weeks of it, priced
Ottoline costed the window between the week 10 count and the correction. She had to make one measurement rather than one assumption. Of the 159 overstated packs, how many sat on positions that actually emptied on the floor? An overstatement only costs a sale where the shelf ran out. Her answer, from the daily size-level sales file: 112 of the 159.
| Packs | Value | |
|---|---|---|
| Sales lost to overstated positions, at retail | 112 | GBP 1,568.00 |
| Margin foregone, at 58.0% | GBP 909.44 | |
| Terminal markdown on packs pushed into doors that did not need them | 84 | GBP 420.00 |
| Unnecessary pick and despatch, at GBP 0.34 a pack | 133 | GBP 45.22 |
| Cost of the four weeks | GBP 1,374.66 |
Now set that beside the shrink on the same style over the same four weeks. Twenty-six packs at GBP 5.88 landed cost is GBP 152.88.
The accuracy cost is nine times the shrink cost, and only the shrink cost has an account to sit in. A pack that was stolen appears in the year-end result as a stock loss. A sale that did not happen because the engine read a wrong number appears nowhere at all. There is no journal entry for a customer who left. It is invisible to the finance system by construction, and that is why it survives.
What to actually measure
Four rules Ottoline wrote into Netherby's stock policy after this count. All four follow from the arithmetic above rather than from an opinion.
- Measure accuracy at the grain your decisions are made at. If the engine reads store-and-size, a style-level accuracy figure is not a coarser version of the truth. It is a different quantity.
- Report gross and net together, always. One number without the other is misleading in a predictable direction.
- State your tolerance in weeks of cover, not in units, so it means the same thing on a position selling one a week and one selling twenty.
- Age your in-transit balance the way you would age a debtor, and put anything over a month on somebody's worklist.
Check yourselfYour chain-level stock accuracy for a style is 99.1% and your store-and-size accuracy is 71.5%. Which number should drive a decision to buy more of it, and why?Show the answer
Neither, on its own. But they lead to opposite conclusions, so you must know which question you are asking. The 99.1% says the company has not lost much stock. That is a valuation answer, and it is correctly reassuring for the balance sheet. The 71.5% says roughly three positions in ten hold a quantity the engine will act on wrongly. So the sales you have observed are held down by an unknown amount, and the sell-through you are about to project from is not the style's true rate. Buying more against a suppressed sell-through under-buys a good style. Buying more of a style whose real problem is that its stock is in the wrong doors buys a second copy of the same problem. Fix the positions first, measure four clean weeks, then decide.
Prompt · Measure my stock accuracy at the grain my decisions are made at
After a count, when you have a chain-level accuracy figure and want to know how much it is hiding before you report it.
Act as a retail inventory analyst. I have just counted one style across my estate and I want the measurement done properly, not summarised. Here is the count, one row per store per size: [PASTE - STORE, SIZE, BOOK UNITS, COUNTED UNITS]. My retail price is [AMOUNT], my landed cost is [AMOUNT], my weekly sales for this style by store and size are [PASTE OR SAY I ONLY HAVE STORE TOTALS], and my replenishment rule is [DESCRIBE]. Do the following, in order, and show the arithmetic. First, give me accuracy at style level for the whole estate: book total, counted total, net gap, and the gap as a percentage of book. Second, give me accuracy at store-and-size level: how many positions exist, how many matched exactly, and that as a percentage. Third, separate the error into gross and net: total units overstated, total units understated, gross as the sum of the two and net as the difference. State both as a percentage of book. Do not report only the net figure. Fourth, split the wrong positions into those the engine will UNDER-supply because the book is too high, and those it will OVER-supply because the book is too low. Say what each group costs me: lost sales at retail for the first, and stock in the wrong door plus its likely markdown for the second. Fifth, recompute the store-and-size accuracy with a tolerance of one unit. Then tell me what one unit is worth in WEEKS OF COVER at the average position, so I can judge whether that tolerance is honest. Sixth, list the ten positions with the largest absolute error, and for each one say whether the book is over or under. Do not smooth, do not net one store against another, and do not tell me my accuracy is good because the total reconciles.
AI can make mistakes — check anything you act on.