Skip to content

See a demo

30 minutes with Sasha Zhang · video link on confirmation

Loading scheduler…

CPG glossary

Phantom inventory, explained

What phantom inventory is

Phantom inventory is stock the system believes is on the shelf when the shelf is empty. The perpetual inventory record says 8 units of a 12 oz energy drink, the cooler door says zero, and the replenishment engine stays quiet because it is trusting the record. Nobody gets an out-of-stock alert, because as far as every system in the building is concerned nothing is out of stock.

On the brand side you meet phantom inventory backwards: a store that quietly stops scanning while its neighbours keep selling, and no out-of-stock report anywhere to explain why. That silence is what makes it expensive. A true stockout announces itself: on-hand hits zero, the reorder fires, somebody notices. A phantom sits there until a human counts the shelf. These voids are also called hidden voids, or ghost inventory, for exactly that reason, and they are the worst version of an on-shelf availability problem.

Phantom inventory vs a true stockout

SignalTrue stockoutPhantom inventory
System on-hand0Greater than 0
Reorder firesYesNo
Zero-scan streakYesYes
Raises an OOS alertYesNo
Cleared byReplenishmentA physical count

The two look identical in sales data and opposite in inventory data. That is the whole detection problem, and it is why a POS feed alone cannot find a phantom. You need on-hand and movement on the same item-store.

The signature: on-hand above zero, scans at zero

Here is one item across four locations of a convenience operator, over 14 days. The 12 oz energy drink retails at $3.29. The sibling median is taken across the operator's other 60-odd stores carrying the item, not across the four shown, so it is a chain baseline rather than something you can recompute from this table.

StoreSystem on-handUnits scanned, 14dSibling median, 14dRead
0048021Phantom
00761921Healthy
0110021True stockout
0159221Suspect
Units scanned in 14 daysShortfall vs the 21-unit sibling medianStore 00421 not soldon-hand 8Store 00719 scannedon-hand 6Store 01121 not soldon-hand 0Store 01519 not soldon-hand 9
Same bar, opposite problems: 004 holds 8 units of phantom on-hand, 011 is a true stockout (worked example)

Store 011 is fine, in the sense that the system knows it is broken: on-hand is zero, so the reorder fires. Store 004 is the phantom. The record holds 8 units, nothing has scanned in two weeks, and sibling stores moved 21 in the same window. Store 015 is the version that gets missed, because 2 units is not zero and a naive zero-scan rule steps over it.

What one void costs

Sibling stores move 21 units per 14 days, so 1.5 units a day. Store 004 has already given up 21 units, about $69 at $3.29. The reorder is not going to fire on its own, so the clock runs until somebody counts the cooler. On a non-core item counted quarterly, that is 90 days: 135 units, about $444, on one item in one store.

Do not multiply that across the pricebook. The count of voids is the uninteresting number; the velocity behind each one is the interesting one. The same phantom on a 0.1-unit-a-day specialty item costs about $30 over the same quarter. Rank voids by sibling velocity and work the top of the list.

Why the record drifts

CauseWhat it does to the recordTypical tell
Theft or unrecorded shrinkOn-hand holds units that are goneSustained, one item, one store
Received by the case, sold by the eachOn-hand inflated by the pack multipleOff by exactly the case pack
Damage or spoilage never written offOn-hand holds the written-off unitsClusters on short-coded items
Product in the store but not on the shelfUnits exist, shoppers cannot buy themResolves at the next reset
Wrong item scanned at the registerTwo records drift in opposite directionsA paired over- and under-count

Only the first is deliberate loss. Damage, spoilage and register error are retail shrink too, in the accounting sense, but they are process defects you fix rather than theft you police, which is worth knowing before you send the store a theft memo about a case-pack conversion error.

Reading the streak against the item's own velocity

A fixed rule floods you with noise. Seven days of zero scans is alarming on an item that sells twice a day and completely normal on one that sells twice a month, so set the streak threshold from each item's own sibling-store velocity.

Sibling velocity (units/day)Days of zero scans before it is unusual
2.0 and above2
1.0 to 2.03
0.5 to 1.06
Under 0.514

Store 015 above is the case for using units rather than a binary. Two units against a sibling median of 21 is a 90% shortfall, and a rule that only looks for zero will never see it.

What it does to the forecast

A phantom costs more than the units on the shelf. Your POS shows zero sales for that item-store, and a demand forecast reads zero as collapsing demand and lowers the baseline. Now you are forecasting down on a product that was simply not buyable. The demand was there. The shelf was not, and the model cannot tell the difference unless somebody marks the void.

That is why voids get excluded from baseline periods rather than averaged in. A month of phantom weeks left in the history will keep suppressing the forecast long after the cooler is restocked.

Where Scout fits

Scout is a demand-side analytics layer. Convenience back-office feeds carry on-hand and movement on the same item-store, which is what makes the phantom signature readable at all, and Scout joins that to sibling-store velocity so you can rank zero-scan streaks by the dollars behind them. It is not a store-execution or retail-audit tool. It does not walk the aisle, count the cooler, or fire a replenishment order. It tells you which item-stores to send someone to count.

The short version

  • Phantom inventory is stock the system believes is on the shelf when the shelf is empty, so no reorder fires and no alert is raised.
  • The signature needs two series on the same item-store: system on-hand above zero, with a zero-scan streak while sibling stores keep selling.
  • Set the streak threshold from the item's own velocity. Seven days means something different on a 2-a-day item than on a 2-a-month one.
  • Rank voids by sibling velocity, not by count: the same phantom is worth $444 a quarter on a fast mover and $30 on a slow one.
  • Left in the history, phantom weeks suppress the demand baseline long after the shelf is refilled.

Want the rest of the CPG analyst's glossary?

Drop your email and we'll send the full set of CPG and retail-data definitions as one reference sheet.

See your CPG data answer questions in plain English — book a Scout demo