Stop the leak: 10 AI skills for what your suppliers charge you

order-sheet

one sheet per supplier, nothing forgotten or ordered twice

How the two work together

Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.

Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.

No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.

Prompt for Claude

---
name: order-sheet
description: Builds one standing order sheet per supplier from your recent invoices, with pack sizes, par levels, cut-off times and minimum order values, so orders go out complete and nothing gets ordered twice.
---

# One sheet per supplier, so nothing is forgotten and nothing is ordered twice

You give me the last eight weeks of invoices or delivery notes from one supplier, plus how you order from them and which days they deliver. You get back a single order sheet for that supplier: every line you actually buy, in the order you walk the building, with a par level, the pack the supplier really sells, their cut-off time and their minimum order value on the top of the page. One sheet per supplier, printed or on the phone, filled in the same way every week by whoever is on shift.

## What it does

1. **Take one supplier at a time and start from their invoices, never from memory.** Ask for the last eight weeks of invoices, delivery notes or the statement from that one supplier. List every product line that appears, then delete any line bought only once in eight weeks, because that is a one-off and does not belong on a standing sheet. For every line that stays, copy across four things exactly as the supplier prints them: their product code, their description, the pack size, and the price you last paid with the date you paid it.

2. **Write the header block, including the two numbers that cost real money.** At the top of the sheet record: supplier name, account number, rep's name and mobile, how you order (portal, app, WhatsApp, phone), delivery days, the order cut-off time for each delivery day, the minimum order value, what happens if you are under it, the lead time, and how many days you have to claim a shortage or credit. These numbers differ wildly by supplier: JJ Foodservice publishes "Orders can be placed up to 8pm for a guaranteed delivery slot the following day" with a "minimum order value of just £79" (JJ Foodservice, company news, updated 23 February 2024). Anything you do not know goes on the sheet as a blank marked "confirm with supplier", never as a guess.

3. **Record a separate cut-off for any product line the supplier treats differently.** One supplier can have more than one cut-off. Dunsters Farm sets 4pm for general orders and 2pm for fresh meat (Dunsters Farm, 10 February 2025). So if the supplier handles fresh meat, fish, bread or specials on a tighter clock, write that clock beside those lines on the sheet, not just at the top. This is the single most common reason an order is placed on time and still arrives short.

4. **Put the lines in the order you physically walk the building.** Group them by where they are stored: walk-in chiller, freezer, dry store, cellar, bar, then chemicals and disposables. Reading the sheet top to bottom should take you round the building once, without doubling back. Lightspeed suggests arranging a par sheet "alphabetically, by vendor or by section of your menu or kitchen" (Lightspeed, 30 March 2022); pick the kitchen-section version, because alphabetical order makes a counter walk the same fridge four times and that is how lines get missed.

5. **Set a par level for each fixed line from counted usage.** The par is what you need on the shelf to reach the next delivery without running out. Use the WISK formula, "Normal Inventory Used Per Week + Safety Net = Par Level" (WISK, 2 January 2025), divided across deliveries if the supplier comes more than once a week, which Lightspeed states as "Amount of Inventory Used Each Week / Number of Inventory Deliveries Per Week = Par Level" (Lightspeed, 30 March 2022). For the safety net on long-life lines use WISK's guidance that "10% of your average inventory usage should be regarded as a safety stock", and round up. Write the par in the same unit the line is counted in, so a par of 3 means three cases if you count cases, and say so in the Pack column.

6. **Round every par up to the pack the supplier actually sells.** A par of 2.4 cases is not orderable. The inventory-demand-planning skill in the affaan-m/ECC repository makes the point that a calculated order quantity is meaningless "if the vendor ships in cases of 24", and that rounding to vendor case packs is mandatory. Do the rounding once, here, and write the rounded number in the Par column, so the person counting at 6am never has to do arithmetic. If rounding up puts a slow line badly over, drop the par by one pack and note "tight" beside it rather than carrying dead stock.

7. **Flag the lines that change every week instead of giving them a par.** Fresh fish, salad, soft herbs, milk into a busy weekend, anything driven by a booking or an event: mark these VAR and leave the Par cell empty. Beside each VAR line write the one thing that sets the number, for example "2 bookings of 20 Sat" or "counted Friday am". A percentage buffer on a three-day-life product is not safety stock, it is waste, so these lines are counted and decided each time rather than built to a standing number.

