Reunidev

Blog

The shelf is empty, the system says 12: spotting out-of-stocks from sales

The store system shows twelve packs on a shelf that is empty. As long as that number stays above the reorder point, no order goes out, and the gap can last for weeks. Sales are the giveaway: an item that sold every day stops selling. Someone then has to go and look, and either refill the shelf or correct the stock record, or the alert will come back.

· The founder

The article in two 30-second videos

Episode 1 · 12 in stock, 0 on the shelf (22 s)
Episode 2 · Sales give it away (24 s)
Read the text of both videos

Episode 1

The system shows twelve packs of coffee, and the shelf is empty. The reorder point is six, so no order goes out. Those twelve packs do not exist: the case booked at receiving never arrived. The system sees nothing wrong: this is phantom inventory. The shelf stays empty until someone walks by. How do you spot it without going there? Episode 2.

Episode 2

This coffee sells four times a day, and nothing for two days. The system shows twelve in stock, but sales point to an empty shelf. A slow seller can go a week without a sale; a fast one cannot. Check the shelf, then the backroom. If the record is right, refill; if it is wrong, correct it, and the order goes out again.

Twelve packs nobody can find

Tuesday morning, grocery aisle. The store system shows twelve packs of ground coffee. The reorder point for this item is six: while the recorded stock stays above it, no order is placed. The shelf has been empty since Saturday night.

The twelve packs do not exist. A case was received into the system without being checked, and it never came off the truck. As far as the system knows, the case is in the store, and it will stay there until someone goes to check.

The system does what it was told: it does not reorder a product it believes it has enough of. A 2008 guide to retail out-of-stocks, written by two researchers, describes the same chain of events: the product is not reordered, and the situation goes on "until a physical check of the shelf shows the item to be OOS".

The system's stock is a calculation

It starts from the last physical count, adds deliveries, and subtracts sales and recorded losses. Anything that leaves the store without going through one of those lines opens a gap between the number and the shelf.

A broken jar goes in the trash without being written off, an item is stolen, a short delivery is received as complete, a product stays in the backroom or ends up in two places. Two yogurt flavors at the same price sometimes ring up under the same code: one runs out on the shelf while the system thinks it is selling the other, whose stock ends up below zero. Each error is small, but they add up, and a thesis written at MIT showed that a small, unrecorded stock loss, accumulated over time, is enough to disrupt replenishment and cause severe out-of-stocks.

A study published in 2008 compared nearly 370,000 stock records, across 37 stores of a single retailer, with what was actually in the stores: 65% were inaccurate.

Recorded stock
The quantity the system believes the store holds. Also called book stock or perpetual inventory.
Reorder point
The stock level below which the system suggests or places a new order.
Phantom inventory
Stock the system believes the store holds, which is nowhere in the store: not on the shelf, not in the backroom.

Why nobody gets a warning

An ordinary out-of-stock shows up in the system: stock drops below the reorder point, an order goes out, the shelf is refilled. With phantom inventory, the screen shows nothing unusual: no order goes out and the shelf stays empty.

Shoppers notice. In the 2002 international study summarized in the 2008 guide, 8.3% of items were missing from the shelf on average. Three quarters of the causes lay in the store itself, and nearly a third of the missed purchases went to another store.

Two signals that disagree Recorded stock shows 12 packs, above the reorder point of 6, so no order goes out. Sales, usually 4 a day, have been zero for two days. The two signals disagree: this is probably phantom inventory, and only the shelf can settle it. What the stock record says recorded stock: 12 reorder point: 6 12 is above 6, so no order goes out What the sales say usually: 4 a day last two days: 0 a sudden stop, on an item that sells every day Likely phantom inventory: the two signals disagree only the shelf can settle it
The stock record says all is well; the sales say otherwise. The system only listens to the first signal.

Spotting the gap from sales

Sales recorded at the checkout supply the missing clue. An item that sells four times a day and has not sold for two days is probably no longer on the shelf. The information is already in the sales data, updated every day, at no extra cost.

To work out what is normal, one simple method looks at the same weekday over the past few weeks: an item that sold on almost every Tuesday is expected on Tuesday. If it then goes days without a sale, it is flagged. The weekday matters because a Tuesday does not look like a Saturday; published models of sales-based detection take it into account, along with holidays, month and price.

Nothing stops a store from showing that alert on the electronic shelf label, next to the recorded stock: twelve in stock, no sales. The alert and the reorder are two separate calculations, which is why the contradiction can sit on a label while nothing gets ordered.

Slow sellers

If sales arrive at random, an item that sells twice a day on average will go a whole day without a sale about one time in seven, and two days in a row about one time in fifty. An item that sells once a week has better than a one-in-three chance of going a full week without a sale while nothing is missing.

