
Pantry Bud
A mobile-first pantry app that solves the actual problem people have with cooking apps: every recipe site is somebody else's idea of dinner. Pantry Bud knows what you have, knows what you saved on TikTok, and matches the two. Receipts go in by scan, recipes come in by paste, and waste reduction is the headline number.

Overview
Two stacked frustrations. Recipe apps treat ingredients as if you start each week with a perfectly stocked kitchen; most of us start each week with two-thirds of a fridge of half-used things. And recipe discovery has fully migrated to video. The recipes I actually want to cook are saved in a TikTok folder I never open. Pantry Bud closes that loop. Pantry state goes in by receipt scan or manual edit, recipes come in by URL paste from any video, and the matcher tells you what's one decision away from dinner.
Approach
React Native app and a marketing site at pantrybud.com, both calling a single NestJS GraphQL gateway. GraphQL was the cheapest way to have mobile, web, and a future automation surface read the same shape. Postgres through Prisma, a recipe corpus of about nine thousand entries seeded from public sources, Google Vision for receipt OCR, Gemini for the recipe-to-pantry match. AI services live behind the gateway so I can swap models without shipping a new app store build. Auth is Google OAuth; the install funnel didn't deserve a password.
Outcome
Live and shipping weekly. The numbers I care about: pantry-to-cook conversion (does an item actually get used before it expires) and TikTok-import retention (do people come back to cook the thing they saved). Both are tracking in directions I would have bet against at the start. The number I'm still chasing is the cold start. Someone with an empty pantry needs the app to be useful inside the first week, and that flow still has rough edges.
Reflections
The moat here isn't the model. It's the importer. Anyone can match ingredients to recipes given both lists; almost nobody has put real engineering into the video-to-ingredient pipeline. GraphQL was right for cross-client coherence and wrong for the marketing site, which spent a month paying a tax it didn't need. Next time: thin REST for marketing, GraphQL gateway for everything else.