Product samples
A cheese supplier drops three wedges at the back door for the chef to try. A wine rep brings two bottles of an unfamiliar Saint-Joseph. A new producer of San Marzano leaves a single tin with a printed price list. None of these are deliveries — they’re invitations to taste. They have to live somewhere: counted, shelf-life-tracked, attributed to a supplier (real or prospective), and decided on. But they absolutely must not end up in the live inventory list, because a sample tin of tomatoes pulled into the night’s ragù would skew every cost and quantity downstream.
The Samples ledger is that somewhere. Every sample lives here from the moment it arrives until the chef decides what to do with it — and the decision itself becomes a record of a supplier relationship that started, or didn’t.
This page is for the head chef who runs tastings and the owner who tracks which producers the kitchen has been talking to.
Why this page exists
A sample has three properties the live pantry doesn’t know how to handle.
It’s not for service. The 250 g wedge of pecorino the chef is going to taste on Tuesday cannot deduct from the pecorino row when a carbonara goes out tonight. If it did, the food cost on the carbonara would be wrong, the stock count on Friday would be wrong, and the supplier’s invoice — which doesn’t include the sample — wouldn’t reconcile against the row’s movements.
It has a shelf life that’s often shorter than the kitchen’s attention. The wedge of fresh cheese goes off whether it’s a paid order or a freebie. Samples that sit on the walk-in shelf for three weeks because nobody opened the page are the most common failure mode — the system has to chase the chef.
And it carries a decision the kitchen needs to remember. The same rep brings the same Saint-Joseph six months later; the kitchen needs to know they tasted it in March, decided it was overpriced for the profile, and passed. Without that memory, the kitchen tastes the same wines twice and the rep wastes everyone’s time.
The Samples ledger handles all three. Stock stays apart. A shelf-life sweep flips expired samples to discarded on its own once a day. Every tasting note and decision lives on the sample row for as long as the venue exists.
The rule
A sample is not a delivery. It lives in its own ledger until the kitchen decides to keep it — and only at that moment does it become a supplier product and an inventory link. Tasting changes opinions; promotion changes the catalogue.
What a sample row captures
Each row records what the sample is and where it came from. Name (Burrata 250 g, Saint-Joseph 2022), optional Brand, optional Supplier code off the box. Supplier — picked from the drop-down if the sender is already in the system, or left as — Prospective / unknown — with the rep’s name and contact (email, phone, WhatsApp) typed into the prospective-supplier fields. Quantity and Unit of what arrived — one bottle, 250 g, six cans. Unit price if there was one, blank if free. Storage location so the cook can find it again, and Shelf life (days) so the system can compute an expiry date.
Tasting notes and a 1–5 rating get added after the tasting, not at receipt — the row is created when the box arrives and edited when the chef sits down with a fork.
The row carries a status the workflow walks through: Received (logged but not yet opened), Evaluating (tasting has started), Approved (the kitchen decided to keep it — and promoted it), Rejected (tasted, declined), Consumed (finished without a formal decision), Discarded (went off, dropped, or auto-expired by the shelf-life sweep). The chef moves through these explicitly; the only one the system flips on its own is the auto-discard for expired rows.
How to use it
The Samples ledger lives on the receiving hub, on its own tab: /admin/receiving → Samples. The list shows every active sample, filterable by status, with the expiry date in red on rows that have run out their shelf life.
Logging a sample manually. Tap + Log sample at the top right. Fill in what you know: name, brand if any, supplier (existing or prospective), quantity and unit, storage location, shelf life, optional unit price. Tap Log sample. The row appears under Received.
Tasting and deciding. Tap a row to open it. Type tasting notes and a rating as the cook works through it. Tap Start tasting to flip the status to Evaluating — purely a visibility marker; the system doesn’t care about the in-between state. When the chef has decided:
- Approve & promote — the sample becomes a real entry in the supplier’s catalogue and (optionally) a new source on an existing pantry row. See Promotion below.
- Reject — verdict no, optional reason.
- Mark consumed — the bottle is empty, the wedge is gone, no formal decision was needed.
- Discard — it went off or it’s not wanted anymore, optional reason.
Promotion is the moment the sample crosses into the live system. The Promote sample to catalogue dialog offers two paths. Add to supplier’s catalogue only creates a new product on the supplier’s catalogue page without linking it to any pantry row yet; the chef can finish the linkage later from the supplier side. Link to an existing inventory item is the more common path — the sample is a different brand or producer of something the kitchen already carries, so the chef picks the existing row (Pecorino Romano DOP, Burrata, San Marzano tomatoes) and the new supplier product is approved and linked in one move. The pantry row now has one more supplier to choose from on the next order.
Promotion never moves stock. The physical bottle still in the fridge stays in the Samples ledger; close it with Mark consumed when the kitchen finishes it.
Receiving with a sample line. Some delivery dockets carry a sample line (“1 × CAMPIONE — €0,00”) alongside the real order. When the receiving flow surfaces a docket with such a line, the cook flags it as a sample on the review screen — the line stays out of stock but creates a row in the Samples ledger, while the docket photo and total still go to the accounting app exactly as the supplier printed it, so the bill reconciles. (The in-flow toggle is rolling out; for now the cook can log the sample manually from this page and reference the docket in the note.)
What happens behind the scenes
Logging a sample creates one row, scoped to the venue, and nothing else moves. No stock change, no cost recomputation, no purchase order touched. If a shelf life was set, the system computes an expiry date by adding the days to the received-at date and stamps it on the row. Once a day an automatic sweep walks every active sample; any row past its expiry that hasn’t been promoted, consumed, or discarded flips to Discarded with reason expired, so the list stays honest even if nobody opens it for a week.
Promoting writes two things. First, a new row on the supplier’s catalogue (so the supplier’s product page shows it, and a future order can include it). Second, when the Link to an existing inventory item path is taken, the pantry row gains the new supplier as an approved source — the row’s Suppliers tab now lists the new product alongside the previous ones, and the chef can flip the Preferred flag onto it later if the kitchen decides to switch. Stock still doesn’t move; that comes later, on the first real delivery.
If the sample was logged against a prospective supplier (the — Prospective / unknown — placeholder with a typed name and contact), promotion requires the chef to either pick a real supplier on the editor first or onboard the prospective one through the suppliers page. The system won’t promote a sample into a catalogue that doesn’t exist yet.
Worked example
A cheese supplier the kitchen has bought from for two years drops off three wedges on the Tuesday delivery as part of a tasting day: Pecorino Romano DOP 24-month, Caciocavallo Silano, Fontina d’Alpeggio. The cook logs them one by one in /admin/receiving → Samples → + Log sample — same supplier on the drop-down, name and weight on each, shelf life 14 days, storage location Walk-in cold. Three rows appear under Received.
Wednesday afternoon, between services, the chef opens the page and taps Start tasting on the Pecorino. She tries all three over twenty minutes, types tasting notes on each.
- Pecorino Romano DOP 24-month: Long finish, the salt is balanced, sharper than the current supplier’s. Worth listing. Rating 5.
- Caciocavallo Silano: Good but not a fit for the menu — too mild for the dishes that use a strong cheese. Rating 3. Reject, with the note as the reason.
- Fontina d’Alpeggio: Bitter aftertaste, doesn’t match the description on the printed sheet — possibly mislabelled. Rating 2. Discard, with reason quality mismatch — follow up with supplier.
Back to the Pecorino. The kitchen already carries Pecorino Romano DOP on the pantry list, sourced from a different producer. The chef taps Approve & promote, picks Link to an existing inventory item, finds Pecorino Romano DOP in the search, confirms. The new supplier product is created on the supplier’s catalogue and linked to the pantry row. On the pantry row’s 🚛 Suppliers tab, the new product now sits alongside the current preferred one — same canonical name, two sources, one click to switch when the chef is ready.
She doesn’t switch yet. She orders the next batch from the new source on Thursday’s PO and tastes it again in a real cacio e pepe service. Two weeks later the kitchen flips Preferred to the new supplier. The Saint-Joseph from a different rep on the same Tuesday — logged against a prospective supplier — sits in Received until the chef onboards the producer through the suppliers page, then gets promoted on its own path the following month.
The Caciocavallo and the Fontina rows stay in the system, in their final states, with the chef’s notes visible. Six months from now when the same rep brings the same Caciocavallo, the chef opens the Samples list, filters to that supplier, sees the row from March, and the conversation skips the tasting — we tried this, the answer is still no, what else have you got?
Related features
- Inventory — overview — the live pantry the Samples ledger deliberately stays out of until promotion
- Editing an inventory item — the 🚛 Suppliers tab is where a promoted sample shows up as a new supplier product on an existing row
- Storage locations — the catalogue the Storage location field on a sample row picks from
- Suppliers — overview — onboard a prospective supplier here before promoting their sample
- Where your information lives — the five rooms of the system; samples are a side room off the pantry, kept apart from the live shelves