Restaurant Supply Ordering: Compare Prices and Draft Orders

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Restaurant Supply Ordering: Compare Prices and Draft Orders.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Restaurant Supply Ordering: Compare Prices and Draft Orders.

Put both suppliers' price lists in one sheet with pack sizes split into numbers, convert every line to a cost per kilo, litre or each, and have an AI flag the cheaper supplier, plus any cheaper line that is a different product. Then give it par levels and counts to draft each weekly order, which you check and send yourself.

Unit price is only the start. Minimum orders, delivery fees and pack sizes can reverse a winner, and "cheaper" means nothing if the product is a different spec. Square's Order Guide, which Square's releases page labels beta, does the price comparison inside Square for eligible plans, and its help page says building purchase orders is still to come. The sheet method below works with any POS and covers drafting the order too. I use kilos and litres; swap in pounds and gallons if that is how your suppliers quote, as the method is identical.

Follow me on Instagram@sagnikteaches

Build one sheet both price lists can feed

The sheet has one row per item per supplier, and the columns are the whole trick. Pack sizes arrive as text ("6 x 2.5 kg") that a spreadsheet cannot calculate with, so split every size into numbers: how many units in the pack, how big each is, and the unit. Add the price, the date you got it, and the supplier's description exactly as written, because the description is where the spec lives.

Connect on LinkedInSagnik Bhattacharya
ColumnHoldsExample
ItemYour own plain name, identical for both suppliersButter, unsalted
SupplierA or BB
DescriptionAs the supplier writes it; grade, cut, stateBTR UNSLTD 20X250G
Pack count and size eachTwo number columns20 and 0.25
Unitkg, L or eachkg
Pack price and price dateWhat you pay for one pack, and when you were quoted$52.00; the quote date
Total per pack, cost per unitFormulas5 kg; $10.40 per kg

Four formulas do all the arithmetic, and putting them in the sheet instead of asking an AI for numbers each time means the results are visible and repeatable. With pack count in column D, size in E, pack price in G, need in K, and the other columns filled in your own way:

Subscribe on YouTube@sagnikteaches
Total per pack   (I2) = D2*E2
Cost per unit    (J2) = G2/I2
Packs to order   (L2) = ROUNDUP(K2/I2,0)
Order cost       (M2) = L2*G2

Keep the suppliers' terms in a small separate table: delivery days, order cut-off, minimum order, delivery fee and the order value above which delivery is free. You will need all of them in a minute. Ask an AI to write the formulas if you prefer, but check one row by hand, as in the next sections.

Turning a messy price list into rows

Price lists come as PDFs, spreadsheets and emailed pictures, usually in supplier shorthand. This is where an AI saves the most time, because it reads "CHKN THGH B/I S/ON 10KG CS" as chicken thigh, bone-in, skin-on, one 10 kg case.

As the supplier writes itCountSize eachUnitPack pricePer unit
CHKN THGH B/I S/ON 10KG CS110kg$62.00$6.20
BTR UNSLTD 20X250G200.25kg$52.00$10.40
CRM DBL 6X1LT61L$22.80$3.80
TOM PLUM TIN 6/2.5KG62.5kg$27.00$1.80
Convert the supplier price list below into rows with these columns: item (plain English), description as written,
pack count, size each, unit (kg, L or each), pack price. Rules: split patterns like "20X250G", "6/2.5KG" and "CS" into count and size;
convert g to kg and ml to L; if a line is ambiguous write CHECK in the item column and say why; never guess a price.
At the end, tell me how many lines you read and how many rows you produced.

Check the output in three ways. The line counts must match. Three prices picked at random must match the list. And one multi-pack must multiply out: 20 packs of 250 g is 5 kg, not 20 kg and not 250 g. If the list is a scanned image rather than a text PDF, expect more mistakes and check more lines by hand; a clean spreadsheet or a text PDF is much safer. For general tidying of awkward supplier files, cleaning messy data with AI has the broader moves. Square's help page says its Order Guide accepts PDF, CSV and XLSX price sheets, and that invoices should not be included, which is a useful rule here too: use price lists, not invoices.

Fourteen lines, two suppliers, one weekly basket

The example restaurant buys 14 staples from two suppliers. Supplier A is a broadline distributor delivering Monday, Wednesday and Friday, with a $150 minimum, and free delivery over $300 (otherwise $25). Supplier B is a specialist wholesaler delivering Tuesday, Thursday and Saturday, with a $40 minimum, and free delivery over $200 (otherwise $18). The weekly need for each line is the par level minus today's count. All prices and terms here are illustrative.

