Field Notes3 min read

The Ghost Inventory Problem: How We Were Hiding Products From Our Own Customers

Ernest Barkhudarian
Ernest Barkhudarian, Founder

Lessons from scaling a 200-location delivery network — and everything that went wrong

Our e-commerce site looked healthy. Good design, solid product photography, upsells working, ads running. Revenue was growing, but not as fast as the traffic suggested.

The analytics showed good click-through rates. People were browsing, adding to cart. But a surprising number of products showed "out of stock" — even though the warehouse team kept saying "we have plenty."

For months, the operations team and the warehouse team blamed each other. "Your system is wrong." "Your counts are wrong."

They were both right, sort of.

The Bug Nobody Could See

Here's what was happening: when a customer added a product to cart and started checkout, the system reserved that inventory — marked it as "taken" so another customer couldn't buy the same item.

Standard e-commerce logic. Nothing wrong so far.

But when the customer abandoned checkout — closed the tab, got distracted, decided not to buy — the reservation wasn't released automatically. The product stayed in limbo: reserved in the system, but never purchased.

The warehouse had the physical product sitting on the shelf. The system said it was reserved. The website showed "out of stock." The customer who actually wanted to buy it couldn't.

Staff were supposed to manually release abandoned reservations. But during busy periods, they forgot. Or didn't have time. Or didn't even know it was their responsibility.

Over time, ghost reservations accumulated. Products that were physically available became digitally invisible. We were running ads to drive traffic to products that our own system was hiding.

How We Found It

We ran a reconciliation between physical stock and system stock. The gap was alarming — hundreds of SKUs showed zero availability in the system while sitting on warehouse shelves.

The fix was simple: automatic release of unpaid reservations after a set time window, plus notifications to the operations team, plus a cleanup script that cleared the backlog of phantom reservations.

The result: products came back to life. Conversion recovered. Revenue gap closed. Same inventory, same traffic — we just stopped hiding our own products.

Growth without chaos — launch in 1 day

Training, standards, gamification, and analytics — one operating system for your franchise family

Book a Demo

Why Franchise Networks Have This at Scale

If you run a franchise network with any kind of inventory — products, appointment slots, service availability, menu items — you have a version of this problem.

Every location has its own ghost inventory. Maybe it's not abandoned cart reservations. Maybe it's menu items marked as "unavailable" that nobody turned back on. Maybe it's appointment slots blocked for "staff meeting" three months ago. Maybe it's products that got moved to a different shelf and the system wasn't updated.

At each individual location, it's a small issue. A few SKUs here, a few blocked slots there. The location manager works around it or doesn't even notice.

But across 50 or 100 locations, phantom inventory adds up to real revenue loss. If each location has 5% of its offerings incorrectly showing as unavailable, and you have 100 locations, that's a network-wide problem that nobody is measuring.

The fix at network level is the same as what we did in e-commerce:

  • Automate the cleanup. Don't rely on staff to manually release, unblock, or update. If something is time-bound (a reservation, a block, a temporary change), it should automatically revert.
  • Reconcile regularly. Compare what the system says is available versus what's actually available. Do it network-wide, not just per location.
  • Make phantom inventory visible at HQ. If your network dashboard doesn't show availability gaps across locations, you're flying blind on one of the most basic operational metrics.

The Lesson

We were spending money on ads to drive customers to products we were accidentally hiding. The waste wasn't in marketing or inventory — it was in the gap between what was real and what the system believed.

In a franchise network, that gap exists at every location. The question is whether anyone at HQ is looking at it across the entire network — or whether each location is quietly working around its own phantom stock, assuming it's just how things are.

Growth without chaos — launch in 1 day

Training, standards, gamification, and analytics — one operating system for your franchise family

Book a Demo
Ernest Barkhudarian

Author

Ernest Barkhudarian

Founder

17 years building tech for multi-location businesses — from flower delivery networks to e-commerce operations. Writes about what he learned scaling operations across hundreds of locations, and why he built Franchise.Family.

Related Articles

Field Notes4 min read

A Broken Address Field Was Costing Us $2M Across 200 Locations

A single form field bug in a 200-location delivery network was silently killing conversions at every location. Nobody noticed — each location thought it was just a slow day. Here's how we found it, and why your franchise network probably has the same class of problem.

Field Notes4 min read

Your Network Will Face a 10x Day. Here's How to Survive It

One holiday turned every location in our 200-site delivery network into a warzone. Same platform, same training — wildly different results. Here's what separated the locations that crushed it from the ones that collapsed, and why franchise networks need to prepare differently.

Field Notes4 min read

One Employee, One Promo Code, $700K Gone

An internal 100% discount code meant 'for testing only' leaked to a partner network. 112 orders at $0 in one hour. No hack, no breach — just a missing access control. Here's what happened, and why franchise networks are even more exposed to this kind of loss.