How goods move

Procurement to final sale, as five positions and four gates. A unit sits at exactly one position; every hop is an event a named person confirmed.
Screen map · Sep 2026
How to read it

This is the map the other screens sit on. The four cards in the middle row are clickable — each one opens the screen where that gate is operated. If you only read one page before the demo, read this one.

Supplier
12
Purchase orders placed and not yet fully received.
Not our stock. It is a promise with a lead time, and the lead time is usually wrong.
Warehouse
4,281
Units at 2 distribution centres, in numbered bins.
Held here, allocated to a run, or quarantined after a failed check — three states, one place.
In transit
268
On a van. Left the warehouse, not yet at a store.
Its own position, on purpose. Without it, stock on the road is either double-counted or invisible.
Store
1,904
On the floor at 9 stores, each counted on its own.
A till sells from its own store's figure. A store never draws down the warehouse directly.
Customer
412
Baskets today. The goods have left the building.
Reversible only as a return — a new record, never an edit of the sale.

The four gates

Each one is a screen. Click a card to open it.

What actually goes wrong

Each gate has one failure the design has to answer, or the ledger drifts and nobody notices until a count.
Gate 1 · Short or damaged delivery
Damaged goods go to quarantine and need a rejection before a write-off. A silent write-off hides both a loss and a supplier problem.
Gate 2 · Over-allocation
The warehouse balance falls as cells are filled, so a run that would empty a centre is visible while it is being typed, not after dispatch.
Gate 3 · Sent ≠ arrived
The difference is raised as a discrepancy against the run and never absorbed. Two locations disagreeing is a fact, not a rounding error.
Gate 4 · The till is offline
Sales queue locally and replay in order. Cash only — a card leg needs an authorisation nobody can fake, and the screen says so.
The rule underneath

Every figure on every screen is the sum of its movements. Nothing in this system sets a stock level directly — not receiving, not a transfer, not a correction. A miscount is fixed by an adjustment that carries its own reason and author, which is why the warehouse and the shop can disagree out loud instead of quietly. It is also why a sale can complete with no network: in a shop the goods leave with the customer at the moment of sale, so the record is describing what already happened rather than granting permission for it.