Module · Inventory

Restaurant Inventory Management Software

Inventory that updates itself, order by order — because it's built into the system taking the orders, not bolted onto it.

Why it matters

Standalone inventory tools have a structural problem: they don't know what you sold. So they ask you to tell them, either by importing sales from another system on a delay, or by counting often enough to infer it. Both are work, and both are stale by the time you read them.

Here the menu, the recipes, and the orders are already the same system. Selling a dish is the stock movement — there's nothing to sync, nothing to import, and no window during which the two disagree.

Inventory screen listing ingredients with stock level, minimum, supplier and in-stock or low status
Forty-eight tracked ingredients. Low and out are counted separately, because one is a shopping list and the other is a dish you cannot sell.

How stock actually moves

01

Ingredients, in real units

Each ingredient carries a dimension — weight, volume, or count — and is stored in a base unit of grams, millilitres, or pieces. Enter deliveries in kilograms, pounds, litres or fluid ounces and it converts on the way in, so the same ingredient can be bought by the case and portioned by the gram.

02

Recipes, per portion size

A dish is built from ingredients and quantities, and quantities are set per size. A large deducts more than a small, which sounds obvious and is where most inventory models quietly drift. Combos and build-your-own selections expand to their components too.

03

Deduction at the moment you choose

Stock can come off when the order is placed, when the kitchen starts it, or when it's served. Kitchens that void a lot want a later trigger; high-volume counters want an earlier one. The default is on serve.

04

An append-only ledger, not just a number

Every movement is a row — restock, sale, waste, manual adjustment, count adjustment — recording what it was, how much, what it cost, who did it, and the balance before and after. The current level is a running total of that history, written in the same transaction, so the two can't disagree.

05

Cancelled orders are a decision, not a guess

When an order is cancelled, either the stock goes back or it's recorded as waste against that cancellation. You choose which — because a cancelled order before the kitchen touched it and one cancelled after it was plated are not the same event.

Counting, when you still need to

Automatic deduction doesn't remove the physical count — it changes what the count is for. Instead of being the only source of truth, it becomes a check on one.

Enter what you actually counted, in whatever unit you counted it. Anything that matches posts nothing at all. Only the differences are written, each as a count adjustment with the signed delta, and the count comes back with how many ingredients were counted, how many needed adjusting, and what that variance was worth. Ingredients you didn't count are left alone rather than being zeroed.

Cost, and which dishes deserve their place

Each ingredient carries a unit cost, refreshed automatically whenever a delivery is entered with a price. That rolls up into a cost per serving for every size of every dish — so a menu item's real plate cost is a property of its recipe, not a spreadsheet somebody maintains separately.

On top of that sits menu performance: plate cost, margin, and contribution per dish, sorted into stars, plowhorses, puzzles and dogs — popular and profitable, popular and thin, profitable and ignored, or neither. A dish without a costed recipe is reported as unknown rather than as zero margin, and the number of costed and uncosted items is shown alongside, so you always know how much of the menu the analysis actually covers.

Menu performance scatter chart plotting each dish by popularity against its margin
Every dish placed by popularity against margin. The quadrant a dish lands in is the decision: promote it, reprice it, or take it off.

Waste, with a reason attached

Waste is logged against the ingredient with a required reason — expired, burned, spoiled, kitchen error, damaged, or spilled — and costed at what that stock was worth. The report groups by reason with quantity and value, which turns "we waste too much" into a specific, fixable sentence.

What each ingredient tells you

Open one and you get its stock level after every movement, consumption per day, average daily usage, and how many days of stock that leaves — plus days until it hits your minimum. Where there isn't enough movement to calculate a rate, it says so instead of printing a confident number nobody measured.

Alongside: value on hand, totals for consumed, restocked, wasted and count variance kept separate from one another, waste as a share of consumption, and every dish that uses the ingredient with what share of that dish's price it represents.

Allergen review screen with suggested allergens per ingredient awaiting approval
Allergens are suggested per ingredient and wait for a person to approve them. Nothing reaches a guest on a machine's say-so.

From running low to restocked

Set a minimum per ingredient and anything at or below it shows as low, with out-of-stock separated out. Those levels roll up onto the owner dashboard across every venue you run, so a low ingredient at one site doesn't require opening that site to notice.

The shopping list builds itself from whatever is at or below its minimum, with suggested quantities and estimated cost, grouped by supplier. Mark items bought or missed as you go, then close the list — and every bought line posts as a restock, with its price updating that ingredient's cost.

Optionally, an ingredient hitting zero can pull the dishes that need it off the menu automatically, so guests can't order what you can't make. It's off unless you turn it on, and it only ever applies to ingredients that have actually moved — a half-configured pantry can't take your menu down.

Common questions

Do I have to count stock manually?

Not to keep levels current — that happens as dishes sell. Counting becomes a periodic verification rather than the whole system, and most venues count high-value and fast-moving items weekly and everything else monthly.

When exactly does stock come off?

Whichever of three moments you pick: when the order is placed, when the kitchen starts preparing it, or when it's served. Served is the default. The same order can never deduct twice, whatever happens to it afterwards.

How do I find out something is running low?

On screen. Low and out-of-stock ingredients surface on the inventory page and on the owner dashboard, and you can filter the ingredient list by status. There's no email or push alert — it's something you look at, not something that interrupts you.

Does it handle different portion sizes?

Yes — recipe quantities are set per size, so a large and a small deduct different amounts of the same ingredient.

Can it order from my suppliers?

No. The shopping list is internal — it tells you what to buy and groups it by supplier so the ordering is quick, but nothing is transmitted to a supplier and there are no purchase orders. Supplier is a label on the ingredient, not a connected account.

Can I move stock between my venues?

No. Stock is held per venue, and each venue keeps its own ingredients. The owner dashboard shows low stock across all of them together, but transfers between sites aren't part of the product.

What about allergens?

Allergens are held on the ingredient, suggested automatically and then confirmed by a person before they go live — so they follow that ingredient into every dish that uses it rather than being retyped per menu item.

See it in action

See Inventory tracking your real menu.

Book a demo