So the waiting time should depend on how fast the item sells: short for fast sellers, longer for slow ones. For the slowest, it is better to draw no conclusion at all. The 2008 guide says as much: sales-based detection does not work well for items that sell slowly.

The waiting time depends on how fast an item sells An item selling 20 a day: one day without a sale is enough to raise an alert; by chance, this almost never happens. An item selling 2 a day: two days without a sale call for a check; by chance, this happens about one time in fifty. An item selling once a week: a week without a sale proves nothing; by chance, this happens more than one time in three. Fast seller 20 sales a day 1 day without a sale: alert by chance: almost never Steady seller 2 sales a day 2 days without a sale: check it by chance: about 1 time in 50 Slow seller 1 sale a week 1 week without a sale: proves nothing by chance: more than 1 time in 3
The faster an item sells, the less normal a silence is. The frequencies assume sales arrive at random.

How many alerts are right

A study published in 2019 tested a sales-based detection model against daily visual checks of the shelves in a hypermarket chain. The model caught 63% of out-of-stocks, with a false alert rate of about 16%. Some checks will therefore be wasted. In discussions with another research team, store managers said that a tool that is right half the time would still be worth having: it runs every day, on every item, at almost no cost.

The daily list

The alert takes the form of a list per aisle, sorted by estimated loss and short enough to be cleared in one walk of the aisles, during quiet hours, with the aisles split between several people.

Grocery aisle · Tuesday alerts
Item                 Recorded  Days with   Sales  Price   Loss
                        stock   no sale    /day           /day
Ground coffee 250 g        12         2     4.1    3.20   €13
Liquid detergent 1.5 L      5         4     0.9    7.90    €7
Chocolate cookies           9         2     3.0    1.80    €5
Tomato sauce 400 g          4         3     2.3    1.45    €3
Recorded stock
What the system believes. The twelve coffee packs are the ones from the start of this article; their sales, 4.1 a day on average, are rounded to 4 in the story.
Days with no sale
Consecutive days without a single sale, counted back from yesterday.
Sales /day
Average sales for one day, worked out over several months.
Loss /day
Price times average daily sales. It estimates the sales lost for each day the shelf stays empty; it is not an accounting figure.
Simplified extract, made-up data. The detergent only appears after four days without a sale: it sells more slowly than the coffee.

Go and look, then refill or correct

The list does not say why the item is missing. Theft, breakage, wrong location, a case in the backroom, a short delivery: in the sales data, they all look the same, and only a visit to the shelf tells them apart.

The check always follows the same order: the shelf first, then the backroom. Count what is actually there, note the cause, then choose between two actions.

If the stock record is right, the product is somewhere: a case is waiting in the backroom, or the item was moved to an end-cap display. Refilling the shelf is enough.

If the stock record is wrong, it has to be corrected. The coffee from the start of this article goes from twelve to zero in the system, the stock drops below the reorder point, and the order goes out at the next run. If staff only refill the shelf with a case ordered by hand, the record stays wrong and the same alert is back a week later.

The checking loop One, spot the item on the daily list. Two, check the shelf, then the backroom. Three, count and note the cause. If the stock record is right, refill the shelf. If the stock record is wrong, correct it, and the order goes out again. Four, the next day, mark each alert as resolved, persistent or new, then start again. 1. Spot the daily list 2. Check shelf, then backroom 3. Count and note the cause Record is right refill the shelf a case was in the backroom Record is wrong correct the stock the order goes out again 4. The next day alert resolved, persistent or new
A count only helps once it is back in the system. A wrong record that is not corrected brings the alert back.

The next day, the new list is compared with the previous one: each alert is resolved, persistent or new. An alert that persists after a check points to a correction that was never entered, or to a cause that keeps coming back. A case found in the backroom three weeks in a row is a shelf-filling problem, not a stock record problem.

Counting only flagged items costs less than a full stock count and goes where errors are likely. The 2008 guide describes a retailer that stopped counting at random and counted only suspect items: zero or negative stock, unusually high stock, gaps seen on the shelf, items at the end of a promotion. Across twenty stores and five months, the share of accurate records rose from 45% to 53%, with 20% fewer counts. The same retailer had also found its main source of errors: products kept in more than one place in the store.

What sales cannot tell you

After a promotion, sales drop back while the shelf is full. An item moved to an end-cap sells somewhere other than where staff look for it. A new product has no habits yet, so there is no normal. A price rise lowers sales without any out-of-stock. A holiday or a closure skews the comparison with the same weekday in earlier weeks.

Finally, when sales are zero and the recorded stock is zero too, the problem lies upstream: an order that went out late, arrived short or was never placed. The fix is to compare what was ordered with what was received, item by item.

Where to start

One aisle is enough to start: its daily list, one check during quiet hours, and a simple rule that any gap found during a count is entered the same day. Stock errors will keep appearing, but they will no longer sit in the system for weeks.

Further reading

The items, quantities and prices in the examples are made up.