Operations

Expiry-Aware Dynamic Pricing for Fresh Food: Markdown Curves, Guardrails and Waste Math

Every fresh sandwich is worth full price for a few days and then nothing. Most operators handle that cliff with a trash bag. Expiry-aware pricing turns it into a slope, if you design the curve and the guardrails properly.

A miniature cliff with an empty trash bin below and a gentle wooden chute carrying tiny sandwiches down to a café table with a plate and cup.
The ideaexpiry is a cliff, and a good markdown curve turns it into a ramp that ends at someone's lunch instead of the bin.

Key takeaways

  • Trigger markdowns on projected surplus, not just time. Discounting items that would have sold anyway is pure margin loss.
  • Effective expiry is the last good selling window before the date, which at a weekday office can be Friday afternoon.
  • Use a short ladder of visible steps. Simple curves are easier for shoppers to trust and for you to audit.
  • Guardrails come first: markdown only, a price floor, no changes mid-session, and nothing past its date or out of temperature.
  • Markdowns treat the symptom. Feed what they reveal back into ordering.

A fresh sandwich in a cooler is a short-dated asset. It’s worth full price for a few days, then it’s worth exactly nothing, and you pay to throw it away. Most operators handle that cliff the same way: pull the item on the last visit before its date and write it off. A few run a sticker gun on the way out. Expiry-aware pricing replaces the cliff with a slope, lowering the price as an item approaches its date so someone eats it instead. Done well, it cuts waste and adds margin. Done carelessly, it teaches your best customers to wait and gives away money on sandwiches that were going to sell anyway.

The waste math

Start with an illustrative cooler that stocks 30 sandwiches a week, at a cost of $2.40 each and a price of $6.25.

Without markdowns, 24 sell at full price and 6 are thrown away.

  • Revenue: 24 × $6.25 = $150.00
  • Product cost: 30 × $2.40 = $72.00
  • Gross profit: $78.00, with 20% of units wasted

With a single 30% markdown near the end of each sandwich’s life (a price of $4.38), suppose 4 of the 6 would-be-wasted sandwiches now sell. But 2 shoppers who would have paid full price buy at the markdown instead. That’s cannibalization, and it’s real.

  • Revenue: $150.00 + (4 × $4.38) − (2 × $1.87) = $150.00 + $17.52 − $3.74 = $163.78
  • Product cost: still $72.00
  • Gross profit: $91.78, up about 18%, with waste down from 6 units to 2

Two things stand out. First, the gain depends heavily on the cannibalization ratio. If 6 full-price buyers had traded down instead of 2, most of the gain would disappear. Second, the markdown turns waste into data. If you’re marking down 6 sandwiches every single week, the real fix is ordering 27 instead of 30 and letting the markdown handle the week-to-week variance.

Designing the markdown curve

Trigger on surplus, not just time

The most common mistake is a purely time-based rule: “30% off at 24 hours to expiry.” That discounts every item still on the shelf, including the ones that would have sold at full price within the next two hours. A better trigger asks: given the forecast, how many of these will still be here at expiry? If the answer is zero, do nothing. If it’s 3, mark down enough, or deeply enough, to move about 3.

Use effective expiry, not the label date

Effective expiry is the last good selling window before the date. At a Monday-to-Friday office, a sandwich dated Saturday effectively expires Friday after lunch, because nobody is there to buy it on the weekend. At a 24/7 hospital, the overnight shift is a real selling window, so the same sandwich has more usable life. Build the curve around traffic, not the calendar.

Mark down before the last big window, not after it

A markdown at 4 p.m. in an office that empties at 5 p.m. has an audience of almost nobody. Move it ahead of the last real traffic window: the lunch peak on the final day, a shift change, or the evening visitor rush at a hospital.

Count selling hours, not clock hours

A ladder written in clock hours (“30% off from 18 hours to expiry”) will happily fire at 8 p.m. in an office that’s empty until morning, then sit there all night discounting to nobody. Write the ladder in selling hours: the hours when the site actually has traffic.

Keep the ladder short

Shoppers trust what they can understand, and you can audit what you can read. Two or three visible steps beat a continuously sliding price.

Selling hours left before effective expiryConditionMarkdown
More than 12AnyNone
12 to 6Projected surplus of 2 or more units15%
6 to 2Projected surplus of 1 or more units30%
Final 2 selling hoursAny units remaining50%, floored at cost
Past dateAnyPull; no sale

These numbers are a starting point, not a rule. Tune them by site and category, and change one thing at a time so you can tell what worked.

A worked example

It’s Thursday at 9 a.m. at a weekday office open 9 to 5. Eight chicken wraps are on the shelf, dated Saturday, so effective expiry is Friday at 2 p.m. That leaves 13 selling hours: 8 today and 5 tomorrow. The forecast says wraps sell about 0.4 an hour at full price here, so roughly 5 should sell before expiry. Projected surplus: 3. The ladder waits an hour, then applies 15% once fewer than 12 selling hours remain.

