Skip to content

Suppliers — who you buy from, and what their prices really are

Every kilo of tomato, every wheel of cheese, every box of pasta on the shelf came from somebody. The Suppliers page is the directory of those somebodies. It’s where you keep the contact information, the payment terms, the lead times — and where you upload the price lists that the system reads so the cost of every ingredient in your pantry stays current without anyone retyping a number.

This page is for owners and head chefs setting up the back of house, or maintaining it when prices drift. Floor and front-of-house staff don’t typically come here.

What it does

A supplier in this system is a small profile: a name, a logo, contact details, payment terms (cash on delivery, net 7, net 14, net 30, net 60), the average lead time in days, a few tags for filtering (Wine, Produce, Seafood, Cleaning…). That much is just a phone book — useful, but not the leverage.

The leverage is the price list. Suppliers send PDF price lists, photographs of printed catalogues, scribbled notes — and each kitchen used to retype those into a spreadsheet, or just remember the numbers wrong. Here, you upload the document, the AI reads every line, and you get back a list of products with names, packaging, units, and prices already filled in. You spot-check a few rows, approve the ones you want to keep, and each approved row turns into a real ingredient in your pantry with the correct cost-per-unit. Months later, when the supplier sends a new price list, you upload that too — the AI reads it, the prices on every linked pantry row update, and every recipe and menu item that uses those ingredients picks up the fresh cost on the next read.

The third thing the page does is track orders to that supplier and deliveries received from that supplier over time. Every purchase order, every delivery, every price stamp on every line — they all roll up under the supplier’s detail page so you can see total spend, on-time delivery percentage, average order value, which products you buy from them most, and how their prices have drifted month over month.

The rule

One inventory item, one preferred supplier. The supplier on a pantry row is the supplier whose price drives the cost of that ingredient — and therefore the cost of every recipe and every dish that uses it. If two suppliers sell the same product, pick the one whose price you actually want to count, and approve the product from their price list.

This rule matters because cost cascades everywhere. The cost of pecorino on the pantry row becomes the cost of pecorino in the cacio e pepe recipe, which becomes the cost of cacio e pepe on the till, which becomes the gross margin on tonight’s sales report. Set the supplier wrong and every number downstream is wrong with it.

How to use it

The list page

Open Admin → Suppliers. The page shows every supplier you’ve added as a grid of cards (toggle to a list view in the header if you prefer rows). Each card carries the supplier’s name, logo, payment terms, lead time, and any tags. Search by name, contact, or email in the top-right bar; filter by tag using the chips below the header (only tags that are actually in use appear). The + Add Supplier button opens a small dialog to create a new one — fill in the company name, choose payment terms, set the lead time in days, optionally add tags, and confirm. You land on the supplier’s edit page to fill in the rest.

The detail page

Clicking a card opens that supplier’s detail page. The header shows the logo, name, status, lead time, payment terms, tags, and four headline tiles: Total Spend with this supplier across all orders, the Purchase Orders count (open and completed), the On-Time Delivery percentage (computed from purchase-order expected-vs-delivered dates), and the Average Order Value.

Below the header, a row of tabs sorts the supplier’s full story:

  • Items — every product you’ve ever recorded buying from this supplier, with a status of approved (linked to a pantry row) or not approved (still just a row on a price list, no pantry impact yet).
  • Orders — the list of purchase orders sent to this supplier and their status.
  • Analytics — charts that summarise spend mix, top products, and patterns over time.
  • Trends — price drift on the products you buy most, month over month.
  • Contacts — the human contacts you talk to at this supplier (the salesperson, the warehouse, the accounting line). Multiple contacts per supplier.
  • AI Insights — short narrative observations the AI generates about this supplier’s reliability, pricing patterns, and product mix.
  • Price Lists — the room for the upload-and-extract flow described below. The leverage point.
  • History — the audit log of every change to this supplier record.

Uploading a price list

