Smart Liquor recipes
Build drinks and batch premixes by hand, import them from a sheet or let Basanti read them, with live pour cost and margin per drink.
Bar recipes live in the Smart Liquor console’s Recipes page. Build one by hand in the recipe form, upload your recipe workbook, or hand Basanti a pasted recipe and let her read it. Whichever way a recipe arrives, you review it, fix anything that was matched wrong, and save. Every recipe’s cost stays live: it is always worked out from what your bottles and bar items cost right now, per drink and per batch.
If you already know the kitchen’s AI recipe builder, the liquor page works the same way. What is different here is that a bar never stocks or makes a batch: a batch is a formula that reaches your bottles only when a drink that uses it is sold.
Switching Smart Liquor on
There is no business-wide switch. Smart Liquor is turned on per location, in Settings → Locations, and it takes two switches that do different jobs.
On a warehouse: Smart Liquor · Liquor store. This says the warehouse is a liquor store: depot bills are received here, and bottles transfer from here to the bar counters of the outlets it supplies. Turning it on also reveals a Bar department choice, which is where a drink’s non-liquor ingredients (juices, syrups, garnishes) come from when recipes are costed. Left unset, the department that reads as the bar is used.
Any active warehouse with this on turns the Smart Liquor section on for the whole organisation. Turn the last one off and the section goes away.
On an outlet: Smart Liquor · Bar counters. This says the outlet’s bar counters hold its bottles: transfers land at a counter, POS drink sales deplete the default one, and each counter counts in the daily register and the report. It is off by default, and switching it on requires naming a first bar counter, which becomes the default. The liquor store that supplies the outlet must have its own switch on first.
Afterwards a Bar counters block on the outlet lets you add more, rename them, make a different one the default, and archive one. The last counter cannot be archived while Smart Liquor is on, and the app says so rather than just refusing.
The counter, not the outlet, is the stock location. Balances, open bottles, the ledger, stock takes, register days, wastage, comps and transfers all key on the bar counter. Exactly one counter per outlet is the default that POS sales deplete. Staff tied to a counter are pinned to their outlet’s default, with a switcher when there is more than one.
Every Smart Liquor page also needs the liquor permission at the location you are looking at, so the section only appears once your access is confirmed.
Where recipes live
Managers with the liquor permission find Recipes in the Smart Liquor section, which appears once any warehouse has Smart Liquor switched on. The page lists every recipe with its code, emoji and name, the menu item it is mapped to, its kind, its yield or serves, cost per drink, menu price, margin in rupees and percent, shelf life and status. Filter with the All / Semi / Finished / Menu kind tabs and the Active / Archived / All status tabs, or search by name or code. Tap a recipe for its full costed sheet.
Bar staff at the counter never see recipes or costs; pour cost, margin and the menu mapping are the manager’s surface.
Drinks and batches
Every recipe has one Kind, which says what it produces:
| Kind | What it means |
|---|---|
| Drink | A finished drink that is poured and sold. It can be mapped to a menu item in the POS app, which gives it a menu price and a margin. Use it for anything a guest orders. |
| Batch | A semi that stays behind the bar and is used inside drinks: a cordial, a syrup, an infusion, a pre-batched cocktail. A batch is never mapped to a menu item and is never counted as stock. Use it for anything you make ahead and then measure into drinks. |
Use a batch when several drinks share the same made-ahead component, or when a drink is built in a jug and poured out over the evening. Use a drink for the thing that ends up in the glass.
Yield and serves
- A batch has a yield: a quantity in ml, g or pcs. Everything the batch contains is costed against that yield, so a batch that costs ₹650 and yields 1000 ml costs ₹0.65 per ml.
- A drink has serves. Give its yield in drinks (“1 drink”, “2 cocktails”, “4 servings”) and that sets how many it serves; cost per drink divides by it, and so does POS depletion. A drink’s yield is optional and a blank reads as one drink.
- Other costs (a garnish, a straw, ice) are entered once per batch of the build and added before any division. On a drink that serves four, ₹20 of other costs adds ₹5 to each drink.
Note: if you give a drink a yield in ml and its build volume comes to at least twice that, the form and the review ask whether it should be a batch instead. The kitchen divides cost by yield; a drink here divides by serves, so a large ml yield on a drink usually means it is really a batch.
What goes in a build
A recipe’s build has three kinds of line:
| Line kind | Where it comes from | How it is measured |
|---|---|---|
| Pour | A liquor SKU from your bottle master | Millilitres, with up to two decimals (31.7 ml, 0.16 ml are kept). |
| Batch component | A batch recipe, active in this bar | A quantity in that batch’s own yield unit (ml, g or pcs). |
| Other ingredient | An item from the Bar department (juice, sugar, soda) | A quantity in any of the item’s units. |
A component line is costed at the batch’s cost per unit of yield and carries an Estimated from recipe badge. Batches can use other batches, up to three deep. A recipe can never use itself, directly or through another batch.
A recipe’s cost is complete only when every leg has a price. One unpriced bar item anywhere inside a batch marks every drink that uses that batch as incomplete, and the list shows a banner while any listed recipe is incomplete.
How a batch reaches your bottles
A batch is never stocked, made or counted. When a drink sells, its pours deplete open bottles as before, and the pours inside its batches deplete too, scaled by how much of the batch the drink uses.
Say Brown Butter Whiskey is a batch that yields 650 ml and is built from 700 ml of a whisky SKU and 300 g of butter, and a drink uses 45 ml of it. Each sale of that drink takes 45 ÷ 650 of the batch, which is 48.46 ml of the whisky. The butter does not move: batch ingredients from the Bar department never deplete stock, only pours do. Amounts are added up across every batch in the drink and rounded once at the end.
A batch on its own is never sold and never depletes anything.
Build a recipe by hand
- In Recipes, click New recipe.
- Name it, pick Batch or Drink, and choose an emoji.
- For a batch, set the Yield and its unit. For a drink, set whether it is a Single or a Batch serving and how many it makes, then optionally pick the Menu item it sells as and its Menu price.
- Add a Batch time and Shelf life in days if you track them.
- Add lines under Liquor pours, Batch components and Other ingredients, and any Other costs. The cost strip at the bottom updates as you build, with cost per drink and margin.
- Click Save.
The form will not save a recipe with no lines, a pour of zero ml, or more than 200 lines of one kind. It warns when one line is nearly the whole cost and the item has a finer unit, in case a quantity was entered in the wrong unit.
Building by hand is always free. It never uses Basanti’s credits.
Import from a sheet
If your recipes already live in a workbook, click Import and drop it in. The template is the kitchen’s seven columns plus three optional liquor columns:
| Column | What goes in it |
|---|---|
| Recipe Name | The recipe’s name. A filled Recipe Name starts a recipe. |
| Item Type | semi-finished (or semi, semi finished) for a batch; finished, menu or menu item for a drink. |
| Yield Qty | The batch yield, or the number of drinks a drink makes. |
| Yield Unit | ml, g or pcs for a batch; a serving word such as drink, cocktail or serving for a drink. Blank on a drink means one drink. |
| Item Name | A line’s name: a liquor SKU, a batch recipe or a Bar department item. A filled Item Name with a blank Recipe Name is a line of the recipe above it. |
| Item Qty | The line’s quantity. |
| Item Unit | The line’s unit. Pours in ml (oz, cl, shot and dash are converted for you), components in the batch’s yield unit. |
| Menu Item | Optional. The POS menu item this drink sells as. |
| Menu Price | Optional. The selling price. |
| Other Costs | Optional. The per-build cost of garnish, ice and the like. |
The downloaded template carries this worked example: a batch first, then the drink that uses it.
Recipe Name,Item Type,Yield Qty,Yield Unit,Item Name,Item Qty,Item Unit,Menu Item,Menu Price,Other Costs
Ginger Syrup,semi-finished,1000,ml,,,,,,
,,,,Sugar,500,g,,,
,,,,Ginger,100,g,,,
,,,,Water,750,ml,,,
Penicillin,finished,1,drink,,,,Penicillin,550,5
,,,,Amrut Fusion Single Malt,45,ml,,,
,,,,Lemon Juice,22.5,ml,,,
,,,,Ginger Syrup,20,ml,,,
A few things worth knowing about the sheet:
- Every worksheet is read, in order. Keep your batches on one tab and your drinks on another if that is how the workbook is organised; a drink can use a batch from any tab.
- No line type column. A line is a pour, a component or an ingredient depending on what its name matches. The importer looks for an exact name match first, among batches in the same sheet, then existing batches, then liquor SKUs, then Bar items. Only when nothing matches exactly does it look for a name that contains, or is contained by, the sheet’s name, and only if that finds exactly one. If it finds two (“Gin” when you stock two gins), the line is left unmatched with every candidate named so you can pick.
- A sheet in the previous liquor template (with Line Type, Qty and Unit columns) still imports as it did before.
- Batches save first. When you press Create, batches are saved in dependency order before the drinks that use them, so every component points at a saved batch. Two batches that use each other are refused, and only those two.
- A row that could not be read at all is listed under the review in its own banner, with the row number and the reason.
Note: the importer matches lines to your existing bottle master and Bar items, so those should be in first. To bring items in from sheets, see Bulk onboarding.
Let Basanti read your recipes
If a recipe is in a message, a document or a spreadsheet that is not in the template shape, don’t retype it:
- In Recipes, click Ask Basanti.
- Paste the recipes into the box, comma or tab separated or as plain prose, or drop an Excel, CSV, TSV or text file. If both a file and pasted text are present the file is read; remove it to read the text instead.
- Click Ask Basanti to read it. Keep the tab open while she reads.
- Review each recipe, then click Create.
Input that is already in the template shape (the template copied out of a spreadsheet and pasted, for instance) is read straight from the grid: no model call runs, every recipe is marked as read from the sheet, and the usage meter does not move. Anything else goes to Basanti, who reads “1.5 oz Gin” as a 44.36 ml pour and matches it to your gin SKU when there is only one.
Reading with Basanti spends the same monthly Basanti allowance as the kitchen’s recipe reads, bulk onboarding and the assistant. The meter at the top of the panel shows how much of this month’s allowance is used. If credits run out partway through, whatever was already read stays in review and a banner names how many recipes are waiting for credits; saving reviewed recipes never uses credits.
Basanti records ingredient names as written, never generalised. A line she could not read a quantity for is not dropped silently: it appears as a note on the card with an Add as line action. A recipe with no readable lines stays in review as an empty build for you to fill in.
Reviewing before Create
Both lanes land in the same review. Each card shows the recipe’s name, kind, yield and unit, the serves the import derived, its menu item, price and other costs, and its three line groups. You can rename it, change its kind, edit the yield, re-point or move any line between kinds, add a line, change a quantity or unit, or discard the card. Cards open collapsed, with the first card that needs attention expanded.
Create is blocked while any card has an unmatched line, a unit that does not fit the item, a pour that rounds to zero, a menu item problem, a name that another active recipe of the same kind already uses, an empty build, or a component cycle. Recipes save one by one; saved cards leave the list as they save, and a card that fails stays for you to press Create again. Nothing needs re-reading.
Tap a recipe
Tapping a recipe opens its detail drawer:
- Header: the kind, emoji and name, one line of yield, batch time and shelf life, status and menu mapping badges, and Edit and Deactivate.
- Tiles: cost per drink, menu price, margin in rupees and percent, and yield.
- Scale: view the build at 0.5×, 1×, 2×, 3× or 5×.
- Recipe or True raw: the Recipe view lists each line with its quantity, share of the build, line cost and stock; the True raw view breaks every batch down to its bottles and bar items with each one’s rate, so you see the honest raw cost. Expand a component row to see the batch’s own lines scaled by the quantity used.
- Stock: how many drinks the bottles on hand cover, and which SKU runs out first, worked out from sealed and open bottle millilitres.
- Used in: for a batch, the drinks that use it; tap one to open it.
- Edit history: every edit keeps the previous build as a version.
Deactivate asks for confirmation. A batch that drinks still use cannot be archived; the refusal names those drinks. A drink mapped to a live menu item cannot be archived until it is unmapped in the POS app. An archived recipe can be restored from the Archived tab.
Names
Two active recipes of the same kind cannot share a name. A drink and a batch may: a bar that pre-batches its Jingalala can keep a batch called Jingalala beside the drink called Jingalala. A second drink named Jingalala is refused.
Note: a batch named after a drink is not used by that drink automatically. The drink uses the batch only when the batch appears as a component line in the drink’s build.
Export
Export downloads every recipe as an .xlsx in the import template’s own
grid, batches first and a used batch before the batch that uses it, so the
file re-imports as it is. Use it to hand recipes to another bar, or to edit
them in bulk and bring them back.