ItemNeedSupplier A pack and priceA per unitSupplier B pack and priceB per unitOrder cost A / BThis week
Chicken thighs, bone-in28 kg10 kg, $62.00$6.205 kg, $34.50$6.90$186.00 / $207.00A
Beef mince, 80/2012 kg5 x 1 kg, $41.00$8.202 x 2.5 kg, $43.50$8.70$123.00 / $130.50A
Butter, unsalted8 kg5 kg block, $47.50$9.5020 x 250 g, $52.00$10.40$95.00 / $104.00A
Double cream12 L6 x 1 L, $22.80$3.8012 x 500 ml, $25.20$4.20$45.60 / $50.40A
Eggs, large150Free-range, 180, $50.40$0.28Barn, 90, $23.40$0.26$50.40 / $46.80Check spec
Potatoes, maincrop60 kg25 kg, $17.50$0.7020 kg, $13.00$0.65$52.50 / $39.00B
Onions, brown20 kg20 kg, $14.00$0.7010 kg, $6.50$0.65$14.00 / $13.00B
Plum tomatoes, tinned30 kg6 x 2.5 kg, $27.00$1.806 x 2.5 kg, $25.50$1.70$54.00 / $51.00B
Olive oil, extra virgin10 L5 L, $38.00$7.602 x 5 L, $72.00$7.20$76.00 / $72.00B
Frying oil40 L20 L, $29.00$1.45Not stockedn/a$58.00 / n/aA
Chestnut mushrooms8 kg4 kg tray, $17.20$4.302 kg tray, $8.20$4.10$34.40 / $32.80B
Mature cheddar6 kg5 kg block, $41.00$8.202.5 kg block, $21.50$8.60$82.00 / $64.50B
Lemons5 kg4 kg box, $10.40$2.605 kg box, $11.00$2.20$20.80 / $11.00B
Hake fillet10 kgSkinless, 5 kg, $52.50$10.50Skin-on, 5 kg, $44.00$8.80$105.00 / $88.00Check spec

The last column is the AI's call with two lines held back for a human, which the next section explains. The numbers that matter:

  • Everything from A: $996.70.
  • Cheapest by order cost, ignoring spec: $925.70, a saving of $71.00. Two of those savings, $3.60 on the eggs and $17.00 on the hake, come from different products.
  • Cheapest with the two spec questions kept at A: $946.30 ($663.00 from A, $283.30 from B). That saves $50.40, or 5.1%, against buying everything from A. Both orders clear their free-delivery lines, so there are no fees.

Look at the cheddar, which shows why a per-unit view is not enough. A is cheaper per kilo ($8.20 against $8.60). But the weekly need is 6 kg, A's blocks are 5 kg, so A forces a 10 kg buy ($82.00), while B's 2.5 kg blocks let you buy 7.5 kg ($64.50). If the cheese keeps well and you will use the extra 4 kg next week, A's unit price is the better guide; if cash is tight or space is limited, B wins this week. Either answer is fine; the point is to see both numbers. For the same reason the AI must price the whole packs you would actually buy, not just the per-kilo figure.

Flagging substitutes: when the cheaper line is not the same product

An AI left to compare "eggs, large" will happily say the barn eggs are cheaper than the free-range ones. They are, because they are a different product. The same goes for skinless against skin-on hake, fresh against frozen, or two cuts of beef sold under one name. If your menu says free-range or line-caught, a cheaper line that does not meet the claim is not a substitute; it is a menu error waiting to happen. So write the equivalence rule into the prompt, paste it into ChatGPT, Claude or Gemini along with your two tables, and make the AI separate what it knows from what it is guessing.

I'm pasting my supplier price table (one row per item per supplier) and a second table with this week's need per item.
1. For each item at both suppliers, compare cost per unit AND the cost of the whole packs needed to cover my need.
2. Treat two lines as the same product only if brand or grade, cut, state (fresh or frozen) and any claim (free-range, skinless)
   match in the descriptions. Otherwise list them under POSSIBLE SUBSTITUTE with the difference named, and leave them out of totals.
3. Show the cheaper supplier per line, then totals per supplier. Terms: A minimum $150, free delivery over $300 else $25;
   B minimum $40, free delivery over $200 else $18. If a supplier total is under its minimum, say which lines to move.
4. List anything odd: a price that looks ten times out, a missing price date, a unit I should double-check.
Show your arithmetic for the totals.

A good answer (illustrative) separates the groups:

