Why fresh is different

Fresh produce breaks a generic replenishment system. Here's where, and why.

Dry-grocery replenishment assumes stable SKUs, clean POS data, and fixed shelf life. None of those hold in fresh. We've measured each break across our customers. This is what's actually happening on the floor — and what an engine built for fresh has to do about it.

01 · PLU chaos — One banana, 12 codes.
02 · In-store processing — Whole-to-cut, off the books.
03 · Scan errors — Bio rung up as regular.
04 · Variable shelf life — Harvest age > best-by date.
05 · Local suppliers — Twice-weekly, weather-permitting.
06 · Daily layout changes — Facings are wrong by Wednesday.
01 · PLU CHAOS

One banana SKU. Twelve codes.

A produce manager rings up Cavendish bananas every day, but the system sees a dozen different products. Different suppliers, ripeness stages, in-store re-weighs, substitutes when a delivery is short.

Generic replenishment treats each PLU as an independent demand series. A forecast for "Banana variant #7" trained on three sales. A forecast for #11 trained on twelve. A sum that misses by 30%.

What Freshflow does

Every variant is mapped into one demand series at calibration time. Forecasts learn on the full history, not the slice each PLU happens to carry. The order proposal goes back as the PLUs the receiver expects.

02 · IN-STORE PROCESSING

The whole watermelon was sold eight times.

At 6am there’s a 6kg watermelon on the floor. By 11am, the produce team has cut it into eight half-melon trays and re-priced them. The ERP still sees one watermelon. The trays don’t have a PLU until they sell.

Every store does this dozens of times a day. Pineapples, cabbages, mixed-fruit trays. The "stock" the system uses to order tomorrow is fictional by lunchtime.

What Freshflow does

Conversion patterns are learned per store and per SKU. When a whole-to-cut break happens, the inventory model rebuilds in seconds — so tomorrow’s order reflects what’s actually on the shelf.

03 · SCAN ERRORS

Bio strawberries, rung up as regular.

A cashier doesn’t see the label. The bio raspberry punnet gets the regular PLU because it’s faster, or because the bio code isn’t on the till’s quick menu. Multiply by 14 cashiers, 31 store-days a month — and revenue silently leaks off the bio line.

The system thinks bio underperforms. The buyer reduces the order. The shelf empties. The shopper switches to a competitor that keeps bio in stock. Every step looks rational; every step is wrong.

What Freshflow does

Scan-class drift is detected from POS patterns vs. shelf inventory. When the bio line is being undercoded, the store gets a flag — not a re-trained "bio doesn’t sell" forecast.

04 · VARIABLE SHELF LIFE

Today's lettuce. Tomorrow's lettuce.

The lettuce that hit the shelf this morning was harvested 36 hours ago. Tomorrow’s delivery is four days old. Same SKU, very different quality curve. A generic system can’t see this — the ERP best-by field is the same on both.

Order more than the curve can absorb and you write off. Order less and you stock-out by noon. Fresh shifts the loss function week to week, and a fixed service level can’t compensate for it.

What Freshflow does

Per-SKU degradation curves are calibrated on each delivery — not on the ERP master record. The order accounts for what’s about to be physically sellable, not what the label says.

05 · LOCAL SUPPLIERS

The farm 12 km away. Weather permitting.

National DC replenishment is built around predictable, frequent lanes. Local fresh isn’t. A nearby farmer delivers Tuesday and Friday — unless it rains, in which case Friday becomes Saturday, and the shelf goes empty Thursday afternoon.

For a shopper, that local lane is the reason to drive to your store. For a generic system, it’s a noisy edge case that "smooths out" over time. It doesn’t.

What Freshflow does

Supplier reliability is modelled per origin and weather-aware. When a local lane is at risk, the order rebalances toward the lane that’s likely to actually arrive.

06 · DAILY LAYOUT CHANGES

The shelf moved. The plan didn't.

Promo end-cap moves Friday. Berry section shrinks to two facings Monday morning because soft fruit was overstocked yesterday. By Wednesday, every model that thinks the produce aisle looks like last week’s planogram is ordering for capacity that isn’t there.

The shop floor adjusts shelf share constantly. The ERP almost never knows. A system that assumes static facings will keep over-ordering for shelves that have already shrunk.

What Freshflow does

Shelf-share is inferred from POS velocity, not the master planogram. Capacity assumptions update day-of, so orders don’t pile against shelves that have already shrunk.

→ What this adds up to

Six small frictions. One big idea.

Each break alone is recoverable. Together they're why every produce manager spends two hours a morning correcting the system — and why the write-off line keeps growing. Fresh needs its own engine.

Talk with our Experts Estimate your impact