Indian households re-order what they already own and quietly throw out what expired in the back of the fridge — because the kitchen is the one inventory nobody keeps books on. PantryPilot turns any grocery receipt — a Blinkit order or a photo of a kirana bill — into a live inventory that forecasts what's about to run out and plans meals around what's about to spoil. The AI reads the receipt; deterministic code does every number.
Every inventory in your life has software behind it — except the one you touch three times a day. Staples run out mid-recipe. Perishables die unseen behind the leftovers. The same toor dal gets bought twice because no one remembers the first bag. It's a demand-and-inventory problem, sitting in plain sight in every kitchen, run entirely on memory.
Quick-commerce made the buying frictionless — a Blinkit order lands in ten minutes — but did nothing for the tracking. So the fridge fills faster and empties more wastefully than ever, and the household has no idea what it has until it's already gone or already spoiled.
The tempting build is to let the LLM do everything — read the receipt, add up the total, guess when the milk runs out, invent a recipe. The decision that shaped the entire product was drawing a hard line instead: the model handles perception and generation; deterministic code owns every number. The LLM reads a crumpled bill and normalises "TOOR DAL 1KG ORG" into something real. Code strips the GST, checks the line items actually tie to the printed total, forecasts run-out from a consumption rate, and verifies that a suggested meal only uses food you genuinely have. Knowing what not to hand the model is the whole point.
Built end-to-end with Claude Code across four sessions, designed in Claude Design first — so the product decisions were locked in low-fi before a line of code was written.
The six screens were blocked out in low fidelity first — hierarchy, tap targets, and, above all, where the AI's confidence and the human's correction would live. Four decisions were locked on that wireframe board on day one and never moved. When the skin went on, the palette and the type changed more than once. The structure didn't change at all — every grey box maps one-to-one to a shipped component: expiry badge, run-out chip, confidence badge, reason tag.
That discipline is the difference between designing a product and decorating one. The interesting calls — pinning uncertain items to the top of the review screen, putting the validation banner above the data so trust comes first — were made when they were cheap to make, in grey, and survived all the way to the built app.

Six screens in grey. The low-confidence review, the validation banner, and the single status scale were all placed before any colour existed.

The same core flow, skinned. One status scale — fresh / use-soon / expired — drives every badge, chip, and tag in the system.

Shipped. Add is one tap from both Home and the tab bar; the kitchen view leads with what's about to run out.
This is a portfolio build, so the proof isn't adoption — it's that the measurement caught the model being wrong, exactly where it was designed to. The grounding guardrail reclassified a 7% rate of fabricated "you have this" claims before any meal reached the screen. The reconciliation check caught every injected price error, three for three. And the confidence score turned out to mean something: items above 0.85 were right 100% of the time, items below 0.70 only 63% — which is precisely why the low ones go to a person. All of it runs at about ₹0.41 a receipt, roughly ₹30 a month at real usage.
The model reads a crumpled kirana bill; the code refuses to lie about what's in your fridge. Less waste, fewer double-buys, and a kitchen that finally keeps its own books.
Anyone can make an AI read a receipt. The product was everything I didn't let it touch.