Work in progress board
The work in progress board — WIP on the chips, Work in Progress in the sidebar — is the kitchen’s status screen. Every prep that’s been started but not yet logged to stock sits here as a card. Anyone in the kitchen can glance at one screen and see the whole prep operation: what’s running, who started it, how much time is left, what’s already cooled and ready to log. Without it, the only way to know is to walk around and ask.
This page is for two readers. If you’re the owner, start at “Why this page exists”. If you’re the head chef or the morning crew, jump to “How to use it”.
Why this page exists
A kitchen during prep hours runs three or four batches simultaneously. The pizza dough is mixing while the bolognese is simmering while the stock is reducing while the pastry chef is folding the brioche. Each batch has its own moment of attention — bench the dough at 8:45, strain the stock at 11:00. Without a visible queue, that scheduling lives in someone’s head — the worst place to keep a list.
The WIP board pulls it all onto one screen and ticks every minute. The card for the bolognese shows it’s been on the stove for 90 minutes; the ETA chip counts down; the colour goes amber under five minutes left and red when overdue. No one has to remember; the screen remembers.
The other reason this board exists is the bridge between recipes and inventory. A batch carries the recipe and the planned quantity. When the cook logs it to stock, the system already knows what ingredients to deduct, how much was actually made, and what cost to freeze. The WIP board is the surface where that translation happens — visibly, one card at a time, every step audited.
The rule
Nothing on this board moves stock until Log to stock. Starting a batch, advancing it through stages, even cancelling it — none of those touch inventory. The only action with consequences for what’s on the shelf is the green button at the bottom of a Ready card, and that button always asks for the actual yield first — because what the recipe targeted and what really came out of the pot are rarely the same number.
What the board shows
The page is split into two stacked sections. The top is the planning view — today’s task checklist. The bottom is the execution view — live batches in flight. They’re linked: a recipe task, when started, becomes a card on the live board, and when the card is logged to stock the task auto-checks itself.
A row of Kitchen tabs above both sections filters everything to one prep area at a time — Cucina, Bakery, Bar — plus All and Unassigned. The pizzaiolo stays on Bakery and never sees bar prep. The page title reads Work in progress, with + Start prep at the top right for starting a batch directly.
The task list header shows the date and a done/total counter. Date arrows step a day forward or back; Today snaps back when you’ve drifted. Templates opens the saved-list dialog; + Add task opens the dialog for adding a row.
Below the task list, the Live batches header shows the count of active cards. Each card carries: the recipe name at the top, the output it produces (→ Bolognese base), the kitchen chip if pinned, and the stage chip on the right — In progress (amber), Resting (sky blue), Ready (emerald green). Below that, the planned quantity and unit, the elapsed time (started 47m ago), the ETA chip if the chef set one (amber under five minutes, red when overdue), the cook’s name, and any notes. Action buttons at the bottom depend on the stage: → Resting and → Ready for an In progress card, → Ready for a Resting card, ✓ Log to stock for a Ready card, plus Cancel at the far right. Cards sort oldest-first, so the longest-running prep sits top-left.
How to use it
Open the page from the sidebar: Back of House → Work in Progress — it lives at /admin/prep-wip. Then the workflow runs in three actions per batch.
Start. Tap ▶ Start on a recipe task in today’s checklist (the standard path), or + Start prep at the top for a batch off the cuff. A dialog asks for the planned quantity (pre-filled from the recipe’s default yield) and an optional ETA in minutes. Save. A card appears in Live batches.
Advance through stages. Tap the stage buttons at the bottom of the card. → Resting for things that simmer, ferment, or chill without active attention. → Ready when the prep is finished and waiting to be weighed. Neither moves stock.
Log to stock. When the cook has weighed the actual yield, tap ✓ Log to stock. The dialog opens with the planned yield pre-filled and a field for the actual. Type the real number, add a note if it helps (reduced more than usual), save. The card disappears, the inventory row updates, the task ticks itself, and the cost is frozen from ingredients consumed at today’s prices.
Cancel. If a batch was started by mistake, tap Cancel at the bottom right. Nothing moves either way; the card disappears, and if it came from a task, the task goes back to To do.
The screen ticks every minute so the elapsed time and ETA stay fresh. The board is shared in real time — two cooks on different screens see the same numbers.
What happens behind the scenes
Two live queries feed this page. One fetches today’s tasks; the other fetches active batches. Both update in real time as cooks act.
Starting a batch from a task writes a new batch row and updates the task to point at it. The task’s status goes to In progress and the Start button is replaced by a ↓ live below hint. Advancing to Resting or Ready writes one field on the batch row — the new stage. No other rows touched.
Logging to stock is the heaviest action on the page, but still atomic. The system reads the recipe, walks its ingredient list, deducts the right quantity from each inventory row (oldest stock first), sums the cost of those exact quantities at today’s per-unit prices, and writes that sum onto a production batch row: the ledger entry that says this batch of bolognese cost €58 to make. It increments the prep’s inventory row by the actual yield, and ticks the originating task on the checklist.
Cancelling closes the batch row without writing a production batch and without touching inventory; if a task pointed at it, the task returns to To do.
Every event writes to the prep history — so when an inventory number a week from now surprises you, you can trace which batch put it there, which cook started it, what the actual yield was, and what cost was frozen.
Worked example — a bolognese base that takes four hours
It’s Wednesday at your venue. The kitchen is making a fresh bolognese base, planned at 12 kg. Recipe-target ingredients: 2 kg lean mince at €11/kg, 3 kg tomatoes at €2.50/kg, 1 kg onions, 1 kg carrot-celery, 0.75 L red wine, 5 L stock, herbs and oil. Recipe-target cost: €58, yielding 12 kg — €4.83/kg.
9:30. Marco opens the WIP board on today’s date. The bolognese is on the checklist — the Morning prep weekday template seeded it at 6 AM. He taps ▶ Start, accepts the pre-filled 12 kg, types 240 (four hours) for the ETA, saves. A card appears: Bolognese base · 12 kg · → Bolognese base · started 0m ago · ETA in 240m · Marco. Stage chip: In progress.
12:00. The sauce has reduced enough that it can simmer unattended. Marco taps → Resting. The chip flips to sky blue, the ETA chip disappears — resting is passive. The other cooks see the chip change in real time on their screens.
13:30. Marco returns. Taste is right, body is right, but the pot is visibly shy of 12 kg. He taps → Ready and carries the pot to weigh.
13:45. Kitchen scale: 11.2 kg. Evaporation took 800 g. He taps ✓ Log to stock, types 11.2, leaves a note (reduced 800 g more than recipe target), saves.
In one transaction:
- Inventory deducted — 2 kg mince, 3 kg tomatoes, 1 kg onions, 1 kg carrot-celery, 0.75 L red wine, 5 L stock, herbs, oil — each from its row, oldest stock first.
- Cost frozen — each quantity multiplied by the row’s current cost-per-recipe-unit. Lean mince had ticked up from €11 to €11.40/kg two weeks ago, so this batch’s 2 kg cost €22.80, not €22. Sum: €58.40.
- Production batch row written — a ledger entry: Bolognese base · 11.2 kg · €58.40 · 13:45 · Marco · note: reduced 800 g.
- Output inventory row updated — the Bolognese base L2 row goes from 0 to 11.2 kg. Live cost-per-unit recomputes to €5.21/kg — €58.40 ÷ 11.2 — slightly higher than the recipe-target €4.83/kg because the same ingredients spread across less yield.
- Card cleared from Live batches. Task ticked on the checklist.
18:30. Service starts. The first Tagliatelle al Ragù of the night consumes 200 g of bolognese — the till deducts 200 g from the row (now 11.0 kg) and costs the portion against the live €5.21/kg, not the recipe-target €4.83/kg. Sauce share per portion: €1.04. With 90 g of tagliatelle and a sprinkle of Parmigiano on top, total food cost lands at €2.20 on a plate sold at €18 — 12.2% food cost, a hair above the recipe-target 11.4% because the morning’s evaporation cost the kitchen 800 g of sauce that disappeared into the air.
By end of service the kitchen has plated 38 portions; the bolognese row reads 3.6 kg of stock remaining. Tomorrow’s task list will queue another batch.
One card, four hours, three rooms reconciled.
Related features
- Prep — overview — the entry to the whole back-of-house workflow this board is part of
- Daily tasks — the planning surface above the live batches
- Structured recipes vs freeform notes — what kinds of row sit on the checklist
- Start a prep batch — the alternative entry point, starting from the + Start prep button directly
- Log to stock — the green button on a Ready card, in full detail
- Auto-apply schedule — how today’s task list gets seeded automatically at six in the morning
- Checklist templates — saving today’s list for reuse
- Prep kitchens — the filter tabs at the top of the board
- Prep items — the inventory rows for things the kitchen makes, the destination of every Log to stock
- Recipes — how the kitchen turns ingredients into a costed output — only batched recipes can become cards on this board
- Inventory — overview — where the prep’s output ends up after Log to stock
- Waste log — when a batch goes wrong (spoiled, dropped, contaminated), it’s logged as waste through a separate audited path
- Where your information lives — the five rooms; this board is the live edge of the kitchen room