Skip to content

Storage locations

A storage location is a physical place in the kitchen where stock lives. Walk-in cold, dry store, bar fridge, bakery freezer, wine cellar, cleaning cupboard. Every row in the inventory list points at one. The list filters by location chip, the stock count walks one location at a time, and the waste log breaks down by where things went bad. The catalogue is the map the rest of the system uses to navigate the building.

The reason this exists is that physical reality is organised by room. Stock counts walk the walk-in for fifteen minutes, the dry store for ten, the bar for five — one person, one room, one list. The morning prep grab-list is “everything in the dry store I need for today’s bread”. The waste-by-location report tells the owner which fridge keeps killing herbs. None of these workflows work without a catalogue of rooms to point at.

The rule

Every inventory row lives in one place. Where the row lives is the room someone walks to count it, grab it from, or discover its leak. Categories answer what kind of thing; locations answer where to find it.

What a location captures

A location is a small record — a name, an emoji, an optional slug for URLs, an optional temperature note, and an optional free-text description. Name is what the row chip and the filter chip read: Walk-in cold, Bakery freezer, Wine cellar. Emoji is the glyph the list shows next to every row in this location — 🧊 for cold, ❄️ for freezer, 📦 for dry, 🍷 for bar, 🧴 for cleaning, 🗄️ for the catch-all. Temperature is a note (2–4°C, -18°C, ambient) that helps staff remember the rules and helps the AI explain spoilage. Description is whatever the kitchen wants to remember about the room — “organic produce only”, “bottom shelf reserved for the next day’s prep”.

There’s no hierarchy. Locations don’t nest — fridge shelf 3 is too granular and adds maintenance with no benefit. If a row needs a precise position, the row’s own Notes field takes it. Five to eight locations is the typical shape of the catalogue; ten is a lot; thirty is a sign someone confused locations with categories.

How to use it

Open it from the sidebar: Settings → Storage locations. The page is a list, ordered by sort key. Each row shows the emoji, the name, the temperature, and a count of how many inventory rows currently live there.

Tap + Add location to create one. The dialog asks for the emoji, the name, an optional slug, the temperature note, and the free-text description. Save and the location is live — it shows in the inventory list’s filter chips immediately and in the storage dropdown on every row’s edit form.

Tap any row to rename, swap the emoji, change the temperature note, or reorder with the up/down arrows. To delete a location, every row currently in it has to be moved elsewhere first — the dialog shows the count and refuses the delete until it’s zero. Either move the rows one at a time from the inventory list, or use the bulk-reassign option the delete dialog offers (it asks for the replacement location and moves every row over in one shot).

The other workflow is reassignment. Open the inventory list, filter to the rows that need to move (by category, by name, by current location), and edit the Storage location field on each one. For larger moves — a whole pastry section migrating to a new room — the bulk edit on the list page lets you reassign many rows at once.

What happens behind the scenes

The storage location on each row is organisational metadata. It doesn’t affect cost, doesn’t affect stock numbers, doesn’t fire any cascade — except for two things that read it.

The first is the stock count session. When the kitchen runs a count, the screen filters to rows in the chosen location and presents them one at a time, in the order they sit on the shelf. The count-by-location screen and the catalogue here are the same list, read from the same field. The second is the Below par shortlist and the daily reorder message — they group by location so the order to the cheese supplier covers what’s needed in the walk-in cold, and the order to the bakery supplier covers what’s needed in the dry store. Two messages, two suppliers, two locations, one screen.

The emoji is purely visual — it doesn’t drive logic, only readability. The temperature note is read by the AI when explaining spoilage and by the support text when a row’s stock drops faster than its shelf life would explain. Otherwise the location is inert: a label that makes physical reality navigable.

Worked example

Your venue is six months in and the pastry side has grown enough that the chef carves out a new room behind the dry store — a small walk-in dedicated to pastry. It now holds the butter, the eggs the pastry team uses, the cream, the chocolate, the fruit they laminate into the croissants. The chef wants the next stock count to walk that room as its own thing instead of mixing it with the main walk-in.

He opens Settings → Storage locations, taps + Add location, names it Pastry walk-in, picks the ❄️ emoji, types 2–4°C into the temperature note, drops a description: “Pastry team only. Daily count Tuesday morning.” He saves. The new location shows in the dropdown.

He flips to the inventory list, filters by Category: Dairy, scrolls to the rows the pastry team owns — butter, mascarpone, ricotta for the cannoli filling, double cream, the chocolate bars. He bulk-selects them and reassigns to the new Pastry walk-in. He repeats with Category: Eggs for the pastry eggs and Category: Fruit & veg for the laminating fruit. About thirty rows move in seven minutes.

The next Tuesday morning the pastry team opens the stock count screen, picks Pastry walk-in from the dropdown, and the screen shows exactly the thirty rows in the new room — in the order they sit on the shelves. The count takes eight minutes instead of the previous twenty-five (which spent half its time hunting through the main walk-in’s eighty rows for the pastry-relevant ones). The new physical room is now also a new logical room, and the workflow finally fits the building.