Marlowe & Finch Back office · Yield
Markdown & specials

Clear the counter, not the margin.

It's 3pm. Tonight's covers are forecast 30% under, and the bakery case is still full. The board proposes timed markdowns to move the surplus before close — markdowns to cut waste, never surge pricing — and every one stays above the plate-cost floor. Read by Eleanor Marlowe, Chef

Forecast shortfall tonight
−30%
42 covers expected against a 60-cover Tuesday norm
Portions at risk
38
Across 5 lines — bakery case & tonight's prep
Projected waste avoided
$214
Plate cost recovered if the markdowns clear the stock
Markdowns proposed
4
All above the margin floor — 1 request blocked

The 3pm surplus board

Tuesday · Tanjong Pagar · closed Mondays. Forecast from bookings, walk-in pace & weather.
Tonight, forecast
42 covers
Tuesday norm
60 covers
Brass line marks the night we prepped for. The 18-cover gap is what the case has to absorb.
What it's reading

Light book, a wet evening forecast and a slow walk-in pace put tonight at 42 covers against the 60 we prepped and baked for.

That leaves a case of bakery and a tray of tonight's prep that won't sell at full price before close. Left alone it goes in the bin at 10pm.

18 covers short
At-risk line Where Qty at risk Full price Plate cost Floor price Cost if binned Clear-by
Almond croissantsBaked this morning · best todayCafe Bakery case14$7.50$2.40$6.00$33.60 Clear by 6pm
Saltbush lamb tartare portionsTrimmed & weighed · 24h shelfEntrée Tonight's prep6$28$10$25.00$60.00 Clear by 9pm
Lamington soufflé basesSet this afternoonDessert Dessert prep8$18$5$12.50$40.00 Clear by 9pm
Pavlova reconstructedMeringue won't hold to tomorrowDessert Dessert prep5$18$5$12.50$25.00 Clear by 9pm
Feijoa & kiwifruit ice creamFreezer-stable · not urgentDessert Freezer5$18$5$12.50$25.00 Hold — keeps

Floor price is the lowest a line can be marked down to and still clear the margin floor — plate cost at or under 40% of price (a 2.5× minimum mark-up). The freezer-stable ice cream is shown for context but not proposed: it keeps, so there's no waste case for discounting it.


Proposed markdowns & bundles

Timed, not permanent. Each clears stock and holds above the floor. Push toggles are illustrative.
Bundle · bakery case

Any two pastries, $7

$7.00 $15.00
From 5pm · while the case lasts
Plate cost, two croissants$4.80 Margin after markdown$2.20 · 31% Margin floor≤ 40% cost
Above floor — 31% food cost
Push to In-store screen Instagram story
Timed special · tonight only

Lamb tartare, $24 after 7pm

$24.00 $28.00
From 7pm · 6 portions
Plate cost$10.00 Margin after markdown$14.00 · 42% Floor price (40%)$25.00
Held at $24 — just inside the floor
Push to In-store screen Instagram story
Timed special · dessert

Soufflé or pavlova, $13

$13.00 $18.00
From 8pm · 13 between the two
Plate cost$5.00 Margin after markdown$8.00 · 38% Floor price (40%)$12.50
Above floor — 38% food cost
Push to In-store screen Instagram story

The same board renders to the counter display and, with one tap, to an Instagram story — the operator approves before anything goes live.


When someone pushes too far

The guard runs on every markdown — proposed or operator-entered.
Margin guard

Blocked — below the margin floor

Tail end of service, three croissants left. The operator types a clearance price to be rid of them: "Almond croissants, $2 — just move them." That's a loss-leader below what the pastry cost to bake. The guard stops it before it reaches the board.

Requested price
$2.00
Plate cost
$2.40
Margin at that price
−$0.40
Lowest allowed (floor)
$6.00
Blocked · sells below cost

At $2 the croissant loses $0.40 a unit — that's not a markdown, it's paying guests to take stock off our hands. The engine will mark down to clear surplus, but never below cost: the lowest it will publish for this line is the $6.00 floor. If the case truly won't move, the answer is to bake fewer tomorrow, not to sell at a loss tonight. Markdown to cut waste, never surge pricing, and never under the floor.

One rule, both directions: the floor that stops a giveaway is the same one that keeps the proposed specials honest. Nothing reaches the board — or Instagram — without clearing it, and every push stays human-approved.

Under the hood What this is today — and where the surplus engine should go

Today this is a design concept with hardcoded numbers — there's no live forecast and no till behind it. The shape is honest, though: a 3pm read of expected covers against what we prepped, the at-risk lines costed, and a set of timed markdowns that each clear stock while staying above a plate-cost floor. The point it's making is a discipline, not a discount: mark down to cut waste, never surge-price, and never sell under cost.

On the roadmap

  1. A real forecast. Feed the 3pm prediction from live bookings, walk-in pace, the weather and day-of-week history — so "30% under" is measured, not assumed, and the board only fires on the nights it's needed.
  2. Tie it to prep and the till. Pull actual case counts and tonight's prep sheet, then watch sales draw the surplus down through the evening so markdowns trigger only on what genuinely won't clear at full price.
  3. Learn what a markdown actually moves. Track whether "$7 for two" at 5pm really clears the case, and by how much, so the engine proposes the smallest discount that does the job — protecting margin, not reflexively cutting it.
  4. One-tap publish, for real. Wire the in-store screen and the Instagram story to the approved board, with the operator's tap as the gate — visual today, a genuine push tomorrow.
  5. The floor never moves. Every markdown stays rules-checked and human-approved. The engine can propose a price; it still can't publish one below cost, and the guard sits on operator-entered prices too.
Where this sits in the roadmap — the expansion use-case brief: UC16 — Dynamic markdown & specials board (expansion brief) → Concept mock-up — illustrative data, not a live system. Expansion candidate (UC15–UC20).