SAME PRODUCT, cheaper at A (4): chicken thighs, beef mince, butter, double cream
SAME PRODUCT, cheaper at B (7): potatoes, onions, tinned tomatoes, olive oil, mushrooms, lemons, cheddar (by order cost; A is cheaper per kg)
A ONLY (1): frying oil
POSSIBLE SUBSTITUTE, not in totals:
 - Eggs: A free-range 180 at $50.40 vs B barn 90 at $23.40. Saves $3.60 for 180 eggs. Different standard.
 - Hake: A skinless 5 kg at $52.50 vs B skin-on 5 kg at $44.00. Saves $17.00 for 10 kg. Different cut.
TOTALS: A $663.00 (over $300: free delivery) + B $283.30 (over $200: free delivery) = $946.30
All from A for comparison: $996.70. Saving $50.40 (5.1%).
CHECK: confirm B beef mince is 2 x 2.5 kg = 5 kg a pack.

The two flagged lines then go to the chef with the money attached. A $17 saving on hake sounds worth a conversation, but skin-on fillets mean prep time and a different plate yield, and the chef is the person to say whether that nets out. In this example the chef declines. A first draft from an AI can fold both lines into the totals, which is how the $925.70 figure appears, and can rank the cheddar by unit price alone. Both are fixed by rules 1 and 2. When a model does fold a flagged line into a total, treat that as a sign the rule was not strong enough, and re-run rather than patch by hand.

When a second drop costs more than it saves

Delivery terms can turn a saving into a loss, and they are easy for an AI to ignore unless you state them. Suppose a quiet week where only the potatoes and the lemons are cheaper at B. The potatoes save $13.50 (A $52.50, B $39.00) and the lemons $9.80 (A $20.80, B $11.00), a total of $23.30. B's order would come to $50.00, above its $40 minimum but well below the $200 free-delivery level, so it charges $18. The net saving is $5.30, and you now have a second delivery to receive, check and book in. Leave both lines with A.

The reverse also happens. If B's lines add up to just under its free-delivery level, adding one more B line, even one that is a few dollars dearer than A, can save the whole fee. That is why the prompt tells the AI to apply each supplier's terms and to say which lines to move if a supplier total falls below its minimum. Expect it to get this right when the terms are in the prompt and wrong when they are not.

Price creep: log each week's prices and let the AI flag the drift

Because every row carries a price date, the sheet doubles as a price history. Add one column per week for the key lines and ask the AI to flag any line more than 3% above the average of the previous four weeks, or up for three weeks running. These are illustrative figures for five lines at their current suppliers:

LineWeek 1Week 2Week 3Week 4This weekThis week against the average of weeks 1 to 4
Beef mince (A), per kg$7.60$7.70$7.90$8.00$8.20+5.1%
Butter (A), per kg$9.10$9.10$9.10$9.30$9.50+3.8%
Potatoes (B), per kg$0.62$0.62$0.65$0.65$0.65+2.4%
Olive oil (B), per L$7.00$7.00$7.20$7.20$7.20+1.4%
Double cream (A), per L$3.70$3.70$3.80$3.80$3.80+1.3%

The beef and the butter are flagged. The beef is the more important one, because it has risen every week, from $7.60 to $8.20, which is 7.9% in four weeks. No single jump looks dramatic, which is exactly why you miss it. A flagged line is a prompt to ask the supplier why, check the other supplier's price, and re-run the plate cost of any dish that uses it. If the burger's plate cost has moved by as much as the mince, you have the start of a price decision; testing menu price changes dish by dish shows what to do with it.

From par levels and counts to a draft order

Once the comparison says who supplies what, the order is arithmetic: need equals par minus count, rounded up to whole packs, split by supplier. A stock count done the same way every week and a par sheet that matches your covers matter more than any prompt; restaurant inventory with AI covers building them. Here is Supplier A's order for Wednesday delivery:

ItemParOn handNeedPackPacksCost
Chicken thighs, bone-in40 kg122810 kg case3$186.00
Beef mince, 80/2018 kg6125 kg3$123.00
Butter, unsalted12 kg485 kg block2$95.00
Double cream18 L6126 L case2$45.60
Eggs, large, free-range24090150180 tray1$50.40
Frying oil60 L204020 L2$58.00
Hake fillet, skinless15 kg5105 kg2$105.00
Total$663.00

Round up to whole packs, but ask the AI to flag rounding that would leave you with more than half a pack surplus on a perishable. B's cheddar is the example: the need is 6 kg, three 2.5 kg blocks give 7.5 kg and leave 1.5 kg over, while two blocks leave you 1 kg under par. The chef decides which. The AI then writes the order as a message you can paste into the supplier's usual channel. Fill the placeholders yourself; never let a tool send it.

