Stop the leak: 10 AI skills for what your suppliers charge you
price-check
what they invoiced against what you agreed, line by line
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: price-check description: Compares a supplier's invoices against the price you agreed, line by line, and produces the list of lines to challenge with the money attached. --- # Find out exactly what your supplier overcharged you, and how much to ask back You give this the invoices from one supplier, whatever you have in writing about the prices you agreed, and the delivery notes. It gives you back a list of the lines where the charge does not match the agreement, each with the pounds and pence attached, sorted biggest first, in wording you can send to your account manager. It never guesses at a price you cannot evidence. ## What it does 1. **Pin down one supplier, one period, and three piles of paper before anything else.** Take the invoices for a single supplier across a stated date range, the written agreement on prices (a signed price list, a tender response, an order confirmation, or the email where the rep set out the rates), and the delivery notes or goods received notes for those same deliveries. Write the supplier name, your account number and the exact date range at the top of the output, because a challenge that covers a vague period gets bounced. If there is nothing in writing about prices at all, say so in one line and use the last invoice before the period as the comparison baseline, clearly labelled as "last invoice price, not an agreed price". 2. **Type every invoice line into one table before comparing a single figure.** The columns are: invoice number, invoice date, delivery note number, supplier product code, description, pack size as printed (for example 6 x 2kg, 12 x 1L, 1 x 5kg), quantity charged, unit of measure, unit price excluding VAT, line total excluding VAT, VAT rate. A full VAT invoice must already carry most of this: HMRC's guidance at VATREC5010 requires "the quantity of the goods or the extent of the services" and "the unit price". If a line does not show a unit price or a quantity, record it as its own finding, because you cannot check a price that the supplier has not shown you. 3. **Convert every line to a price per base unit before you compare anything.** Base units are per kilogram, per litre, or per single item, never per case. A 6 x 2kg case at £54.00 is £4.50 per kg; a 6 x 1.8kg case at £52.00 looks cheaper per case and is £4.81 per kg. Pack sizes change between order cycles while the case price stays still, so a comparison of case prices will miss the increase entirely. Show both the case figure and the per-base-unit figure in the table so the owner can see the conversion. 4. **Match invoice lines to the agreed price on the product code first, and never on description alone.** Supplier product codes are the only stable key; descriptions get shortened, reworded and reused across different packs. Where the code on the invoice does not appear on the agreed price list, do not force a match to something that sounds similar. Put those lines in a separate list headed "no agreed price found for this code", and keep them out of the money total for the rest of the run. 5. **Compare charged price against agreed price per base unit, and name the cause of each gap.** Flag every difference of one penny or more per base unit; a contract price has no rounding tolerance. Classify each one as a rate that has drifted above the agreed list, a price from a superseded week, or an increase the supplier applied without the notice your contract requires. Supy's analysis of restaurant invoices names quantity discrepancies and prior-week rate charging as "the two most common overcharge mechanisms", describing the second as where a "supplier invoices at last week's price rather than the current agreed rate". On the notice point, the UK hospitality supplier guide from Jelly is blunt: "without an express contractual mechanism a supplier is not entitled to vary price unilaterally", so an uplift with no contractual mechanism behind it belongs on the challenge list, not in your food cost. 6. **Check quantity against the delivery note, not against the invoice.** The invoice is the supplier's account of what they sent; the delivery note signed in your kitchen is the record of what arrived. Compare them line by line and flag any case, kilo or litre charged that the delivery note does not show, and any line where someone wrote a shortage or refusal on the note and no credit note followed. Where a delivery note is missing for an invoice, say "no delivery note held" against that invoice rather than assuming the quantity was right. 7. **Test every line marked market price, MP, or daily quote separately.** These are usually fresh produce, fish and meat, and they sit outside the fixed list on purpose. For each one, ask for the quote sheet or price email for that delivery week and compare against it. If no quote sheet exists for that week, the line has no agreed price and cannot be challenged on price alone; list it as "market price, no quote sheet held" and tell the owner to ask the supplier to send the weekly sheet from now on. 8. **Take cost-plus and rebate arrangements apart into the cost and the plus.** If you buy on cost plus a percentage, check both halves: that the mark-up percentage on the invoice is the one you agreed, and that the underlying cost figure is evidenced by something you can see. The cost side is the half nobody checks, and it is the half that was litigated in the U.S. Foodservice cost-plus class action decided by the Second Circuit on 30 August 2013, where the "cost" the customers were billed on was alleged to have been inflated through intermediary companies before it ever reached the invoice. Do the same for rebates and volume discounts: work out what the agreed rate should have produced for the period's spend, compare it to what was actually credited, and list any shortfall as its own line. 9. **Write the challenge list sorted by money, with the sentence to send underneath it.** Each row carries: invoice number, invoice date, product code, description, price charged per base unit, price agreed per base unit, difference per unit, quantity, total overcharge in pounds, and the name and date of the document the agreed price came from. Total the column, then write a short request for a credit note quoting the invoice numbers and the total, with no adjectives and no accusation. Keep three lists separate and clearly headed: challenge these, no agreed price found, and price rises that appear to be contractually valid, because sending the third group as a claim is how the first two get ignored. ## Then it checks 1. Every row on the challenge list shows an invoice number, an invoice date, a product code, a price charged, a price agreed and a total in pounds and pence, with no row reading "approx", "circa" or "tbc". 2. Every agreed price in the output names the document it came from and that document's date, and no agreed price is sourced from a previous invoice unless that row is labelled "last invoice price, not an agreed price". 3. Every price comparison is expressed per kilogram, per litre or per item, with the same unit on both sides of the comparison, and no row compares a case price to a weight price. 4. The stated total equals the sum of the individual line totals when added up, and the arithmetic on each row (difference per unit multiplied by quantity) reproduces that row's total. 5. Lines with no agreed price to compare against appear only in the "no agreed price found" list and contribute nothing to the challenge total. 6. Every market-price and cost-plus line either names the quote sheet or cost document it was checked against, or appears as "unverifiable, ask the supplier for the figures". 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 fill a missing agreed price with an estimate, a competitor's website price, or a figure from another supplier. One made-up number in a claim gives the supplier grounds to dismiss the whole list, including the overcharges that are real. - Never smooth a pack-size conversion to make two lines comparable. If the invoice does not state the pack size, say the line cannot be checked rather than assuming the pack you usually buy, because a claim built on the wrong pack size is a claim the supplier can prove wrong. - Never present a price rise that the contract permitted as an overcharge, and never present a suspicion as a finding. Mixing a valid increase into a credit request costs the owner the goodwill of the account manager who has to approve the genuine credits. - This output is a working document prepared for the owner's accountant or solicitor to check before any money is claimed or withheld. It reads invoices and states arithmetic; it is not legal advice on your supply contract, and nothing in it should be treated as a ruling on what the contract entitles you to. ## Built from - Supy, "Supplier Overcharging Restaurants: How Undetected Invoice Errors Drain Food Cost Margin", https://supy.io/blog/learn-supplier-overcharging-restaurants, 20 June 2026: the three failure shapes the comparison sorts gaps into, and the finding that quantity discrepancies and prior-week rates are the two most common, which is why step 6 checks the delivery note separately. - Dana Moran, "Analysis: 35% of college food invoices have overcharges", FoodService Director, https://www.foodservicedirector.com/colleges-universities/analysis-35-of-college-food-invoices-have-overcharges, 22 February 2016: the scale that justifies checking every line rather than spot-checking, and the observation that a typical overcharge is a small percentage of a large invoice, which set the one-penny-per-base-unit flag threshold. - HM Revenue & Customs, "VATREC5010 - VAT invoice: Details which must be shown on a full VAT invoice", https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec5010, last updated 16 January 2025: the column list in step 2, and the basis for treating a missing unit price or quantity as a finding in its own right. - Jelly, "Supplier Price Fluctuation Management for UK Hospitality", https://blog.getjelly.co.uk/supplier-price-fluctuation-management-uk/, 25 August 2026, updated 4 September 2026: the UK position that a supplier cannot vary price unilaterally without a contractual mechanism, and that notice periods come from the contract rather than from statute, which is what separates a challengeable uplift from a valid one. - FindLaw, "In re: U.S. Foodservice Inc. Pricing Litigation", United States Court of Appeals for the Second Circuit, https://caselaw.findlaw.com/court/us-2nd-circuit/1642931.html, decided 30 August 2013: the reason step 8 checks the cost half of a cost-plus deal as well as the mark-up.
Prompt for Codex
# price-check ## You are given A folder from a UK hospitality business covering one supplier and one stated date range: the invoices (PDF, photograph or CSV), whatever is in writing about the prices agreed (a signed price list, a tender response, an order confirmation, or the email where the rep set out the rates), the delivery notes or goods received notes for those same deliveries, any weekly quote sheets for market-price lines, and any rebate or cost-plus agreement. The supplier name, account number and date range are supplied in a text file. Assume pack sizes are printed inconsistently, descriptions have been reworded between invoices, and some invoices have no matching delivery note. ## Produce Write into an `output/` folder next to the inputs: 1. `invoice-lines.csv` with these columns in this order: `Invoice number`, `Invoice date`, `Delivery note number`, `Supplier product code`, `Description`, `Pack size as printed`, `Quantity charged`, `Unit of measure`, `Unit price excluding VAT (GBP)`, `Line total excluding VAT (GBP)`, `VAT rate`, `Price per base unit excluding VAT (GBP)`, `Base unit` (kg, litre or item), `Source file`. Every line on every invoice in the range appears here once. 2. `challenge-list.csv` with these columns in this order: `Invoice number`, `Invoice date`, `Supplier product code`, `Description`, `Price charged per base unit excluding VAT (GBP)`, `Price agreed per base unit excluding VAT (GBP)`, `Difference per base unit (GBP)`, `Quantity`, `Base unit`, `Total overcharge (GBP)`, `Agreed price document`, `Document date`, `Cause`. `Cause` holds exactly one of: `rate above the agreed list`, `price from a superseded week`, `increase applied without the notice the contract requires`. Sorted by `Total overcharge (GBP)`, highest first, with the column total at the foot. 3. `no-agreed-price.csv` with columns: `Invoice number`, `Invoice date`, `Supplier product code`, `Description`, `Pack size as printed`, `Price charged per base unit excluding VAT (GBP)`, `What was searched for`, `Nearest code on the agreed list`. These rows contribute nothing to the challenge total. 4. `valid-increases.csv` with columns: `Invoice number`, `Invoice date`, `Supplier product code`, `Description`, `Old price per base unit excluding VAT (GBP)`, `New price per base unit excluding VAT (GBP)`, `Difference per base unit (GBP)`, `Clause or notice that permits it`, `Document and date`. Sent to nobody as a claim. 5. `quantity-differences.csv` with columns: `Invoice number`, `Invoice date`, `Delivery note number`, `Supplier product code`, `Description`, `Quantity on the invoice`, `Quantity on the delivery note`, `Difference`, `Unit price excluding VAT (GBP)`, `Value of the difference (GBP)`, `Shortage written on the note` (yes/no), `Credit note raised` (number, or `none`). Where no delivery note is held for an invoice, the row reads `no delivery note held` and the quantity is not assumed correct. 6. `market-price-lines.csv` with columns: `Invoice number`, `Invoice date`, `Supplier product code`, `Description`, `Price charged per base unit excluding VAT (GBP)`, `Quote sheet for that week` (file name, or `no quote sheet held`), `Quoted price per base unit excluding VAT (GBP)`, `Difference per base unit (GBP)`, `Checkable` (yes/no). 7. `cost-plus-and-rebates.csv` with columns: `Arrangement`, `Agreed mark-up %`, `Mark-up % on the invoice`, `Underlying cost figure charged (GBP)`, `Document evidencing that cost`, `Agreed rebate rate`, `Spend in the period net of VAT (GBP)`, `Rebate the rate should have produced (GBP)`, `Rebate actually credited (GBP)`, `Shortfall (GBP)`, `Verifiable` (yes / `unverifiable, ask the supplier for the figures`). 8. `challenge-email.md` - subject line: the account number, the date range and the words `price query`. Body: one short paragraph, the challenge table, the total in pounds and pence, and a request for a credit note quoting the invoice numbers and the total. No adjectives and no accusation. The three lists stay separate and clearly headed; only the challenge list is sent. 9. `conversions.csv` with columns: `Supplier product code`, `Pack size as printed`, `How it was read`, `Units in the pack`, `Base unit`, `Case price excluding VAT (GBP)`, `Price per base unit excluding VAT (GBP)`. One row per distinct pack size seen, so the conversion can be checked. 10. `README.md` - the supplier name, the account number, the exact date range, the files read, the number of invoice lines, the number challenged, the challenge total, and whether an agreed price document was held or the last invoice before the period was used as the baseline. ## Rules - Match on the supplier's product code first, and never on description alone. A code on the invoice that does not appear on the agreed price list goes to `no-agreed-price.csv`. Never force a match to something that sounds similar. - Convert every line to a price per kilogram, per litre or per single item before comparing anything. Never compare a case price to a case price, and never compare a case price to a weight price. - Never smooth a pack-size conversion. If the invoice does not state the pack size, the line cannot be checked; put it in `no-agreed-price.csv` with `pack size not stated` in the search column. - Flag every difference of one penny or more per base unit. A contract price has no rounding tolerance. - Never fill a missing agreed price with an estimate, a web price, a competitor's price or a figure from another supplier. Where there is nothing in writing about prices at all, use the last invoice before the period as the baseline and label every affected row `last invoice price, not an agreed price`. - Never put a price rise the contract permitted into the challenge list. It goes in `valid-increases.csv` and is not sent. - Check quantity against the delivery note, never against the invoice. A missing delivery note is recorded, not assumed away. - All prices go in excluding VAT and are labelled as such. The stated challenge total must equal the sum of the line totals, and difference per unit multiplied by quantity must reproduce each row's total exactly. - No cell may read `approx`, `circa` or `tbc`. - Round only at the point of display, to two decimal places. - Use British English, £, and DD Month YYYY dates. No em dashes. - The output is a working document prepared for the owner's accountant or solicitor to check before any money is claimed or withheld. Write no sentence about what the contract entitles anyone to. ## Return A list of the files written with their absolute paths, the number of invoice lines read, the number on the challenge list, the challenge total in pounds and pence, the number in `no-agreed-price.csv`, the number of market-price lines with no quote sheet, and whether the baseline was an agreed price document or the last invoice before the period.
Built from the best public work on this
Sources for price-check
Everything below was opened and read on 13 September 2026. Nothing is cited that could not be loaded.
1. Supy, "Supplier Overcharging Restaurants: How Undetected Invoice Errors Drain Food Cost Margin"
https://supy.io/blog/learn-supplier-overcharging-restaurants, published 20 June 2026.
Supy sells restaurant inventory and procurement software, so this is a vendor article, but it is the only source found that describes the failure shapes in the words an operator would recognise. It reports an analysis of over 11,000 invoices from 400 restaurants finding "at least one overcharge in 35% of cases", and names quantity discrepancies and prior-week rate charging as "the two most common overcharge mechanisms", describing the latter as where a "supplier invoices at last week's price rather than the current agreed rate". Three decisions in the skill come from it. Step 5 sorts every price gap into contracted rate drift, a superseded week's price, or an uplift with no notice behind it, which is that article's taxonomy. Step 6 compares quantity to the delivery note rather than to the invoice, because if quantity errors are one of the two commonest mechanisms then the invoice's own quantity column is the thing under test and cannot also be the reference. And the article's point that most of this reads as routine rather than fraudulent is why step 9 insists on wording with no accusation in it. Where the skill disagrees: the article's conclusion is that you need software to catch this, and that does not follow from its own evidence. The evidence is that the comparison is never done, not that it is impossible by hand. A single supplier, a month of invoices, the delivery notes and one spreadsheet is a morning's work for an owner, and the skill is written for exactly that, with no product in it.
2. Dana Moran, "Analysis: 35% of college food invoices have overcharges", FoodService Director
https://www.foodservicedirector.com/colleges-universities/analysis-35-of-college-food-invoices-have-overcharges, published 22 February 2016.
A trade press report on an audit by Buyers Edge, a firm that the article says processes around $3 billion of invoices a year from 350 distributors, covering $6 million of college and university foodservice invoices from 2015. It states that "35 percent of the invoices received by colleges and universities from their foodservice distributors contain at least one overcharge", and that "typical overcharges amount to about 1.5% of the total dollar amount of each invoice but can often also be in excess of 10%". That second figure is what set the thresholds in the skill. If the typical error is a small fraction of a large invoice, then a spot check of the three most expensive lines will miss most of it, which is why step 2 requires every line to be transcribed and step 5 flags any gap of a penny or more per base unit rather than using a percentage tolerance. The article also lists causes that are administrative rather than deliberate, including contracts submitted after deadlines and data entry errors, which supports the same non-accusatory tone as source 1. Where the skill disagrees, or rather declines to follow: this is United States college catering data from 2015, and a UK restaurant is not that. The skill therefore never quotes the 35% figure to an owner as if it described their supplier or their country. It uses it only to justify checking everything, and the skill's own output contains no borrowed statistics at all.
3. HM Revenue & Customs, "VATREC5010 - VAT invoice: Details which must be shown on a full VAT invoice"
https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec5010, last updated 16 January 2025.
The HMRC internal manual page setting out what a full VAT invoice must contain in the UK. Among the required particulars are a description sufficient to identify the goods, "the quantity of the goods or the extent of the services", "the unit price", "the rate of VAT and the amount payable, excluding VAT", and the gross total payable excluding VAT. This is the only primary UK source in the set and it does two jobs in the skill. First, it is where the column list in step 2 comes from: the owner is not asking the supplier for anything unusual, because a compliant invoice already has to carry the quantity and the unit price. Second, it is why step 2 treats a line with no unit price or no quantity as a finding rather than as an obstacle, since a supplier who has not shown those figures has given the owner something they cannot check. Where the skill departs from the source: HMRC's list is about VAT compliance and nothing else. A perfectly compliant VAT invoice can overcharge you on every line, and an invoice that fails HMRC's list is not thereby evidence of an overcharge. The skill keeps the two findings separate for that reason, and never presents a missing particular as money owed.
4. Jelly, "Supplier Price Fluctuation Management for UK Hospitality"
https://blog.getjelly.co.uk/supplier-price-fluctuation-management-uk/, published 25 August 2026, updated 4 September 2026.
A UK hospitality software blog covering how supplier price increases are handled in British kitchens. Two statements in it shaped the skill. It states that "there is no statutory minimum notice period for B2B supplier price increases in the UK" and that "the required notice period is whatever the contract specifies", and, on the English law position, that "without an express contractual mechanism a supplier is not entitled to vary price unilaterally". That distinction is the whole of step 5's third category and the third list in step 9. Without it the skill would produce a list mixing genuine overcharges with lawful increases, which is the fastest way to get a real claim dismissed. Where the skill disagrees: the article's recommendations run towards drafting index-linked clauses with capped movements, and that is renegotiation, not audit. A price check looks backwards at what was charged against what was agreed, and putting contract drafting into the same document would blur the one thing the owner needs kept clean, which is the difference between money they can ask for back and terms they would like next year. More importantly, this is a vendor blog and not a legal source, and its statements about English law are the reason the skill's final rule exists at all: the output is a working document for the owner's accountant or solicitor to check, and it does not pretend to be advice on what a supply contract entitles anyone to.
5. FindLaw, "In re: U.S. Foodservice Inc. Pricing Litigation", United States Court of Appeals for the Second Circuit
https://caselaw.findlaw.com/court/us-2nd-circuit/1642931.html, decided 30 August 2013.
The Second Circuit's decision affirming class certification for roughly 75,000 cost-plus customers of U.S. Foodservice. The ruling describes cost-plus pricing as a model where the final charge is computed from a supplier cost figure plus an agreed surcharge, and sets out the allegation that the cost half was inflated before it ever reached the customer's invoice, through intermediary companies that re-invoiced goods at higher prices which were then presented as the underlying cost. This is the only source in the set that addresses the half of a cost-plus deal nobody audits, and it is the whole basis of step 8. An owner on a cost-plus arrangement who checks only that the mark-up percentage is right has checked the number the supplier is happy for them to check. Where the skill departs from the source, and this matters: it is a United States case, it concerned allegations at the certification stage rather than findings of fact against a UK supplier, and it carries no weight in England or Wales. The skill therefore takes the mechanism and nothing else. It tells the owner to ask for evidence of the cost figure, and it does not suggest, imply or hint that any supplier of theirs has done what was alleged in that case.
Best public prompt we found for this job
The closest public artefact is the `reconciliation` skill in Anthropic's own `knowledge-work-plugins` repository, at https://github.com/anthropics/knowledge-work-plugins/blob/main/finance/skills/reconciliation/SKILL.md. The repository has 23,994 stars, read from api.github.com. It is not an invoice price audit, it is general ledger and bank reconciliation, but its structure is the right one to borrow: it sorts every difference into timing, adjustment required, or needs investigation, and it ages open items rather than letting them accumulate. The line worth copying is this one:
**Follow-through:** Track open items to resolution — do not just carry items forward indefinitely
That is the failure this skill exists to prevent. Overcharges on food invoices do not get missed because nobody spots them; they get missed because a line looks odd at month end, nobody writes it down, and the same line is odd again next month until it becomes the normal price. Forcing every unresolved line into a named list with an owner and a pound figure, rather than letting it disappear into food cost variance, is the single habit that turns a suspicion into a credit note.
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.
Foxera