Lessons · Lesson 3 of 3
A number is not a reason
Capture at the moment stock moves what a discrepancy will need months later, and govern the act of changing a stock figure so the store stays evidence of something.
Lesson 3 of 3 · 40 min
Finding it and understanding it are different jobs
A count tells you that a shelf and a book disagree. It cannot tell you why. Nothing you do at the shelf afterwards will recover the reason, because the reason happened weeks earlier. Somebody moved something and wrote down less than they should have. This lesson is about what has to be captured at that moment, and about the act that closes a difference.
What a count hands you, and what it does not
Course 23.1 drew the line between a discrepancy, which is a difference, and an error, which is a difference whose cause is known. It also made the point that adjusting without finding the cause hides the mechanism rather than fixing it.
This lesson starts one step earlier, at the thing that decides whether a cause can be found at all.
By the time Nou Ratanak is looking at a difference, the only evidence that exists is what somebody recorded at the moment the stock moved. There is nothing else. The shelf does not remember. The person may not. And a difference discovered on a four-week cycle is on average two weeks old before anybody looks at it. Explainability is not a property of the investigation. It is a property of the movement record, decided weeks before the investigation starts.
Eight fields, and what each one is for
A movement record at Sambok carries eight fields. Each one answers exactly one question that an investigation will ask, and dropping one removes that question permanently.
| Field | The question it answers | What its absence costs |
|---|---|---|
| Item code | What moved | Nothing can be reconstructed at all |
| Quantity | How much | The difference cannot be sized |
| Unit of measure | How much of what | A roll and a metre become the same number |
| From-location | Where it came from | A move and a receipt look identical |
| To-location | Where it went | Nobody can go and look |
| Timestamp | When | Two movements cannot be put in order, so neither can be blamed |
| Person | Who | Nobody can be asked |
| Reference document | Why it happened | The movement cannot be joined to a cut, a purchase order or a shipment |
Six of the eight were mandatory in Sambok's system in 2027. Two were not, and the reason is the reason it always is: they slowed somebody down.
- To-location on a putaway, which is the act of placing goods into a storage bay. Skipped on 22% of putaways.
- Reference document on an issue, meaning the paper that says why the material left the store. Skipped on 34% of issues.
What a missing field costs, measured
Nou Ratanak traced every one of 2027's 673 discrepancies back through the movement log, and sorted them by what the chain behind them was missing. The three groups below do not overlap: a chain missing both fields is counted in the last row.
| The chain behind the discrepancy | Discrepancies | Cause found | Rate |
|---|---|---|---|
| Complete — all eight fields on every movement | 312 | 281 | 90.1% |
| One or more issues with no reference document | 214 | 97 | 45.3% |
| One or more putaways with no to-location | 147 | 41 | 27.9% |
| Total | 673 | 419 | 62.3% |
A complete chain gets explained nine times out of ten. A chain missing its to-location gets explained fewer than three times in ten. That is a gap of 62.2 percentage points, created by a field somebody skipped to save a few seconds.
Now put a value on each field, which is the calculation nobody does:
reference document made mandatory:
214 discrepancies x (0.901 - 0.453) = 96 more causes found a year
to-location made mandatory:
147 discrepancies x (0.901 - 0.279) = 91 more causes found a yearThe result is not the one to expect, and it is worth sitting with. The to-location looks far more damaging, because its group is explained at 27.9% against 45.3%. So the instinct is to fix it first. But it is skipped less often, so there are fewer discrepancies behind it, and the two fields come out 96 against 91. That is a difference of 5.5% between two figures, each built on a few hundred events and two rates measured to one decimal place. On this evidence the two cannot be ranked. The correct conclusion is not "fix the reference document first" but "there is no order here, so fix both."
The instinct was not wrong about the severity. It was wrong about the arithmetic. Severity is only half of it, and frequency is the other half. That is the same shape of mistake the value ranking makes in lesson 2.
What making both mandatory costs
Measured at Sambok, with a stopwatch, on its own people:
to-location scan: 11 s x 29,600 putaways = 325,600 s = 90.444 h x 1.42 = USD 128.43
reference-document scan: 7 s x 41,800 issues = 292,600 s = 81.278 h x 1.42 = USD 115.41
total = USD 243.84USD 243.84 a year for 187 more explained discrepancies. One dollar and thirty cents each.
And here is the check that the arithmetic is not fooling itself. 419 plus 187 is 606 of 673, which is 90.0%, the rate the complete-chain group already achieves. It had to come out there, because the calculation assumes the repaired chains behave like the complete ones. Getting the number you assumed is not a confirmation, and saying so is the difference between a model and a claim.
And what is an explanation worth?
Here the honest answer is unknown. This is the point where a course that wanted to sound confident would multiply 187 by something.
An explanation is worth whatever the change it causes is worth, and most explanations cause no change. Sambok can trace exactly one. The missing to-location on the interlining rack accounted for 11 of the year's discrepancies. Relabelling the rack and making the field mandatory ended them. And 3 of those 11 had been consequential at USD 1,540 each, so USD 4,620 did not recur.
That is one case. The other 176 explanations produced no traceable change. That does not mean they were worth nothing. It means Sambok cannot show what they were worth. Do not add them up. A store that reports the USD 4,620 and marks the rest unknown is telling the truth. A store that reports USD 4,620 times whatever multiple makes the case is not.
Changing the book is an accounting act
Now the second half, and the one that gets treated as clerical.
When a difference is confirmed, somebody changes the stock figure. In the store that reads as correcting a record. In the ledger it is a posting: stock goes down, a cost account goes up, and that cost lands somewhere with a name on it.
At Sambok a write-down, meaning an entry that reduces the stock figure, is charged to the order the material was bought for if the order is still open. If the order has closed, it goes to a general materials-variance account, which is a catch-all cost account belonging to no order.
| USD | |
|---|---|
| Write-downs | 34,916 |
| Write-ups | 6,392 |
| Gross adjustment | 41,308 |
| Net adjustment | 28,524 |
| Material cost of sales for the year | 8,940,000 |
| Net adjustment as a share of it | 0.32% |
| Gross adjustment as a share of it | 0.46% |
Three tenths of one per cent. Every controller who has ever seen that ratio has moved on to the next page, and moving on is a mistake for two separate reasons.
More than a third of it was charged to nobody
Of the USD 34,916 of write-downs, USD 21,842 went to an open order. USD 13,074, which is 37.4%, went to the variance account, because by the time the difference was found the order had shipped and closed.
The variance account has no owner. No merchandiser reads it, no buyer is affected by it, and no margin is damaged by it. So nothing about a posting to it prompts a question. More than a third of everything Sambok wrote down in 2027 went somewhere structurally incapable of raising an eyebrow.
And here is the part that joins this lesson to the first one. How much can be attributed at all is decided by the counting interval. Material at Sambok is issued a median of 7.4 weeks before the order ships, and an order is closed for costing 2.0 weeks after that. So the consuming order is typically open for about 9.4 weeks after the stock moves. A difference discovered inside that window has an owner. One discovered outside it does not.
A discrepancy is found on average halfway through the counting interval, so the discovery lag runs from nothing up to the whole interval:
| Class | Interval | Share of discoveries inside the 9.4-week window | Write-down, USD | Attributable, USD |
|---|---|---|---|---|
| A | 4 weeks | 100.0% | 12,880 | 12,880.00 |
| B | 13 weeks | 72.3% | 9,240 | 6,680.52 |
| C | 26 weeks | 36.2% | 12,796 | 4,632.15 |
| Total | 34,916 | 24,192.67 |
The model says 69.3% of the year's write-downs should have been attributable. The store actually attributed 62.6%. The model over-predicts by 6.7 percentage points. The most likely reason is that the 9.4 weeks is a median rather than a fixed window, so a good share of orders close sooner than it. The gap is worth reporting rather than smoothing: a model that fits its own data exactly usually had its parameters chosen to make it.
And the mechanism is actionable. Lesson 1's exposure target put class C on 21 weeks rather than 26. Do that, and the share of class C write-downs discovered inside the window rises from 36.2% to 9.4 / 21 = 44.8%:
12,796 x (0.448 - 0.362) = USD 1,100.46 of write-down that acquires an ownerThat is not a saving. The money is spent either way. It is evidence recovered: a thousand dollars of cost that lands on an order somebody is accountable for, instead of in a drawer nobody opens.
And where it lands moves a margin
Order NG-4409 shipped 62,000 trousers to Nipigon Outfitters.
| USD | |
|---|---|
| Selling value | 731,600 |
| Total cost as reported | 643,800 |
| Reported profit | 87,800 |
| Reported margin | 12.0% |
| Of the cost, stock adjustment charged to this order | 4,190 |
| Of that adjustment, with no cause found | 1,530 |
So 4.8% of the reported profit on NG-4409 is a stock adjustment, and 1.7% of it is a stock adjustment nobody can explain. That is uncomfortable, and it is not yet the problem.
The problem is the USD 13,074 in the variance account. That money belongs to real orders, and nobody knows which. Spread evenly across the 46 orders Sambok shipped in 2027 it would be USD 284.22 each. It is certainly not spread evenly: the largest single posting to it was USD 2,860. If that one had in fact belonged to NG-4409, the order's profit would be USD 84,940 and its margin 11.6% rather than 12.0%.
A margin that moves four tenths of a point depending on which drawer an unexplained difference was filed in is not a costing. It is an allocation wearing a decimal point.
Who may change a stock figure
Because an adjustment is a posting, the question of who may make one is a control question rather than a warehouse one. Prak Sokunthea set Sambok's scheme in 2027.
| Value of one adjustment, USD | Who may post it | What else is required |
|---|---|---|
| Up to 50.00 | Stores manager alone | A cause code, and the item appears on the monthly summary |
| 50.01 to 500.00 | Stores manager and inventory controller | A cause code and a supervised recount before posting |
| 500.01 to 5,000.00 | Financial controller | Recount, a written note, and the order it is charged to named |
| Above 5,000.00 | Financial controller and plant manager jointly | All of the above, and the buyer told if it changes a cost already shipped |
The sequence matters as much as the signatures, and it runs one way only: recount, then cause code, then authorise, then post, then name the order. Posting first and investigating afterwards never happens in any store, anywhere, because the moment the difference is gone from the screen the reason to look for it is gone too.
The cliff at fifty dollars
A threshold creates a reason to be just below it, and people find that reason without ever deciding to. Here is Sambok's 2027 adjustment log, counted in bands of five dollars either side of its first threshold.
| Band, USD | Adjustments posted |
|---|---|
| 35.00 to 39.99 | 51 |
| 40.00 to 44.99 | 58 |
| 45.00 to 49.99 | 63 |
| 50.00 to 54.99 | 9 |
| 55.00 to 59.99 | 11 |
| 60.00 to 64.99 | 8 |
Sixty-three against nine, a step of 7.0 times, across a boundary the physical world has never heard of. The three bands below are gently rising, 51, then 58, then 63. So the band immediately above should hold something near 65, and it holds 9.
A shelf does not know about fifty dollars. The size of a difference between a book and a shelf is set by what happened in the store, and nothing that happens in a store clusters at the value where a second signature becomes necessary. So something other than the physical world is deciding the value of these postings.
That is all it proves, and the restraint is the point. It does not prove splitting, it does not prove dishonesty, and it does not size anything. A difference genuinely worth USD 62 can become two postings of USD 31 for entirely innocent reasons: two locations, two days, two people, no intent at all.
Sambok opened 20 of the 63 and found 7 that were parts of one larger difference, posted in pieces on the same day for the same item. Seven of twenty is 35%. But the 20 were chosen because they had same-day repeats, so they are not a random sample and the 35% may not be carried across to the 63. Seven confirmed. The rest unknown, and it will stay unknown unless somebody opens the other 43.
The fix is not a lower threshold
Lowering the threshold moves the cliff. It does not remove it. Removing the threshold means every adjustment needs a second signature, which is unworkable and would be quietly ignored, and that is worse than a threshold.
What Sambok did costs nothing: all adjustments on one item on one day are added together before the threshold is applied. Splitting stops being forbidden and starts being pointless, because the two halves are summed before the rule is read.
A control that has to be policed is worse than one that cannot be gamed. This is worth generalising past stock adjustments. Whenever a rule has a number in it, ask what a reasonable person trying to get their job done would do just below that number, and then make that thing not work.
The recount that stops you correcting a store that was right
One rule remains, and it is the one most often dropped when a store is busy.
Of the 673 discrepancies raised in 2027, 71 vanished on supervised recount. The count had been wrong and the stock had been right. That is 10.5% of everything raised, and their combined value was USD 4,352.30.
The rule costs 673 recounts x 11 min = 7,403 min = 123.38 h x USD 1.42 = USD 175.20 a year.
Now read that pair carefully, because the obvious reading is wrong. USD 175.20 does not save USD 4,352.30. Posting those 71 adjustments would not have moved one dollar of anything. The money is not in the adjustment, it is in the stock, and the stock was already correct. What the store would have bought for its USD 4,352.30 of postings is 71 records made wrong in a store that was right about them. Those 71 wrong records would then have produced their own shortages, their own investigations and their own adjustments later.
So USD 4,352.30 is a value at risk of being mis-stated, not a loss avoided. What it would truly have cost is the second-generation damage, and Sambok cannot measure that. Unknown, and not zero. That is the only honest thing to write in that cell, and it is why the recount rule is kept on the strength of the mechanism rather than on the strength of a ratio.
Check yourselfA store's adjustment log shows every difference explained, every month, with a cause code on all of them and no unexplained line at all. What should that make you think?Show the answer
That the cause codes are a dropdown somebody has to clear before the screen will close. A cause is the outcome of an investigation, and investigations sometimes fail. Sambok found causes for 419 of 673 discrepancies, and the 254 it could not explain are the honest part of its log. A hundred per cent explanation rate is not evidence of a well-run store. It is evidence that the field is being filled rather than answered. The usual mechanism is a default value at the top of the list that gets picked when nobody knows. Two things are worth asking for. First, the distribution of the cause codes: if one code carries more than about half the entries, it is functioning as "unknown" with a respectable name on it. Second, whether the log distinguishes a cause found from a cause assumed. That is the distinction Sambok's separate unexplained line preserves and this store's log has destroyed. The store may well be as good as its log claims. It has simply thrown away the only evidence that would show it.
Check yourselfChan Sopheak proposes making all eight movement fields mandatory but asks whether the reference document could be captured later in the day, in a batch, rather than at the moment of the issue. What does this lesson say?Show the answer
It says no, and for a reason that is specific rather than dogmatic. Six of the eight fields describe the movement itself and could in principle be written down afterwards from a note. The reference document cannot, because it is the only field that records why the movement happened, and by the end of a day one person has issued to several cuts. Reconstructing which issue belonged to which cut is a guess, and a guessed reference is worse than a missing one. A missing field is honestly absent, while a guessed one is evidence that is wrong and looks right. The measured cost settles the rest of the argument: the scan is 7 seconds on 41,800 issues, USD 115.41 for the year, against 96 more explained discrepancies. Nothing that cheap should be batched to save time. The productive version of her question is a different one. It is whether the pick list can carry the reference as a barcode, so that capturing it is one scan rather than a typed entry. That is exactly how Sambok got the cost down to 7 seconds.
Prompt · Write adjustment rules that cannot be quietly gamed
Before setting who may change a stock figure, and any time an adjustment log looks suspiciously tidy.
Help me govern the act of changing a stock figure, and read my own adjustment log for what it is admitting. Start with the record, not the adjustment. List the fields my movement records should carry, and what each one lets an investigation reconstruct. Then ask me which of them are optional in my system today, and how often each optional one is actually skipped. Then ask me to sort last year's discrepancies into groups by what the movement chain behind them was missing, and how many in each group had a cause found. Compute the explainability rate per group. Then compute what making each optional field mandatory is worth, in additional causes found a year: the number of discrepancies in that group multiplied by the gap between its rate and the complete-chain rate. Warn me if the two answers come out close, because then the evidence does not rank them and I should fix both. Then cost the fix in seconds. Ask me how long the extra scan or entry takes, and how many movements of that type I do a year, and give me the annual labour cost against the additional explanations. Then refuse to multiply those explanations by a value. Tell me an explanation is worth whatever change it causes, ask me to name the ones that actually caused a change, and mark the rest unknown rather than assigning them an average. Then the accounting. Ask where a write-down is charged in my system when the consuming order is still open, and when it has closed, and what share of last year's write-downs went to each. Work out how long my orders stay open after the material moves, and show me how much of my write-down can be attributed at all at each of my counting intervals, because a difference found after the order closes has no owner. Then show me what shortening one interval would recover, and call it evidence recovered rather than money saved. Then the authority scheme. Propose value bands, who may post in each, and what else each band requires, with the sequence stated: recount, cause code, authorisation, posting, and the order named. Then test my existing log for threshold gaming. Count my adjustments in narrow value bands either side of each threshold, and show me the step. Tell me exactly what a step proves, which is that something other than the physical world is setting the values, and what it does not prove. Refuse to estimate how much splitting there is from a sample I chose because it looked suspicious. Then propose the fix that does not need policing: add all adjustments on one item on one day together before applying the threshold. One last rule. When I show you a recount rule that catches counts that were wrong rather than stock that was wrong, do not present the value of those adjustments as money saved. It is value at risk of being mis-stated, and the real cost of posting them is the second-generation errors they would have caused, which is unknown and is not zero.
AI can make mistakes — check anything you act on.