By 5 p.m., 4 have sold and 4 remain. Five selling hours are left and the forecast expects 2 more at full price, so the surplus is 2 and Friday opens at 30% off. By noon, one wrap is left with 2 selling hours to go. It drops to 50%, still above cost, and sells at lunch. Nothing reached the bin, and the overnight hours never saw a discount because nobody was there to see it.

Guardrails

Write these down before any price moves:

  • Markdown only. Expiry-aware prices go down from list, never up.
  • A floor. Never below product cost, unless you deliberately choose to recover something rather than nothing in the final window.
  • Limits on depth and frequency, for example no more than three changes per item per day.
  • No changes mid-session. The price shown when the shopper taps is the price they pay.
  • Price visible before purchase, on the door display, shelf label or kiosk, before the shopper commits.
  • Hard stops for food safety. Nothing past its use-by or sell-by date, and nothing that has been out of temperature. Under the FDA Food Code, cold-held TCS foods must stay at or below 41 °F; product that has been temperature-abused gets discarded, not discounted.
  • One price for everyone at a given moment. No personalized pricing based on who the shopper is.
  • Rollback and a log. Every price change is recorded and can be undone quickly.

Date-labeling and price-display rules vary by state and locality, so check the rules where you operate. This is operational guidance, not legal advice.

Shopper fairness

Dynamic pricing has a reputation problem because people associate it with surge pricing. Fresh-food markdowns are the opposite, and it’s worth saying so plainly. Tell shoppers what’s happening (a short note on the door display that items close to their date are discounted does the job) and keep the rules boring and consistent.

Then watch for the waiting game. If markdowns are deep, early and predictable, regulars learn to buy at 3 p.m. instead of noon. The defenses are the ones above: surplus-based triggers, shallow early steps and deep markdowns timed for windows when selection is already thin. And measure it. If the share of fresh sales happening at a markdown rises month after month while waste stays flat, you’re training shoppers rather than saving food.

Employer subsidies need a rule too. Decide whether a subsidy applies to the marked-down price or the list price, and write it down before the first markdown runs.

Measuring it

Run the change on some devices and not others, or alternate weeks, so you have a fair comparison. Track five numbers:

  • Waste rate: units discarded ÷ units delivered
  • Sell-through: units sold ÷ units delivered
  • Gross margin per unit delivered, which captures both waste and discount cost in one figure
  • Markdown share: the percentage of fresh units sold below list
  • Out-of-stocks, since tighter ordering can tip into empty shelves

Gross margin per unit delivered is the one to manage to. Waste rate alone can be driven to zero by marking everything down early, and sell-through alone can be maxed by ordering too little.

Failure modes

  • Too early: margin given away on items that would have sold at full price.
  • Too shallow: 10% off a $6 salad at 4:45 p.m. moves nothing.
  • Stale inventory data: marking down items that were already sold or pulled.
  • Markdowns as a crutch: the curve hides chronic over-ordering. Feed weekly markdown volume back into the forecast.
  • One curve for every site: a hospital, a campus and a single-shift office have different traffic clocks and need different ladders.

A note on which items to include

Not every fresh item belongs on the ladder. High-margin items with short lives (salads, sandwiches, cut fruit, sushi) are the best candidates. Dairy with a longer life usually only needs the final step. Hot-meal programs run on a different clock entirely, measured in hours, and are better handled by tighter production than by discounting. And items a location host subsidizes heavily, like a healthy-choice program at a hospital, may not need markdowns at all, because the subsidy already moves them.

How 8Kava approaches this

Dynamic Pricing in Kava OS runs expiry-aware markdowns from item-level forecasts, with guardrails the operator sets. On Autopilot, Kava Agent can propose or apply further price changes within operator-set limits, such as a maximum ±15% move and never below cost, with an audit log and one-click rollback for every price change. Across our deployments, expiry-aware pricing has cut fresh-food waste by 33%. At a Mountain West hospital network, fresh-food waste fell 31% in the first six months even as fresh food became available around the clock. For the temperature side of fresh food, see our guide to temperature compliance.

A1FAQ

Questions readers ask

Does dynamic pricing mean prices go up when demand is high?

It doesn't have to, and for fresh food at workplaces and hospitals it shouldn't. Expiry-aware pricing works as markdown only: prices move down from list as an item nears its date and never above it. That keeps the program clearly in the shopper's favor.

Won't shoppers just wait for the discount?

Some will, if markdowns are deep, early and predictable. Keep early steps shallow, trigger them only when there's projected surplus, and time the deepest step for a window when selection is already thin. Most people buying lunch won't wait four hours to save a dollar.

Can I discount food that's past its date?

Treat use-by and sell-by dates as hard stops: pull the item, don't discount it. Anything held above 41 °F longer than your food-safety plan allows is discarded, not discounted. Date-labeling rules vary by state, so check the rules where you operate.

How do markdowns interact with employer subsidies?

Decide the rule in advance. Many programs apply the subsidy to the marked-down price so the employer isn't funding a discount twice. Write it into the program terms so finance and shoppers see the same math.

A3Next step

Want these numbers for your own sites?

Tell us about your locations. We’ll model the format, the forecast and the payback, and show you Kava OS running on a live fleet.