Skip to content

Part 4 of 7 · Product recall tracer series ~5 min read

Tracing forward, and being honest about the guess

The forward trace is the part everybody pictures when they imagine this system, and it is the easiest part to build and the easiest to overstate. Half of what it produces is observed and half is inferred, and a report that does not separate the two is worth less than one that reports less.

Key takeaways

  • Stock on hand is observed. Units sold from a batch is usually inferred.
  • First-in-first-out is the inference. Name it on the report.
  • A scanned batch at the till replaces the inference with a fact.
  • Overlapping batches on one shelf are normal and break clean arithmetic.
  • Report a range when you have one, not a midpoint.

Two questions, two kinds of answer

The forward trace separating observed stock from inferred salesThree boxes across the top sit outside the AWS account. On the left, Trace scope: products, batches and dates. In the middle, Stock counts by site, as counted. On the right, Sales lines, holding date, site, quantity and sometimes a batch. Each connects to the AWS account container below, labelled the claim, counted, and inferred. Inside are three components. On hand, observed where the batch was scanned. Drawn down, inferred by first-in-first-out. And Two lists, labelled fact and inference. A note says the middle box is the only place a guess is made, and it is the box the whole report has to be honest about.AWS ACCOUNTTrace scopeproducts, batches,datesStock countsby site, ascountedSales linesdate, site, qty,sometimes batchOn handobserved wherebatch was scannedDrawn downinferred byfirst-in-first-outTwo lists, labelledfact andinferencethe claimcountedinferredThe middle box is the only place a guess is made, and it is the box the whole report has to be honest about.
Fig 1. Three inputs, two answers, one of which is an estimate. Keeping them in separate boxes on the diagram is the same discipline as keeping them in separate columns on the report.
  • Compute
  • App integration
  • Machine learning
  • Analytics

Why first-in-first-out is only an assumption

The register knows two thousand one hundred and eighty units of the affected batches arrived between the fourth and the eleventh, and it knows how many units of that line sold each day since. It does not know that the units which sold on the twelfth were the ones that arrived on the fourth. It assumes it, because stock rotation is supposed to work that way and mostly does.

Mostly is the operative word. A case pushed to the back of a shelf, a second delivery stacked in front of the first, a site that received from two depots in the same week — each of these breaks the assumption in a direction the arithmetic cannot see. The result is not wrong so much as unfalsifiable, and the honest response is a range.

Where the guess disappears

Four levels of batch traceability from none to scanned at the tillA horizontal row of four boxes joined by arrows. No batch capture means the whole line is in scope. Batch at goods-in bounds the window and infers by first-in-first-out. Batch at pick is exact for online and wholesale orders. Batch at till is exact for every sale. A note says most businesses can reach the second level in a week and the third in a month, while the fourth needs the code on a barcode, which is somebody else's decision.FOUR LEVELS OF TRACEABILITY, LEFT TO RIGHTNo batch capturewhole line isin scopeBatch at goods-inwindow bounded,FIFO inferredBatch at pickexact for onlineand wholesaleBatch at tillexact for everysaleMost businesses can reach the second in a week and the third in a month. The fourth needs the code on a barcode, which is somebody else's decision.
Fig 2. Each step right replaces an inference with an observation, and the second step is the one that moves a recall from the whole line to a bounded window.
  • Machine learning
  • Security & identity
  • Analytics

Wholesale is easy and it matters most

If you sold cases on to another business, that transaction has a name, an address and an order number attached to it, and picking is usually done from a specific pallet. This is the one-step-forward half of the legal standard and it is the half that is genuinely achievable, because your customer is a company rather than a member of the public.

It also matters more, because those cases were broken down and sold again. One wholesale line in the affected batches can represent more end consumers than every direct sale you made that week, which is why the trace ranks by units rather than by lines.

What each row on the report has to carry

  • Observed or inferred. Never blend them into one count.
  • The basis. Scanned at till, picked from pallet, or FIFO estimate.
  • A range where there is one. Between 640 and 770 beats a confident 704.
  • Site and date. Because the quarantine is physical and somebody has to walk to it.
  • The query that produced it. Re-runnable, months later, unchanged.

Quarantine is a human action

The system marks sixty-one units as in scope at three sites. It does not move them, because it cannot, and a stock system that decrements a balance without anybody touching the shelf produces the worst possible outcome: a record saying the affected stock is isolated and a shelf on which it is still for sale.

So the quarantine list is a task with a person and a timestamp against it. Counted, moved, confirmed. The gap between the list being produced and the last site confirming is itself a number worth keeping, because it is the honest measure of how long you were still selling it.

All posts