Why Pantry Apps Should Track Stock Levels, Not Quantities

· 4 min read

Most kitchen inventory apps ask you for a number. How much rice? 800 grams. How much cumin? And there, about forty items in, you stop — because you are not going to weigh a half-used bag of besan, and you were never going to.

We built one of those. Then we filled it with a real kitchen — 350 items across 25 cupboards, shelves and drawers — and watched it fall apart.

The number is almost always missing

Once you photograph a shelf rather than typing it, the quantity field comes back empty nearly every time. A photo tells you a jar of turmeric is there. It does not tell you whether the jar is full, and no useful system should require you to open it.

So most items sat at zero. Not "we have none" — nobody had ever recorded one.

Zero and unknown are not the same thing

This is where it broke. The app worked out stock status from quantity: nothing recorded meant nothing left. So a full pantry reported itself as empty.

The shopping list filled with 181 items that were all sitting on the shelf. The AI chef, asked what to make for dinner, replied that we were out of dal, rice and flour — while looking at four kinds of dal.

Every one of those was technically correct. Quantity was zero. The logic was sound and the conclusion was nonsense, because the data meant "unknown" and the code read it as "none".

What stock level actually is

The fix was to stop calculating and start asking.

Stock level is not a measurement. It is a judgement a person makes while standing in front of a cupboard: plenty, getting low, gone. That is the answer, and it takes one tap.

Three states, stored directly:

  • In stock — it is there, get on with it
  • Low — buy more this week
  • Out — you need it now

What matters is that this is stored, not derived. The app no longer has an opinion about what a missing number implies, because nothing is inferred from a missing number any more.

Quantity still exists, it just does not decide anything

We kept the field. If you want to record that you have 2 kg of basmati, you can, and it will show. But nothing depends on it. Status comes from status.

That sounds obvious written down. It took rewriting eight separate places that each independently computed "is this in stock?" from a number — the inventory list, the shopping list, two different AI prompts, the dashboard counter, and three database functions serving the phone-scannable version. Every one had the same bug, and each was invisible, because reading a field that was never fetched gives you undefined rather than an error.

What to take from it

If you are building or choosing a kitchen inventory system, the question worth asking is not how detailed it is. It is what happens when a field is empty.

An app that treats "I did not tell you" as "there is none" will tell you your kitchen is bare, put your entire pantry on the shopping list, and refuse to suggest dinner from a cupboard full of food. The detail is not the problem. The inference is.

A pantry list survives on being quick to keep true. Anything that demands precision you were never going to supply stops being true within a fortnight, and a list that is out of date is worse than no list, because you trust it.

Try it on your own kitchen

Add what's in your pantry, fridge and freezer once. Then ask what you can cook — and get answers that only use what you actually have.

Create a free account

Free · No credit card required · Takes under 5 minutes

Keep reading