Back to projects

Project detail

Recipe Generator — AI-Native iOS App

2026

Most recipe apps work backwards: you pick a recipe first, then go shopping for it. The question people actually face at 6pm is the opposite. Here's what's in my kitchen, what can I make with it?

That's the core of this app, but it grew into a full kitchen companion. You type in what you have, plus anything else you care about like "quick dinner" or "no dairy", and the AI writes a complete recipe around it. Your ingredients guide the dish rather than restrict it, so the model can suggest a few additions if they'd make it better. If you'd rather not decide at all, a Surprise Me mode generates from pantry staples alone. The app also keeps track of what's in your kitchen and highlights, ingredient by ingredient, what you already have and what's missing on anything you're looking at.

The part I'm happiest with is importing. Found a recipe on TikTok, YouTube, a random blog, or a handwritten card? Send the link or a photo and the app pulls it into your library. Receipt photos work too: snap the receipt and your pantry updates itself. Once a recipe is in, you can change it by conversation (make it quicker, feed six, swap what you don't have) instead of starting over, and a cook mode walks through it step by step. There's also a browse page with ready-made recipes and natural-language search for the days you want inspiration rather than generation.

Two design decisions make it practical at scale. The AI serving layer can run on hardware in my home instead of a paid API, so generation costs nothing and pantry data stays private. And the app remembers every recipe it has ever produced: when a similar combination is requested again, by you or anyone else, the answer comes back instantly. Popular combinations are pre-loaded before anyone asks, so most requests never touch the model at all.

Under the hood

The app is React Native (Expo, TypeScript). Generation runs on llama3.2:3b served by Ollama on my home machine, reachable from the phone over Tailscale; a separate alternative backend is a Flask service around a 560M-parameter BLOOM model, fine-tuned for recipes, at ~8s inference with 100% valid-JSON output.

The ingredient ordering that feeds the prompt isn't naive: ingredients are embedded with nomic-embed-text and ranked by semantic relevance, with section dampening and usage-frequency weighting so the items that should drive the dish lead the prompt.

The cache is three tiers: AsyncStorage on device (L1), a shared Supabase table (L2), then the model (L3). The cache key is a SHA256 of the normalized ingredient list (lowercased, deduplicated, sorted), with universal staples like salt and oil excluded, so superficially different requests hit the same entry. A background job pre-warms L2 from popular combinations pulled via the Spoonacular API, targeting a >85% hit rate. At 1,000 daily users that's the difference between ~$5/day and ~$0.50/day of inference.

React Native
Expo
TypeScript
Supabase
Ollama
Python
Flask
Transformers
DADaksh Adhikari