Subject: Order for Thursday delivery, [restaurant], account [number]

Hi [first name],

Please deliver on Thursday before 10 am:
- Potatoes, maincrop, 20 kg bag: 3
- Onions, brown, 10 kg bag: 2
- Plum tomatoes, tinned, 6 x 2.5 kg case: 2
- Olive oil, extra virgin, 2 x 5 L case: 1
- Chestnut mushrooms, 2 kg tray: 4
- Mature cheddar, 2.5 kg block: 3
- Lemons, 5 kg box: 1

Please confirm by reply, with any shortages, before dispatch. No substitutions without a call.

Thanks,
[your name]

Checks before an order goes out

  1. The counts are today's. An order built on Monday's stock check and sent on Wednesday buys duplicates.
  2. The substitute list is empty. Every POSSIBLE SUBSTITUTE line has a decision from the chef, in writing in the sheet.
  3. Each supplier's total clears its minimum and you know whether it clears the free-delivery level.
  4. The week's total sits near the usual one. Compare with the last four weeks; a 30% jump is a mistake or a reason, and you want to know which before you send.
  5. Delivery day and cut-off are right. Put the cut-off in the sheet. If the order must be in by 2 pm for Wednesday, the AI's message should say so at the top.
  6. A copy is saved with the date. It is the document you compare with the delivery note and invoice, which matching supplier invoices to purchase orders picks up.

Never give an AI tool the login to a supplier's ordering portal. Drafting stays with the AI; sending stays with you, as automating purchase orders and supplier emails explains in more detail for those who do want to automate later.

Square's Order Guide or a spreadsheet: where each fits

As of October 2026, Square's help page describes Order Guide as a way to compare ingredient prices across your food and beverage vendors. You upload vendor price sheets or vendor-portal exports, Square AI groups prices by the ingredients in your Square menu, and each group shows the best price, quantities and delivery dates. Square's releases page labels it beta. Square's Order Guide help page has the setup steps. The comparison with the sheet looks like this:

PointSquare Order GuideSpreadsheet and chat assistant
Who can use itRestaurants Plus and Premium subscribers, or Square Plus and Premium with advanced restaurant capabilities addedAny POS, or none
Files acceptedPDF, CSV or XLSX price sheets; no invoicesWhatever the assistant can read
Size limit750 items across all menusThe size of your sheet
Ingredient listSquare AI builds it from your menuYou maintain the item list
Purchase ordersHelp page says planned for the futureYou draft them now and send them yourself
Substitution rulesReview each ingredient group's matchesYour rules, written in the prompt

If you already run Square at the eligible level, try Order Guide for the price comparison, because it saves the list conversion, and check its matches the way you would check an AI's: pick three groups and confirm the pack sizes. If you do not, or you want an order draft today, the sheet gives you both halves. Many restaurants will end up using each for what it does best, with the sheet as the weekly routine and the supplier lists refreshed monthly.

Supplier ordering questions from restaurant owners

How many suppliers should a small restaurant compare?

Two or three is plenty: a main supplier plus one or two specialists. Every extra supplier adds a delivery to receive, an account to reconcile and minimum orders to meet. Compare more only for the few lines that drive your costs, such as meat, fish and dairy, and keep the rest with the supplier that delivers most reliably.

Can ChatGPT place orders with my suppliers?

Not safely. Do not give any AI tool your supplier portal login or card details. Use it to draft the order text or the spreadsheet, then send the order yourself by the supplier's usual route. A human check also catches substitutions and shortages before a delivery arrives that you did not mean to order.

How often should I refresh supplier prices?

Weekly for produce, dairy, meat and fish, where prices move fast, and monthly for dry goods and oils unless a supplier warns of a change. Always put the price date in the sheet. A comparison built on last quarter's list is worse than none, because it looks authoritative and quietly points you to the wrong supplier.

Does Square's Order Guide replace this spreadsheet?

It covers the price comparison inside Square for eligible plans, and Square's own releases page labels it beta. Its help page says building purchase orders is planned for the future. If you use another POS, or want order drafts today, the sheet method still does the job and works with any supplier list.

Further reads

Sources: Square's help article on comparing ingredient prices with Order Guide, Square's food and beverage releases page and Square's Order Guide page. The suppliers, prices, terms and orders in the worked example are illustrative.

Want a weekly ordering sheet set up around your suppliers?

On a 1:1 call we'll look at your supplier lists and par levels, build the comparison sheet and the order prompt together, and decide which parts stay manual.

Book a 1:1 call with me