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 expiry | Condition | Markdown |
|---|---|---|
| More than 12 | Any | None |
| 12 to 6 | Projected surplus of 2 or more units | 15% |
| 6 to 2 | Projected surplus of 1 or more units | 30% |
| Final 2 selling hours | Any units remaining | 50%, floored at cost |
| Past date | Any | Pull; 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.
