Waste log
Not everything that leaves the pantry leaves through the till. A tray of tomatoes goes off in the walk-in. A bottle slips out of a bartender’s hand. The morning prep produces twice as much sauce as service needs and the rest goes in the bin. A new cook practices a dish three times before the chef is happy with it. None of these are sales, but they all take stock down — and if they’re not logged here, they show up later as mysterious variance on a stock count with no story attached.
This page is for the line cook recording in the moment, the manager approving at the end of the shift, and the owner reading the dashboard at the end of the week.
Why this page exists
There are three ways stock legitimately leaves the kitchen: the till sells it, the kitchen consumes it as part of a recipe, or it’s wasted. The first two are automatic — the till deducts on the sale, the prep board deducts on the production. Waste is the third, and the only one that requires a person to say “this happened”. Without that act of saying so, the loss goes unrecorded, the row in the inventory list keeps reading a number higher than the shelf, and the next count finds a gap nobody can explain.
The waste log is also where patterns become visible. A Wednesday with €30 of waste under Spoiled is a fridge problem — the chiller is running warm, or the kitchen is over-ordering for slow midweek covers. A Friday with €120 under Overproduced might be a discipline problem on the morning prep, or it might just be Friday family dinner. Either way, the dashboard shows a column chart of waste by reason for the week, and the conversation writes itself.
The rule
Every kilo that leaves the kitchen without leaving through the till needs a row in the waste log. The log doesn’t change cost — it changes quantity. The cost-per-unit of the row is whatever the supplier said it was; waste just moves how much is on the shelf.
What an entry captures
Each waste row records four things. The item — searched and picked from the pantry list. The quantity — how much was lost, in whatever unit the row counts in (kilos for cheese, bottles for wine, each for plates). The reason — one of seven categories the system offers: Spoiled, Dropped / contaminated, Overproduced, Quality issue, Expired, Theft / shrinkage, Other. A note, optional, for the context the category doesn’t carry: delivery sat in van too long, bottom of crate bruised, guest sent the dish back, refused replacement. The line can also attach a photo from the phone — the bruised crate, the broken bottle, the burnt tray — which helps the manager approve faster, especially for Spoiled and Dropped entries.
The entry lives in the Pending queue until a manager approves it. Approval is the moment stock actually moves: the row’s Current stock drops by the logged quantity, the waste row hardens into the dashboard’s waste-by-reason chart, and the entry shows up in the item’s stock history with the right reason code. Until approval, the entry is a claim, not a deduction — which is the safety net that stops a wrong unit or a typo from quietly halving the parmesan stock.
A manager who looks at an entry and decides it’s not real (the cook miscounted, the dish was salvaged) Rejects it. The entry closes without touching stock. An owner who later realises an approved entry was wrong (5 kg should have been 0.5 kg) Reverses it: stock comes back, the dashboard line cancels, and both the original and the reversal stay in the audit trail.
How to use it
Open /admin/waste from the back-of-house section of the sidebar. The page has tabs across the top — Pending, Approved, Rejected, Reversed, All — and stat cards showing this month’s approved cost, the top reason, the all-time event count.
Logging. Tap 🗑 Log waste at the top right. The dialog runs in four short steps. Pick the item — type into the search box and the list narrows by name or category. Type the quantity in the item’s unit. Pick one of the reason pills (Spoiled, Dropped / contaminated, Overproduced, Quality issue, Expired, Theft / shrinkage, Other). Optionally type a note and attach a photo. Tap 🗑 Log waste. The entry shows up under Pending and the cook is done — total time, under thirty seconds.
Approving. A manager opens the Pending tab, taps an entry, sees the full detail (item, quantity, reason, note, photo, cook, time). Tap Approve to write the deduction. Tap Reject and the entry closes with an optional rejection note. Approving is the only action that moves stock; everything else is paperwork.
Reversing. An owner who finds a wrong approved entry opens it from the Approved tab and taps Reverse. The reversal asks for a reason, then writes a counter-deduction that puts the stock back and cancels the waste cost on the dashboard. The entry moves to the Reversed tab; both the original approval and the reversal remain in the item’s stock history.
What happens behind the scenes
The two-step gate — log, then approve — is the system’s defense against a wrong number ricocheting into the pantry. The cook can be wrong; the manager catches it. The manager can be wrong; the owner reverses it. Every step is recorded with the user, the time, the reason, and (on the deduction itself) the entry ID — so the item’s Stock counts tab and History tab tell the full story months later when someone asks why a number moved on a Tuesday.
Logging waste does not recompute cost. The row’s cost-per-unit comes from the supplier (the price the kitchen actually paid most recently) and the recipe yield, not from the waste history. What logging waste does is value the deduction at the row’s current cost-per-unit so the dashboard’s waste-by-reason chart has a money number to show. A kilo of guanciale wasted at €18/kg shows €18 on the chart; if the supplier’s price moves next week, the historical waste entry keeps its €18 — that’s the cost at the moment the waste happened.
Worked example
Tuesday lunch. The chef opens the walk-in at 11 a.m., pulls the crate of tomatoes from yesterday’s delivery, and the bottom layer is mush — the supplier’s van must have sat in the sun on the way over. Two kilos are unsalvageable; the rest is fine.
She opens /admin/waste on her phone, taps 🗑 Log waste, types tomato in the search box, picks the San Marzano tomatoes row, types 2 in the quantity field, picks the Spoiled pill, takes a quick photo of the bruised crate, types in the note: bottom layer of yesterday’s delivery, sat too long in the van. Taps 🗑 Log waste. The entry shows up in Pending, the photo attached.
After lunch the manager opens the Pending tab, sees the entry, reads the note, taps Approve. Three things happen at once: the San Marzano tomatoes row’s Current stock drops from 8 kg to 6 kg, the dashboard’s waste-by-reason chart gains a €2.80 line under Spoiled (2 kg × €1.40/kg), and the Stock history tab on the tomato row gains a row tagged waste-approved with the chef’s name on it.
Two days later the supplier credits the spoiled portion on the next invoice. The waste entry stays as it was — that’s what happened, and the credit is a separate event on the receivable side. The owner reads the weekly dashboard on Sunday: spoilage for the week sits at €11 across four entries, all explained, all photographed, all approved. The next month’s stock count variance for the same shelf comes in at just €4 — the genuinely surprising drift, with the logged events already accounted for.
Related features
- Inventory — overview — the list whose Current stock the approval deducts from
- Editing an inventory item — the Waste tab on the detail page shows every approved entry against this row, with photos and reasons
- Stock counts — the periodic audit that catches unlogged waste; the better the waste log, the smaller the count’s variance
- Storage locations — the Spoilage and Expired patterns cluster by storage location; the dashboard breaks waste down by location too
- Where your information lives — the five rooms of the system; waste sits in the pantry as a parallel ledger to deliveries and sales