SuzeChef: Turning My Cooking Chaos Into a Game
Inspiration
I'll be honest: this project started from a place of frustration with myself.
I'd been wildly inconsistent with cooking. Takeout was winning. The scale was going up. My fiancée would ask me every Sunday, "What should we have this week?" and I'd just stare at her blankly. She's a planner — she likes the week mapped out, meals decided, grocery list ready. I'm a gym person, so on top of all that, I need to hit my macros. Every recipe I find online needs to be mentally audited:
$$\text{Can I eat this?} = f(\text{protein}, \text{carbs}, \text{fats}, \text{fiber}, \text{calories})$$
And then there's my cheap thrill of finding healthier alternatives to the stuff I love. Swapping heavy cream for Greek yogurt, regular pasta for chickpea pasta, that kind of thing. It's a mini-game in my head every time I look at a recipe.
At some point I realized all of these frictions: the inconsistency, the planning paralysis, the macro math, the substitution hunting were all connected. They're all reasons I don't cook. So what if I built something that made cooking feel less like a chore and more like a game? What if there was an app that I, the person who hates meal prepping, would actually open?
That's how SuzeChef was born. A gamified cooking app with a little axolotl mascot named Suze who evolves based on what you cook.
What it does
SuzeChef is an iOS app that turns recipes into interactive, step-by-step cooking experiences. The core loop:
- Magic Import — Paste any recipe URL (TikTok, Instagram, blogs) and AI extracts and structures it
- Smart Remixes — Get personalized substitutions based on your dietary goals
- Cook Mode — Step-by-step guided cooking with timers and a page-curl interface
- Meal Planning — One-tap personalized meal planning with auto-generated shopping lists
- Suze Evolution — Your mascot evolves based on a 5-stat nutritional system
The evolution system tracks five nutritional dimensions across every recipe you cook:
$$\vec{S} = \begin{pmatrix} \text{Protein} \ \text{Fiber} \ \text{Brain Fuel} \ \text{Hydration} \ \text{Energy Balance} \end{pmatrix}$$
Your dominant stat determines Suze's evolution — cook lots of high-protein meals and she becomes Protein Power Suze (orange). Eat balanced across all five? She becomes Master Chef Suze. Skip cooking for 5+ days? She withers. That guilt alone gets me back in the kitchen.
How we built it
This was my first iOS app ever. I went in head-first with zero Swift experience and completely embraced AI-assisted development. The tech stack:
| Layer | Tech | Why |
|---|---|---|
| Frontend | SwiftUI + SwiftData | Native iOS 26+ with Liquid Glass design language |
| Backend | Convex | Real-time reactive data, TypeScript functions, zero infrastructure |
| AI Parsing | OpenRouter with Gemini Flash 2.5 | Turns messy recipe HTML into structured JSON |
| Auth | Auth0 | Google + Apple Sign-In via Universal Login |
| Payments | RevenueCat | Subscription management ($9.99/mo freemium) |
| Video | Remotion | React-based programmatic video for the promo |
Claude Code was my co-pilot for the entire journey. I'm not exaggerating when I say it was the single most enlightening development experience I've had in recent times. I set up a full agentic workflow — planning with Apple Docs MCP, implementing with specialized Swift agents, and mandatory code review before anything gets accepted. It felt like pair programming with someone who actually read the documentation.
For the promo video, I used Remotion (video creation in React) with Gemini TTS for text-to-speech narration. Building a video programmatically instead of fumbling in Premiere was a revelation.
Convex as the backend deserves its own paragraph. Coming from traditional SQL-based engineering, the shift to a reactive, pub-sub architecture was a paradigm shift. In Convex, queries are live — the frontend subscribes and automatically re-renders when data changes. No polling, no manual refresh, no stale state. The developer experience is outstanding: you write TypeScript functions, deploy, and everything just works. Real-time sync between devices came for free.
Midway through the project, I hit a wall with the UI. The functionality was there but the experience felt generic — it didn't have a personality. That's when my teammate joined. They brought a sharp eye for design and together we've been iterating on making SuzeChef feel unique — the pixel aesthetic, the evolution animations, the cozy color palette. Having a collaborator to bounce ideas off of and push the visual identity forward changed the trajectory of the app.
Challenges we ran into
The SQL-to-Reactive Migration
This was the biggest time sink. We initially architected everything with a SQL mindset — repositories, manual fetch calls, imperative data loading. Midway through, I migrated to Convex's reactive model where queries are subscriptions and mutations trigger automatic UI updates. The mental model shift from "fetch data when you need it" to "subscribe to data and let it flow" took genuine rewiring. Worth it, but I lost real time in the transition.
System Design Decisions
Choosing the right tools was its own challenge. Auth0 vs Firebase Auth? Convex vs Supabase? SwiftData vs Core Data? Each decision had tradeoffs, and as a first-time iOS developer, I didn't always have the context to evaluate them quickly. I over-engineered early (feature flags, abstract repositories) before learning to keep things simple and only add complexity when the code demands it.
App Store Connect
Apple's review process was a headache. Delayed reviews, vague rejection reasons, metadata requirements that aren't documented anywhere obvious. I spent more time wrestling with App Store Connect provisioning profiles and certificates than I'd like to admit. If you're a first-time iOS developer reading this — budget time for this. It's not the fun part.
Accomplishments that we're proud of
Shipping a real app as a first-time iOS developer. SuzeChef is on TestFlight with real users. It has auth, payments, AI integration, a gamification engine, and a reactive backend.
The Magic Import pipeline. Paste a URL from any recipe site, TikTok, or Instagram and within seconds you get a fully structured, step-by-step recipe with nutrition data and smart substitutions. The two-phase architecture — on-device extraction followed by server-side AI parsing — with a URL-based cache layer means repeated imports are instant.
The evolution system actually works as motivation. Suze withering after 5 days of not cooking genuinely guilt-trips me back into the kitchen. The 5-stat system makes me think about nutritional variety in a way calorie counting never did. I'm cooking more consistently than I have in years.
A full agentic development workflow. We built a Claude Code pipeline with planning, implementation, and mandatory code review agents. It's not just "AI writes code" — it's a structured engineering process that catches bugs and enforces patterns before anything ships.
What we learned
Architecture is everything. We spent more time thinking about data flow than writing UI code. The import pipeline alone has two distinct phases — on-device extraction followed by server-side AI parsing — with a caching layer in between. Getting that right meant imports feel instant for previously-seen URLs.
The @Observable vs @Published gap is real. SwiftUI's newer @Observable macro and Combine's older @Published don't play nicely together. I burned hours figuring out why my views weren't re-rendering before discovering I needed to bridge the two frameworks with Combine sinks. A hard-won lesson in iOS's evolving state management story.
What's next for SuzeChef: Cooking Companion
Low-Hanging Fruit
- Better AI Models & Tuned Parsing — Upgrading beyond Gemini Flash and fine-tuning prompts for more accurate recipe extraction, especially for non-standard formats like TikTok captions and Instagram reels. We could even explore agentic tooling for chatbot interface.
- Nutrition API Integration — Plugging into a real ingredient database for accurate per-ingredient macros instead of relying solely on AI estimates. Precise $\text{kcal}$, protein, carbs, and fat numbers that you can actually trust for meal planning.
- Share-to-App for Easier Recipe Capture — An iOS Share Extension so you can hit "Share" from Safari, TikTok, or Instagram and send the URL straight into SuzeChef — no copy-pasting required.
The Vision
- Instacart Integration — One-tap grocery ordering directly from your meal plan's shopping list. Plan your week, tap "Order," and ingredients show up at your door. Opens up Affiliate marketing.
- Speech Assistance for Hands-Free Cooking — Voice-guided cook mode so you can keep your hands in the food and your eyes off the screen. "Hey Suze, next step."
- Polished Asset Library — A full library of custom illustrations, animations, and evolution art for Suze. Right now she's charming; we want her to be iconic. Opens up monetization via in-app purchases for cosmetics.
Built With
- auth0
- claude-code
- convex
- gemini-nano
- gpt-4o-mini
- openrouter
- react
- remotion
- revenuecat
- swift
- swiftdata
- swiftui
- typescript
Log in or sign up for Devpost to join the conversation.