Open the Price Lists tab on the detail page. Click the uploader; pick the PDF, photo, or scanned document the supplier sent you. The system reads the file. A few seconds later you see a panel listing every product the AI extracted — typically the product name, a short description, the packaging (“12 × 500ml”), the unit price, and any notes the AI picked up. Each row has a status: new (the AI couldn’t match it to anything in your pantry), or matched (the AI thinks it lines up with an existing pantry item, with a confidence score).

This step costs credits — the price shows on the upload button before you confirm. The cost is small per page, and you typically only run it when a new price list comes in (which for most kitchens is a few times a year per supplier).

From here you walk the list:

  • Approve a new row to create a pantry item from it. A small dialog opens asking you to confirm the inventory category (Produce, Dry Goods, Wine…) and the unit you want the system to recipe-cost against (per kilo, per litre, per piece). Confirm — a new row appears in the pantry, linked to this supplier, with the cost from the price list as the last purchase price.
  • Approve a matched row to update the existing pantry item’s cost to the new price. The pantry row keeps its identity, but its cost stamp moves forward.
  • Skip any row you don’t want to keep. Some price lists carry products you’ll never buy — leave them unapproved and they stay on the supplier’s product list but don’t touch the pantry.

Once you’ve worked through the list, every approved row is now driving the cost of an ingredient in your pantry, and every recipe and dish that uses those ingredients reflects the new numbers from the next moment on.

Worked example

Anna runs a small Italian kitchen. She’s added Pasta Vera, the wholesale Italian importer she buys most of her dry goods from, as a supplier — payment terms NET 30, lead time 4 days, tags Food and Dry Goods. Two months in, Pasta Vera sends an updated price list PDF for autumn — fourteen pages, two hundred products.

Anna opens Admin → Suppliers, finds Pasta Vera, clicks in. She lands on the detail page; she sees Total Spend €4,820 across nineteen orders, on-time delivery 89%, average order value €254. She clicks the Price Lists tab, drops the PDF onto the uploader, watches it pre-process (a small picker lets her choose which pages of the PDF to scan — she selects all fourteen). She clicks Extract — the system reads. Forty seconds later, a list of 196 products comes back: pistachio cream 250g €11.20/jar, mortadella 1kg €18.50/kg, San Marzano tomatoes 2.5kg €4.20/can, Bronte pistachios shelled 500g €34/pack, and so on.

About forty of the 196 rows are matched — products Pasta Vera was already supplying her, where the AI lined them up with her existing pantry rows. The pistachio cream is matched to her existing Pistachio cream pantry row; the price has moved from €10.80 to €11.20 (a 3.7% rise). The mortadella has held steady. The pistachios are up 7% — worth noting. The San Marzanos are down 1%.

She walks the matched list, approving each one. As she does, the cost stamps on her pantry rows update, and the recipes that depend on those ingredients silently recompute. The Pistachio Mortadella Pizza, which uses 30g of pistachio cream per plate, picks up a fresh ingredient cost on the next read. The dashboard’s food-cost percentage for that pizza shifts by a fraction of a point.

Then she walks the new list — products she’s never bought from Pasta Vera before. Most she skips (she has no use for capers in oil), but a couple she approves: a new Pasta Madre dried pasta line she wants to try, and a small wheel of pecorino sardo at a price better than her current pecorino supplier. The pecorino sardo becomes a new pantry row tagged to Pasta Vera, ready to use in a recipe whenever she wants.

Total time: about fifteen minutes. The whole pantry’s costs are now current to the new price list, and the AI Insights tab a day later flags that Pasta Vera has raised pistachio products an average 5.2% — worth a phone call to negotiate.

  • Inventory — overview — where the pantry rows live that the price lists feed. Approving a price-list row creates or updates a row here.
  • Receiving — overview — the daily flow when a delivery actually arrives. Receiving also stamps fresh costs on pantry rows; price lists set the expected number, receiving records the actual paid number.
  • Prices, costs, and margins — the rule about how one new cost on a pantry row ripples through every recipe and dish that uses it.
  • From idea to till — the five rooms a dish moves through. Suppliers feed the pantry, which is room one.