Inspiration
My inspiration for this project comes from my own personal experience in the kitchen. You see an influencer like Eitan make the most incredible pasta on TikTok. You save the video. You screenshot the ingredient list. And then it disappears into your camera roll alongside 47 other recipes you were definitely going to make.
I save dozens of recipes a month and cook maybe two of them. Not because I don't want to cook but because nothing fully connects the moment I find a recipe on TikTok to being able to actually make it. There are apps that do pieces of this well. Recipe managers that save links and videos, even extracting ingredients and steps. Grocery apps that organize shopping lists and might offer sharing. Inventory trackers that log what's in your fridge. But they're all separate, and the friction of bouncing between them means most people (myself included) just don't bother. The recipe video gets buried in my saved folder and I order takeout again.
It's not a motivation problem. It's a design problem. No app solves all of these in a single frictionless loop, that's why I built Soufflé.
What it does
Soufflé turns saved recipes into home-cooked meals by supporting the entire cooking journey.
The whole app is built around one loop: save a recipe → know what's in your kitchen → shop only what's missing → cook step-by-step → your pantry updates automatically and keeps the entire household in sync.
Import a recipe from any link or photo
Paste a link from TikTok, a food blog, a cook book or even hand-written recipe cards. Soufflé extracts the full ingredient list, quantities, and instructions. The recipe lands in your library, ready to cook.

Scan packaged items with one tap.
The barcode scanner captures product name, package size, servings, and expiration date automatically. Your pantry tracks real quantities — "200g of flour," not just "flour" — so the app knows exactly how much you have.

See produce? Just point your camera.
Not everything has a barcode. The visual food scanner identifies fruits, vegetables, and meats on sight and adds them to your pantry in seconds. No typing, no searching.

Shop only for what's missing.
Tap a recipe and Soufflé cross-references the ingredients against your pantry. It builds your shopping list automatically. No duplicates, no guesswork.
Cook step-by-step, pantry updates when you're done
Cooking mode walks you through each instruction at your own pace. When you finish, the app deducts what you used from your pantry automatically, handling unit conversions seamlessly. No more manual bookkeeping.
Built for households.
Everyone in your home shares a single pantry in real time. Each member sets their own dietary preferences and allergens, and every recipe page shows exactly who can safely eat it. Three out of four people can have it? That's still dinner. You just know who needs a swap.
AI substitutions.
Missing an ingredient? Soufflé suggests alternatives so you can cook tonight instead of making another grocery run.
How we built it
I'm a backend engineer by profession, and the thing that drew me to this project is that it's actually the same kind of problem I solve at work. Keeping a shared pantry accurate across multiple users in real time, so that everything else (shopping lists, consumption tracking, allergen detection) can trust the data, is a distributed state problem. Different domain, same fundamentals.
The app is built with Swift on the frontend and Go on the backend, with DynamoDB and S3 for storage, Pinecone for creating vector embeddings of USDA whole food data and semantic ingredient search, and Gemini 3 Flash doing a lot of the heavy lifting for various functions. RevenueCat handles the entire monetization layer for subscriptions and paywalls.
Further docs - https://github.com/mlorelle/Souffle-Shipyard2026/wiki/Souffl%C3%A9-%E2%80%90-Technical-Documentation
Challenges we ran into
The hardest challenge was pantry accuracy. A pantry that only tracks what goes in becomes stale within a week, and the moment users stop trusting the inventory, they stop trusting the shopping list, and the app stops being useful. Getting auto-consumption right after cooking, specifically deducting the correct quantities based on the recipe and performing proper and accurate unit conversions was essential to keeping the whole loop honest. Also adding a rollback mechanism for auto-consumed ingredients was rather tricky but vital to earn users trust in the recipe auto-complete functionality.
On the design side, being a perfectionist meant I'd get stuck polishing pixel-level details on a single menu or screen when I should have been stepping back to 10,000 feet and solving higher-level problems to move development forward. Learning to prioritize the right things at the right time was a challenge in itself.
Accomplishments that we're proud of
The barcode scanner doesn't just add an item to the pantry. It captures package size, serving count, and a full ingredient list programmatically when available. To do so, I took DB dumps of various free food data sources and cleaned the data and built my own look up table for barcodes. That's what lets Soufflé say "you have 200g of flour but this recipe needs 350g" instead of just "you have flour." And those same ingredient lists power the allergen detection automatically, with zero manual input from the user.
I'm also proud of how the recipe video import turned out. With other apps I've used video import often lacked accuracy or would miss entire ingredients or steps. I set out to make the import accuracy paramount because what good is an incomplete recipe. To do so, we import the recipe frame by frame to not only get the main ingredients and steps but also the cooking techniques and other subtleties that aren't explicitly mentioned but are vital to the cooking experience. Doing this also allows us to use on-screen captions or other verbal notes to further improve the accuracy. Overall I'm quite happy with how well they work.
Lastly I'm proud of how the household features came together. Allergen indicators are shown per-recipe rather than used as a global filter. Hiding recipes from the household isn't the right move when three out of four people can eat it. That design decision felt right from the start and it's one of the things that makes Soufflé feel like it was built for real kitchens and households, not just individuals.
What we learned
Building a consumer product is a fundamentally different challenge from backend infrastructure at scale, even when the underlying data problems are similar. In my professional job, I think about consistency and reliability in the abstract. With Soufflé, every technical decision has a direct UX consequence. If the pantry is wrong by one item or the shopping list is wrong the user notices immediately. It sharpened how I think about the relationship between data accuracy and user trust.
I also learned to be deliberate about tradeoffs. The visual food scanner prioritizes ease of input over granularity and correctness, giving item counts instead of exact package sizes, because for things like produce that varies in size and expires fast, it makes sense. Not every input needs to be precise to be useful in this setting.
What's next for Soufflé
I was able to accomplish most of what I envisioned when starting this project but there a few key things I'd still love to see in the app.
The feature I'm most excited to add would be hands-free cooking mode with voice guidance. When cooking its not always easy to have access to your phone screen. Your hands are wet, covered in flour, or holding a knife. I want users to be able to say "next step" to advance the recipe or "how do I mince garlic?" and get an answer without ever putting anything down.
After that, AI-generated recipes based on what's already in your pantry and what's about to expire. Not every meal starts with a TikTok video or food blog. Sometimes it's a weeknight night and you just need to use up what you have before it goes bad. When the app starts turning potential waste into dinner, the subscription pays for itself.
Built With
- digitalocean
- docker
- dynamodb
- gemini
- golang
- grpc
- pinecone
- revenuecat
- s3
- supabase
- swift
- swiftui
Log in or sign up for Devpost to join the conversation.