8. **Add the count-and-order columns, with one subtraction and a double-order guard.** The line columns run: Line, Item (supplier's own description), Code, Pack, Last price and date, Where, Par, On hand, On order, Event extra, Order. The Order cell is Lightspeed's calculation, "Par Level – Current Inventory Level + Emergency Supply + Special Use Supply = Order Amount" (Lightspeed, 30 March 2022), with the On order column subtracted as well. On order is the guard against ordering twice: at the foot of the sheet keep a three-field block reading "Last order placed: date / by whom / delivery expected", filled in the moment the order is sent.

9. **Finish with the delivery check and the record line, then set a review date.** Add a footer the person receiving goods signs: is it what you ordered, is the chilled and frozen food cold enough, is the packaging undamaged. Government guidance for caterers is direct that you must check "it is what you ordered" and keep records of "all the suppliers that provide you with food or any food ingredients", holding the "name and address of supplier", "type of and quantity of products" and "dates of transaction and of delivery" (GOV.UK, Managing food safety, updated 21 August 2026). Because the invoice usually carries those details, the footer's job is to say where the invoice is filed and who filed it. Last, print a review date three months ahead on the header, and recount pars on that date or sooner if the menu changes.

## Then it checks

1. Every line carries the supplier's own product code, a pack size and a last price with the date it was paid, and no line is described only as "a box" or "the usual".
2. The header shows a cut-off time against each delivery day, a minimum order value, and what happens below that minimum, with any unknown written as "confirm with supplier" rather than filled with a number.
3. Every line with a par has that par expressed as a whole number of the supplier's pack, never a fraction and never a loose unit the supplier does not sell.
4. Reading the sheet from the first line to the last visits each storage area once, in the order a person would walk them.
5. Every VAR line has an empty Par cell and a written reason it varies, and no VAR line has been given a standing number.
6. The sheet has a last-order block with date, who placed it and the delivery expected, and a delivery footer naming the supplier, the products, the quantity and both dates.

Any check fails: name it, redo that step once. Failed twice: say what is wrong and stop.

## Rules
- Public information only.
- Never invent a fact, a number or a quote.
- Never invent a supplier's cut-off time, minimum order value, product code, pack size or lead time. Leave the cell blank and mark it "confirm with supplier". A guessed cut-off reads as fact to the person filling the sheet at 6am, the order misses the van, and the kitchen is short on a trading day; a blank cell just gets a phone call.
- Never write a price that did not come off an invoice, and always keep the date beside it. An invented or undated price hides a price rise, and the whole point of the last-price column is that the owner sees the rise on the sheet before it reaches the P&L.
- Never carry forward a par that was not worked out from counted usage, and never soften a par that came out awkwardly low. A made-up par causes both faults at once, empty shelves on the fast lines and cash sitting in the dry store on the slow ones, and it is invisible until stocktake.
- The delivery-check and supplier-record part of this sheet is a working document prepared for the owner's environmental health officer or food safety adviser to check against the business's own food safety management system. It records what was ordered and what arrived. It is not food safety advice, it is not a HACCP plan, and it does not replace either.

## Built from
- GOV.UK, "Managing food safety", https://www.gov.uk/government/publications/managing-food-safety/managing-food-safety, updated 21 August 2026: gave the delivery-check questions and the exact supplier record fields (name and address of supplier, type and quantity of products, dates of transaction and of delivery) that the sheet's footer is built around.
- JJ Foodservice, "Same Great Service, No Matter What", https://www.jjfoodservice.com/blog/company-news/same-great-service-no-matter-what-order-up-to-8pm-for-next-day-delivery-with-a-79-minimu, updated 23 February 2024: a real published UK cut-off time and minimum order value, showing why both belong in the header rather than in someone's head.
- Dunsters Farm, "New Order Cut-Off Times for Next-Day Delivery", https://dunstersfarm.com/cut-off-times-for-next-day-delivery/, 10 February 2025: proved that one supplier can run two cut-offs (4pm general, 2pm fresh meat), which is why step 3 puts a cut-off beside the affected lines.
- WISK, "The Best Way to Set Up a Par Inventory Sheet", https://www.wisk.ai/blog/the-best-way-to-set-up-a-par-inventory-sheet, 2 January 2025: supplied the par formula, the 10% safety stock guidance for long-life lines, and the decision to build one sheet per supplier rather than one by food category.
- affaan-m/ECC, "inventory-demand-planning/SKILL.md", https://github.com/affaan-m/ECC/blob/main/skills/inventory-demand-planning/SKILL.md, no publication date shown on the file, read 13 September 2026; 257,198 stars read from api.github.com: gave the rule that any calculated quantity must be rounded to the supplier's real case pack before it goes on a sheet.

Prompt for Codex

# order-sheet

## You are given
A folder from a UK hospitality business covering one supplier: the last eight weeks of invoices, delivery notes or statements (PDF, photograph or CSV), and a text file giving the supplier name, account number, rep's name and mobile, how orders are placed, delivery days, cut-off times, minimum order value, lead time and the claim window. Counted usage per week may be supplied in a CSV, and a note may say which lines vary week to week and where each line is stored. Assume the header details are half filled in, the invoices do not use the same description twice, and nobody has said which storage area some lines belong to.

## Produce
Write into an `output/` folder next to the inputs:

1. `order-sheet-<supplier-slug>.xlsx` with two sheets, `Header` and `Order sheet`.
   `Header` has two columns, `Field` and `Value`, and these rows in this order: `Supplier name`, `Account number`, `Rep name`, `Rep mobile`, `How we order`, `Delivery days`, `Cut-off time per delivery day`, `Minimum order value (GBP)`, `What happens below the minimum`, `Lead time`, `Days to claim a shortage or credit`, `Sheet built from invoices dated`, `Review date`. Any value not supplied reads `confirm with supplier`.
   `Order sheet` has these columns in this order: `Line`, `Item (supplier's own description)`, `Code`, `Pack`, `Last price net of VAT (GBP)`, `Last price date`, `Where`, `Cut-off if different`, `Par`, `On hand`, `On order`, `Event extra`, `Order`. `On hand`, `On order` and `Event extra` are left empty for the person counting. `Order` carries the formula `Par` minus `On hand` minus `On order` plus `Event extra`.
   At the foot of the sheet, a three-field block: `Last order placed: date`, `by whom`, `delivery expected`.
   Below that, a delivery footer with four fields the receiver signs: `Is it what we ordered`, `Are the chilled and frozen lines cold enough`, `Is the packaging undamaged`, `Where the invoice is filed and who filed it`.
2. `order-sheet-<supplier-slug>.csv` - the `Order sheet` tab, flat.
3. `order-sheet-<supplier-slug>.md` - one printable A4 page, header block at the top, lines grouped under headings in this order: walk-in chiller, freezer, dry store, cellar, bar, chemicals and disposables. Only the areas that have lines appear.
4. `dropped-lines.csv` with columns: `Item (supplier's own description)`, `Code`, `Pack`, `Times bought in the window`, `Date bought`, `Price net of VAT (GBP)`, `Reason dropped`. Every line bought once in eight weeks.
5. `price-changes.csv` with columns: `Code`, `Item`, `Pack`, `Earliest price net of VAT (GBP)`, `Earliest invoice number`, `Earliest invoice date`, `Latest price net of VAT (GBP)`, `Latest invoice number`, `Latest invoice date`, `Difference (GBP)`, `Difference %`, `Number of separate prices in the window`.
6. `confirm-with-supplier.csv` with columns: `Field`, `Where it belongs` (header, or a named line), `What was looked for`, `What was found`. One row per blank left on the sheet.
7. `var-lines.csv` with columns: `Item`, `Code`, `Pack`, `Where`, `What sets the number`. The `Par` cell for every one of these lines is empty on the sheet.
8. `README.md` - the files read, the invoice date range, the number of lines kept, the number dropped, and the header fields that could not be filled.

## Rules
- Build the line list from the invoices, never from memory or from a previous sheet. Copy the supplier's product code, description and pack size exactly as the supplier prints them.
- Never invent a cut-off time, a minimum order value, a product code, a pack size or a lead time. Leave the cell blank, write `confirm with supplier`, and add a row to `confirm-with-supplier.csv`. A guessed cut-off reads as fact at 6am.
- Never write a price that did not come off an invoice, and always keep the invoice date beside it. Prices go in net of VAT and are labelled as such.
- Every `Par` is a whole number of the pack the supplier actually sells. Never write a fraction and never write a loose unit the supplier does not sell. Where rounding up puts a slow line badly over, drop it by one pack and write `tight` in the `Where` column beside it.
- A par is only written where counted usage was supplied for that line. Where no counted usage was supplied, leave `Par` empty and add the line to `confirm-with-supplier.csv`. Never carry over a par from an old sheet or one a supplier suggested.
- Lines flagged as varying week to week have an empty `Par` cell and a reason in `var-lines.csv`. Never give a VAR line a standing number.
- Where the supplier runs a tighter cut-off for a product group (fresh meat, fish, bread, specials), write that clock in `Cut-off if different` on those lines as well as in the header.
- Reading the sheet from the first line to the last must visit each storage area once, in the order a person would walk them. Never sort alphabetically. Lines with no storage area supplied go in a final group headed `Where not known` and get a row in `confirm-with-supplier.csv`.
- Round only at the point of display, to two decimal places.
- Use British English, £, and DD Month YYYY dates. No em dashes.
- The delivery-check and supplier-record part of this sheet is a working document prepared for the owner's environmental health officer or food safety adviser to check against the business's own food safety management system. Write no sentence that presents it as food safety advice or as a HACCP plan.

## Return
A list of the files written with their absolute paths, the number of lines on the sheet, the number dropped as one-offs, the number of VAR lines, the number of header fields reading `confirm with supplier`, and every line where the same product code was invoiced at more than one price in the window.

Built from the best public work on this

Sources for order-sheet

Everything below was opened and read on 13 September 2026. Nothing is cited that could not be loaded.

1. GOV.UK, "Managing food safety"

https://www.gov.uk/government/publications/managing-food-safety/managing-food-safety, published and last updated 21 August 2026.

This is the UK government's food safety guidance for small catering businesses, and it is the only legally grounded source in this pack. Two parts of it shaped the skill. First, the delivery check: the guidance says that when food arrives you must check "it is chilled and frozen food is cold enough", that "the packaging is not damaged", and that "it is what you ordered", which is exactly the three-question footer in step 9. Second, the records: a business must keep records of "all the suppliers that provide you with food or any food ingredients", holding the "name and address of supplier", the "type of and quantity of products" and the "dates of transaction and of delivery", and "All your records need to be kept up-to-date and be available for inspections at all times." That list is why the order sheet's footer records where the invoice was filed and by whom, rather than duplicating the invoice. Where this skill goes further than the source: the guidance is written as a food safety duty, and the skill deliberately reframes it as a purchasing habit, because an owner who is already writing the delivery down to stop double-ordering will keep the record reliably, whereas a separate food safety folder tends to be filled in on the morning of an inspection. The skill also refuses to present any of this as food safety advice, which is why the final rule sends the document to the owner's environmental health officer or food safety adviser to check.

2. JJ Foodservice, "Same Great Service, No Matter What"

https://www.jjfoodservice.com/blog/company-news/same-great-service-no-matter-what-order-up-to-8pm-for-next-day-delivery-with-a-79-minimu, updated 23 February 2024.

A live UK foodservice wholesaler publishing its own ordering terms, which is why it is cited in preference to any article summarising the sector. The page states "Orders can be placed up to 8pm for a guaranteed delivery slot the following day" and a "minimum order value of just £79", with the qualifier "*Subject to delivery area". Two decisions came from it. The header block in step 2 carries the cut-off time and the minimum order value as named fields, because these are the two supplier facts that most often turn a correct order into a missed or refused one, and they are the two an owner is most likely to be carrying in their head from three years ago. The asterisk mattered too: because terms vary by delivery area, the skill forbids filling a cut-off or minimum from a published figure found elsewhere and requires "confirm with supplier" on any unknown. This skill does not treat £79 or 8pm as typical or as a benchmark; the figure is used only as evidence that such terms exist, are published, and differ.

3. Dunsters Farm, "New Order Cut-Off Times for Next-Day Delivery"

https://dunstersfarm.com/cut-off-times-for-next-day-delivery/, 10 February 2025.

A second UK wholesaler, chosen specifically because its terms contradict the simple picture. Dunsters Farm runs a 4pm cut-off for general orders and a 2pm cut-off for fresh meat, explaining that the adjustment lets them "guarantee that all orders, especially our Fresh Meats, are prepared fresh and with the quality you expect." Set beside JJ Foodservice's single 8pm cut-off, this proves the thing a one-supplier-one-time order sheet gets wrong: a cut-off is a property of a product line, not only of a supplier. That produced step 3, which is otherwise absent from every par sheet template found during this research. None of the template sources, including the two par sheet guides below, carry a cut-off column or field at all, which is a real gap in the public material; they treat ordering as an arithmetic problem and ignore the clock. The disagreement is deliberate and it is the part of this skill that comes from UK trade practice rather than from a template.

4. WISK, "The Best Way to Set Up a Par Inventory Sheet"

https://www.wisk.ai/blog/the-best-way-to-set-up-a-par-inventory-sheet, 2 January 2025.

A hospitality inventory software vendor's how-to guide on par sheets, and the clearest statement found of the underlying formulas. It gives the par calculation as "Normal Inventory Used Per Week + Safety Net = Par Level" and the order calculation as "Par Level - Remaining Inventory = Order Size", with a worked example of 22 bags minus 9 bags equalling 13 bags to order. It advises that "10% of your average inventory usage should be regarded as a safety stock", while also noting a common industry figure of "roughly 20-30% of weekly invoice usage" held as safety stock. It recommends organising by supplier where there are multiple vendors and by material type where there are only one or two, which is the direct source of this skill's one-sheet-per-supplier structure. This skill disagrees with the source in two places. First, it applies the 10% safety net only to long-life lines and refuses to apply any percentage buffer to short shelf-life fresh produce, fish or dairy, because a 10% buffer on a three-day product is not resilience, it is a bin charge; those lines are marked VAR and decided each order instead. Second, the skill rejects the higher 20 to 30% figure entirely for a small independent site: at that level the buffer stops being a safety net and becomes working capital sitting in a dry store, which is the exact problem an owner asking for an order sheet is usually trying to solve. The same page's cross-check on formulas was corroborated by Lightspeed, "Par Inventory Sheet: What it is and How to Use One Effectively", https://www.lightspeedhq.com/blog/par-inventory-sheet/, 30 March 2022, which states the fuller order calculation "Par Level – Current Inventory Level + Emergency Supply + Special Use Supply = Order Amount" and the per-delivery par "Amount of Inventory Used Each Week / Number of Inventory Deliveries Per Week = Par Level", both used verbatim in steps 5 and 8. Lightspeed also suggests arranging a sheet "alphabetically, by vendor or by section of your menu or kitchen"; this skill takes only the kitchen-section option and rejects alphabetical ordering outright, because alphabetical order sends the person counting back to the same chiller repeatedly and that is where missed lines come from.

5. affaan-m/ECC, "skills/inventory-demand-planning/SKILL.md"

https://github.com/affaan-m/ECC/blob/main/skills/inventory-demand-planning/SKILL.md, no publication date shown on the file, read 13 September 2026. Repository star count 257,198, read from api.github.com on 13 September 2026 (the first two API calls were rate limited; the figure above is from a successful call after the limit reset, not from a badge or a search snippet).

This is a working agent skill for inventory reordering, and it is the most rigorous public artefact found for this job. It defines safety stock as "SS = Z × σ_d × √(LT + RP)", the reorder point as "ROP = average demand during lead time + safety stock", economic order quantity as "EOQ = √(2DS/H)", and a periodic review method: "Review inventory every R periods, order up to target level S." One thing was taken from it wholesale: the practical constraint that a calculated quantity is meaningless "if the vendor ships in cases of 24", and that rounding to vendor case packs, layer quantities or pallet tiers is mandatory. That became step 6. Everything else was rejected on purpose, and the rejection is the most useful thing in this document. A restaurant owner does not have a demand standard deviation, a service-level z-score or a holding cost per unit per year, and cannot get them without the software they do not have. Applying the source's method to a forty-cover pub would produce a par sheet nobody can rebuild in three months when the menu changes, which makes it worse than the tatty printed sheet it replaced. So this skill keeps the source's structural insight, that a standing order sheet is a periodic review system with an order-up-to level, and replaces its mathematics with counted usage over eight weeks plus a rounded safety net. It also declines the source's A/B/C vendor review cadence of weekly, bi-weekly and monthly by spend, because a single site orders on the supplier's delivery days and has no freedom to choose a review frequency.

Best public prompt we found for this job

The best public artefact for this job is the `inventory-demand-planning` SKILL.md in the affaan-m/ECC repository (257,198 stars, read from api.github.com on 13 September 2026). The line worth copying is its periodic review rule:

"Review inventory every R periods, order up to target level S."

That single line is the whole mechanism of a standing order sheet, stated more precisely in nine words than most hospitality par sheet templates manage in a page: the count happens on a fixed rhythm set by the supplier's delivery days, and the order is never "how much do we want" but "how much to get back up to the number already written down". Everything else on a good order sheet exists to make those two things possible for someone who is not the owner and is doing it at six in the morning.

Want this running in your business?

I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.