Put every supplier invoice line into one sheet at a cost per litre, kilo or item, so suppliers compare like for like, and ask ChatGPT to flag lines that rose since the last order. Then recost your top drinks and reprice only those whose ingredient cost has passed your target, instead of raising every price.
The order matters. Many menus are priced once and left, while costs move with every delivery. A 10% rise in milk adds only about 2.5 cents to a flat white in the example below, so the damage comes from several small rises landing together. A 30-minute monthly review catches that stack before it turns into a quarter of thin margins.
From invoice to sheet: one line per item, one unit per price
The sheet has one row per invoice line. Columns that earn their place: date, supplier, item as written on the invoice, your standard item name, pack size as written, number of packs, pack price, units per pack, unit of measure (litre, kilo or each) and cost per unit. The standard name is what lets March's "oat drink barista 1L x6" and May's "Oat milk, barista edition, 6 x 1 L" land in the same history. Keep a short list of standard names and make the assistant use only those; the tutorial on cleaning messy data covers wider tidying.
Getting the invoices in is the dull part. A photo or PDF of each invoice works, and so does a CSV from the supplier's online portal if there is one; Square's own help article suggests exporting from the "Recent Purchases" or "Order History" sections of a vendor portal. ChatGPT's Free plan allows three file uploads a day, so combine a week's invoices into one PDF, and paid plans allow up to 80 files every three hours. Paper invoices should be photographed flat in good light, one page per image.
Here is an invoice as the assistant would see it, typed out:
INVOICE 20417 14 Oct
Whole milk 2L x6 1 case 17.40
Oat drink barista 1L x6 1 case 15.60
Vanilla syrup 700ml 2 14.40
Cups 12oz + lid (50) 3 sleeves 25.50
Delivery 0.00
Total (ex tax) 72.90
And the prompt that turns it into rows:
Extract every line of the attached supplier invoice into a table with
columns: invoice date, supplier, item as written, standard item name,
pack size as written, number of packs, pack price, units per pack (a
number), unit of measure (L, kg or each), cost per unit.
Use only these standard names: whole milk, oat milk, vanilla syrup,
cups and lids, espresso beans, croissant.
Cost per unit = pack price / units per pack.
Then add up the line totals and compare with the invoice total. If any
value is missing or unclear, write CHECK instead of guessing.
Include delivery fees as their own row.
| Item | Packs | Pack price | Units per pack | Cost per unit |
|---|---|---|---|---|
| Whole milk 2L x6 | 1 | $17.40 | 12 L | $1.45 a litre |
| Oat drink barista 1L x6 | 1 | $15.60 | 6 L | $2.60 a litre |
| Vanilla syrup 700ml | 2 | $7.20 | 0.7 L | $10.29 a litre |
| Cups 12oz + lid (50) | 3 | $8.50 | 50 sets | $0.17 each |
| Delivery | 1 | $0.00 |
The line totals add to $72.90, matching the invoice, which is the check that matters most. Suppose the assistant misreads the oat line as 16.50. The lines now sum to $73.80 against an invoice total of $72.90, and that 90-cent gap points straight at the misread. Treat any mismatch as a stop sign for that invoice. Two other things to look at in the first outputs: whether it took "(50)" on the cups as the pack size (right) rather than a quantity, and whether the delivery row appears, because delivery fees decide supplier comparisons later.
Two kinds of line break most sheets: credit notes and substitutions. When a supplier short-delivers, the credit note arrives later as a negative amount. Log it as a negative row against the original invoice, or the month looks too expensive; in the example, a missed case of oat milk means a credit of $15.60 and a corrected invoice cost of $57.30. When a supplier swaps in a different brand without asking, the invoice shows a new item name at a new price. The assistant should list it as a possible duplicate or a new item and never merge it silently. Add a "substitution" flag in the notes column so a one-off swap does not look like a price rise.
If you want a longer treatment of invoice reading for a hospitality business, the tutorial on catching supplier price creep works through a restaurant version.
The pack-size trap: a bag that shrank while the price held
The expensive surprise is often a changed pack with an unchanged price. In the September order, espresso beans came in a 1 kg bag at $17.80. In October the invoice shows the same $17.80, but the bag is 900 g. A tool comparing pack prices sees no change. Cost per kilo went from $17.80 to $19.78, up 11.1%, and at 18 g a double shot that is another 3.6 cents a drink.
That is why the sheet has a units-per-pack column and why the flagging prompt asks about pack size explicitly. It also explains why "same price" lines should never be ignored: ask the supplier, in writing, whenever the unit of measure changes.
Flagging price rises: the prompt and what ChatGPT misses
With a few months of rows in the sheet, ask for the comparison on the latest invoice against the one before. Paste the history, or upload it as a CSV or Excel file (ChatGPT reads spreadsheets up to about 50 MB).
Below is my supplier price history as a table: date, supplier, standard
item name, cost per unit, units per pack and pack price. Compare each
item's latest cost per unit with its previous one.
1. List every item whose cost per unit rose by more than 5%, with the
old cost, the new cost and the percentage change.
2. Separately list any item whose pack price stayed the same but whose
pack size changed, and show the effect on cost per unit.
3. Ignore items that appear only once.
4. Do not estimate or fill gaps. If two rows may be the same item under
different names, list them under "possible duplicates".
Return a table, then one sentence per item on what to check first.
For the October order, a good answer looks like this.
| Item | September | October | Change | Check first |
|---|---|---|---|---|
| Oat milk (barista) | $2.30 a litre | $2.60 a litre | +13.0% | One-off or a new standing price? Ask the supplier. |
| Whole milk | $1.30 a litre | $1.45 a litre | +11.5% | Did the 12-litre case size change? |
| Espresso beans | $17.80 a kilo | $19.78 a kilo | +11.1% | Pack price unchanged; bag shrank from 1 kg to 900 g |
| Croissant | $1.15 each | $1.25 each | +8.7% | Confirm with the bakery; get a second quote |
Vanilla syrup (up 4.3%) and cups (flat at $0.17) fall under the 5% line and stay off the list. Here is what the assistant cannot do for you. It cannot tell an expired launch discount from a real rise, so add a notes column and write "promo ended" when the supplier tells you. It treats seasonal specials as changes in price, so mark them. It will sometimes split one product into two rows because the invoice wording changed, which is what the "possible duplicates" line is for. And it can still get a percentage wrong, so recompute two of them by hand in a spare cell each month.
If you send the same prompt to Claude or Gemini you should get a similar table. Pick whichever you already use, and judge each by how many lines you had to correct.
From ingredient costs to cost per drink
Prices on a sheet change nothing until they reach the recipes. For each of your top drinks, list the grams and millilitres you really use (weigh a shot for three mornings, and measure a pour of milk and a pump of syrup), then multiply by cost per unit. The tutorial on cost per cup and margins builds the recipe sheet in full; here the focus is what a month of supplier changes does to it.
The recipes, made up for the sums: a flat white uses 190 ml of milk, 18 g of coffee and a cup and lid at $0.17; a latte uses 230 ml of milk; the oat flat white swaps in 190 ml of oat milk; the vanilla latte adds 20 ml of syrup (two pumps). Say the owner's target is an ingredient cost no higher than 23% of the menu price, before labour and rent. That is a choice, not a benchmark, so set yours from your own accounts. Monthly volumes: 900 flat whites, 700 lattes, 450 oat flat whites and 300 vanilla lattes.
| Drink | Price | Cost in September | Cost in October | Cost share, Sep to Oct | Verdict at a 23% target |
|---|---|---|---|---|---|
| Flat white | $3.80 | $0.74 | $0.80 | 19.4% to 21.1% | Under target, watch |
| Latte | $4.00 | $0.79 | $0.86 | 19.7% to 21.5% | Under target, watch |
| Oat flat white | $4.30 | $0.93 | $1.02 | 21.6% to 23.7% | Over target |
| Vanilla latte | $4.60 | $0.99 | $1.07 | 21.4% to 23.2% | Over target, just |
Across these four drinks the month's ingredient bill rose by about $172 ($57.69 on flat whites, $49.07 on lattes, $41.67 on oat flat whites and $23.60 on vanilla lattes). You do not have to pass all of that on. Two moves are enough: the oat flat white from $4.30 to $4.50 (cost share 22.7%) and the vanilla latte from $4.60 to $4.70 (22.7%). If volumes hold, that returns $120 a month ($90 from 450 oat flat whites at 20 cents, $30 from 300 vanilla lattes at 10 cents). The remaining $52 is absorbed by drinks still under target, which you keep watching. A neater route for the oat drink is to raise the oat surcharge from 50 to 70 cents instead of the base price, which hits only the customers who choose it.
Two cautions on the recipe numbers. First, weigh what goes in the cup, not what the recipe card says. A barista who pours 205 ml of milk against a 190 ml spec adds about 2.2 cents a drink, the same as an 8% rise in the milk price. Second, waste is a hidden price rise. If baristas routinely steam 8% more milk than the drink needs and pour the rest away, a flat white costs 2.2 cents more than the recipe says, and across the 401 litres of dairy milk in these four drinks that is $46.52 a month, exactly what an 8% supplier rise would cost. Put a waste percentage in the recipe sheet as its own column, so it can be seen and reduced.
The croissant is a different case. At $1.25 against a $3.20 price it costs 39% of the price; with a 35% target for bakery items the price would have to reach at least $3.57, which in practice means $3.60, a visible 40-cent move. Before changing it, get a second quote or ask the bakery whether a standing price is possible. Once you have the options, the tutorial on testing a menu price increase dish by dish shows how to read the result.
Running a what-if before a supplier's rise lands
The same sheet answers a forward-looking question. Suppose the dairy supplier writes that milk goes up 8% from 1 December. Upload the recipe sheet (drink, price, millilitres of milk, grams of coffee, other costs) with the monthly volumes and ask:
Here is my recipe sheet and monthly volumes. My dairy supplier says
milk rises 8% from 1 December. Recalculate each drink's ingredient cost
share and the extra monthly cost. List any drink that would pass a 23%
target, and the menu price that would bring it back. Show your working
for one drink. Oat milk is not affected.
A good answer, after the two October price moves, runs like this: the dairy bill rises by $46.52 a month on 401 litres. Flat white goes from 21.1% to 21.7% and latte from 21.5% to 22.2%, both still under target. The vanilla latte moves from 22.7% to 23.2%, over target again, and would need about $4.75 to get back. The oat flat white is unchanged. Check two things before acting. Are the volumes right, and has it counted the milk in every dairy drink on your menu, not only the four you listed? And does a 5-cent move on one drink justify a menu change, or is it smarter to wait a month and see whether the rise actually arrives on the invoice?
Two suppliers, like for like: delivery fees change the winner
When a rival supplier sends a price list, convert it to the same units before comparing, and add what the unit price hides. Monthly usage for the example café, counting every drink on the menu rather than only the four above, is 480 litres of milk, 150 litres of oat milk and 50 kilos of beans. Your current supplier A charges $1.45, $2.60 and $19.78 and delivers free; supplier B quotes $1.39, $2.52 and $19.40 but adds $18 to each delivery, and fresh milk means a drop every week.
| Per month | Supplier A | Supplier B |
|---|---|---|
| Milk, 480 L | $696.00 | $667.20 |
| Oat milk, 150 L | $390.00 | $378.00 |
| Beans, 50 kg | $989.00 | $970.00 |
| Goods total | $2,075.00 | $2,015.20 |
| Delivery, weekly (4 drops) | $0 | $72 |
| Landed cost | $2,075.00 | $2,087.20 |
| Landed cost if B waives the charge | $2,075.00 | $2,015.20 |
B is cheaper on every line yet dearer overall by $12.20 a month once its delivery charge is added. Splitting the order does not rescue it: milk from A, with the long-life oat drink and the beans from B on two fortnightly drops, comes to $2,080.00, still $5 more than staying put. What changes the answer is the charge itself. If B will waive it for a standing weekly order, B wins by $59.80 a month, so ask that question before you decide. The beans are not like for like anyway: a different roaster means a different taste, so run a tasting before you let $19.40 beat $19.78. The tutorial on comparing supplier prices and drafting orders covers the same comparison for a restaurant, with a draft order at the end.
Where Square's Order Guide beta fits, and where it does not
If your till is Square, its Order Guide is worth knowing about. According to its help article, it compares ingredient prices across your food and beverage vendors. You need a menu in Square plus your vendors' price sheets or CSV exports (PDF, CSV and XLSX are accepted, and the article says not to include invoices). Square AI then builds an order guide with a group for each ingredient used in your menu items, and the article says to allow one to two minutes. The limit is 750 items across all menus. Square's troubleshooting article advises including both package quantity and package unit for every item, and spot-checking the converted CSV before you import it.
Access depends on your plan. The article lists Restaurants Plus and Premium subscribers, or Square Plus and Premium with advanced restaurant capabilities added. Square's restaurants pricing page lists Plus at $49 and Premium at $149 a month per location. Its releases page labels the Order Guide as a beta, and the help article says that in future it will support building a purchase order directly from Square.
Use it as a second opinion on price lists, not as your tracker. It will not tell you that last Tuesday's delivery cost 11% more than the one before, because it works from price sheets and not invoices. If your suppliers only phone through prices or email a rough list, you will end up typing them anyway, and then the sheet described above does the same job on any till.
A 30-minute monthly price review
- Add the month's invoices to the sheet, and check each invoice's line total against its printed total.
- Run the flagging prompt, then clear the notes column for anything the supplier explained.
- Update cost per drink for the ten drinks that sell most, in the recipe sheet, not in the assistant's head.
- List drinks over your target, and for each choose one of four moves: raise the price, change the recipe by a few millilitres, adjust an add-on charge, or hold and watch.
- Write each decision in a price-change log, and set a reminder to compare sales four weeks later.
- For any rise you did not expect, email the supplier with four questions: is it permanent, from which delivery, does a bigger order or a standing order change the price, and has the pack size changed? Paste the answers into the notes column.
A filled-in row of the log: 1 November, oat flat white, $4.30 to $4.50, cost share 23.7% to 22.7%, volume in the previous four weeks 450, volume in the next four to be filled in. The customer note can be as plain as "From 1 November the oat flat white is $4.50 and the vanilla latte $4.70. Everything else stays as it is." Skip the lecture about suppliers; it helps nobody.
To check the whole routine works, spot-check five rows a month against the paper invoices, keep a tally of misreads (it should shrink as your standard names settle), and compare the sheet's monthly food and drink total with what your accountant or bookkeeping software shows for stock purchases. A gap over a few percent means missing invoices or unlogged delivery fees. The tutorial on ordering milk, beans and pastries picks up from here once the prices are trustworthy.
Questions a café owner asks about this workflow
Which AI tool reads supplier invoices best?
I would not name a winner, because it changes with every model release. Test two assistants on the same five real invoices, including a crumpled paper one, and count the wrong lines. Whichever misreads fewer, and says so when it cannot read something instead of guessing, gets the job. Always check the line total against the invoice total.
How often should I change menu prices?
There is no fixed rule. A workable habit is a monthly review, changing a price only when that drink's ingredient cost passes your target or has done so two months running. A few small moves on the drinks that need them are easier to explain than one across-the-board rise. Log each change so you can compare sales before and after.
Is Square's Order Guide worth using for a small café?
Only if you already run a Square restaurants plan that includes it and your suppliers publish price sheets or portal exports. It compares vendors on cost per unit but does not read invoices, so it will not show that last week's delivery cost more than the one before. Square's releases page labels it beta, so treat its output as a starting point.
What if my supplier only gives paper invoices?
Photograph each page flat, in good light, one page per image, and upload the images; ChatGPT accepts PNG, JPEG and non-animated GIF files up to 20 MB each. Handwritten corrections are where reading goes wrong, so mark those lines yourself. Also ask the supplier whether they can email PDFs, which removes the step.
Further reads
- Best AI Tools for Cafés and Coffee Shops, Grouped by Task — The wider tool list for a café, grouped by task.
- What AI Can and Cannot Do for an Independent Café — A sober view of what AI can and cannot do in a café.
- ChatGPT Prompts for Coffee Shop Owners: 10 for Menus, Posts, Rotas — Ten prompts for menus, posts and rotas once costs are under control.
- AI for Cafés: Plan a Seasonal Drinks Menu From Your Sales Data — Plan a seasonal drinks menu from the sales data you already hold.
- Coffee Shop Management Software: What AI Adds Over a Basic POS — What AI adds to a basic till, before you buy more software.
- How to Compare Supplier Quotes Side by Side With AI — A side-by-side method for supplier quotes outside the café.
- AI Invoice Processing: Stop Typing Supplier Bills by Hand — The bookkeeping side: supplier bills captured without retyping.
- Does a Coffee Shop Need an AI Receptionist? When It Pays — A payback sum for an AI receptionist in a coffee shop, using missed large-order calls, plus the case where you should not buy one.
- AI Food Menu Generator: Build a Seasonal Menu From Your Supplier List — Paste your supplier sheet into ChatGPT, draft dishes from what is deliverable, cost every plate and check allergens before printing.
- Coffee Cart Business Plan: Costs, Pitch and Menu Built With ChatGPT — Plan start-up costs, pitch fees, per-cup margins and break-even cups for a coffee cart in one spreadsheet, with ChatGPT drafting and you checking.
- Food Truck Food Cost: Use ChatGPT Before Paying for Software — A ChatGPT-built food cost sheet for a food truck, one burger costed to the cent, and the break-even sum for paid costing software.
- How to Price Ice Cream: Cost per Scoop and Menu Prices — Test real scoops per tub, cost every cone, sundae and pint, then set prices against a margin target worked out from your own overheads.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Square's help articles on Order Guide and troubleshooting it, Square's releases page and restaurants pricing page, OpenAI's help page on file uploads, checked 29 October 2026. Every price, recipe and volume in the examples is illustrative.