Inspiration
Most people don't have a recipe discovery problem — they have an execution problem.
We save recipes from TikTok/YouTube/blogs, screenshots, and links… and then dinner still becomes:
- "What should I cook today?"
- "Do I have the ingredients?"
- "What exactly should I buy, and how much?"
- "I lose the recipe mid-cook and timers are everywhere."
Kitsho (Cook + Shop) was built to match the Shipyard brief: "From saved recipe to dinner made."
So the app is designed around one goal: turn any saved recipe into a plan you can actually finish — ingredients → shopping list → guided cook mode.
What it does
Kitsho is a production-ready mobile app that combines:
- AI-powered recipe import + generation
- smart categorized shopping lists
- step-by-step cook mode with timers
- RevenueCat-powered Pro subscription
The core loop (what makes dinner happen)
| Step | What the user does | What Kitsho produces |
|---|---|---|
| 1) Pick | Import a recipe (link/video/text) or cook from pantry | A clean structured recipe |
| 2) Check | Mark ingredients as Have / Need | A "what's missing" view |
| 3) Shop | Missing items auto-fill a categorized list | A smart shopping list (no e-commerce) |
| 4) Cook | Start Cook Mode with steps + timers | Progress tracking + completion summary |
Core features (MVP)
| Feature | Details |
|---|---|
| Cook from Pantry (AI) | Add ingredients as chips, set filters (time/diet/cuisine/equipment), generate personalized suggestions |
| Recipe Import | Paste link, video URL, or text → AI extracts + normalizes → review/edit before saving |
| Smart Shopping List | Auto-categorized (Produce/Dairy/Meat/Pantry/etc.), check-off, quick add, clear checked, share list |
| Cook Mode | Step-by-step interface, progress tracking, per-step timers, step completion, cooking stats + summary |
| Saved Recipes | Collections + favorites with quick access |
| Preferences | Diet, skill level, equipment, units (metric/imperial), default servings |
Pro subscription (RevenueCat)
Kitsho Pro is designed as an upgrade for confidence + speed, not basic usability.
| Tier | What you get | Limits |
|---|---|---|
| Free | Core cooking + shopping experience | 3 AI operations/week (import + generate combined), tracked |
| Pro (RevenueCat) | Unlimited import + unlimited AI generation + AI Fix Recipe + Daily Suggestions | No limits |
Pro-only highlights
- Fix Recipe with AI: improves formatting, quantities, units, and instructions
- Daily Suggestions: personalized recommendations based on preferences and history, cached per user/day
How we built it
Stack
| Layer | Tech |
|---|---|
| Mobile | Flutter (Riverpod + go_router) |
| Backend | Firebase (Firestore + Security Rules, Auth, Storage, Cloud Functions) |
| AI | Google Gemini 2.5 via Firebase Cloud Functions |
| Monetization | RevenueCat subscriptions + entitlement gating + webhook sync |
| Security | flutter_secure_storage + local_auth (biometrics) |
Architecture (high level)
- Riverpod powers app state (auth, pro status, preferences, recipe data, shopping lists).
- Firebase stores everything with Security Rules so users only access their own data.
- All AI runs server-side via Cloud Functions to keep keys private and enforce consistent output formats.
AI implementation (Gemini 2.5 + Cloud Functions)
| Cloud Function | Purpose | Model |
|---|---|---|
aiImportRecipe |
Extract recipe from link/video/text | Free: gemini-2.5-flash / Pro: gemini-2.5-pro |
aiGenerateFromPantry |
Generate recipes from pantry + filters | gemini-2.5-flash |
aiFixRecipe (Pro) |
Normalize/improve recipe formatting | gemini-2.5-pro |
aiNormalizeIngredients |
Clean names, quantities, categories | gemini-2.5-flash-lite |
dailySuggestions (Pro) |
Daily personalized recipe suggestions | (Cloud Function; cached per day) |
revenuecatWebhook |
Sync subscription events → DB | Webhook handler |
RevenueCat implementation (what judges care about)
- RevenueCat manages subscriptions and entitlements (Kitsho Pro).
- Kitsho also uses a dual-source Pro check for reliability:
1) RevenueCat entitlement
2) Backend Pro status in Firestorekitsho_pro_userscollection (kept in sync via webhook)
This prevents "Pro drift" if a client state is stale and enables server-side Pro checks for AI features.
Security & auth
- Email auth + magic link (OTP) + Google OAuth with deep-link callback.
- Optional biometric unlock + protected actions.
- API keys stored in Firebase Functions environment variables (never shipped to the client).
Challenges we ran into
| Challenge | Why it's hard | What we did |
|---|---|---|
| Importing from "real-world" content | Recipes are inconsistent: missing quantities, vague steps, messy formatting | Added a Review & Edit screen + Pro-only Fix Recipe with AI |
| Making AI output trustworthy | Users won't cook if they don't trust the recipe | Enforced structured outputs + normalization + clear user control |
| "Cook + Shop" as one product | Many apps split this into separate experiences | Built a single execution loop: Check → List → Cook |
| Subscription gating without ruining UX | Paywalls too early kill trust | Free tier proves value; Pro unlocks power features + unlimited usage |
Accomplishments that we're proud of
- Shipped a working Cook + Shop loop that closes the execution gap.
- Built real AI flows: pantry generation + import + normalization + Pro fix.
- Implemented RevenueCat Pro with a robust backend sync strategy (webhook + Firestore).
- Delivered Cook Mode with timers, progress, and a completion summary that reinforces habit.
- Added real security primitives (Firebase Security Rules, secure storage, biometrics) for production readiness.
What we learned
- "Saved recipes" don't equal meals — momentum is the product.
- AI needs guardrails: structured formats + review screens = trust.
- The highest leverage UX is reducing friction at the exact moment a user decides to cook.
- Monetization works best when it upgrades confidence and speed, not basic cooking.
What's next for Kitsho | From Saved Recipe to Dinner Made
Roadmap
| Timeframe | Next steps |
|---|---|
| Next 2–4 weeks | Improve video import robustness, better ingredient normalization, tighter cook-mode UX |
| Next 1–2 months | Smarter substitutions, meal queue ("Cook this week"), reminders tied to shopping list status |
| Future | Creator/community phase (profiles, video feed, likes/comments), shared household lists, deeper personalization |
Kitsho's north star stays simple: turn "saved" into "served."
Built With
- app-links
- cached-network-image
- dart
- firebase
- firebase-auth
- firebase-cloud-functions
- firebase-storage
- firestore
- flutter
- flutter-secure-storage
- go-router
- google-fonts
- google-gemini-api
- google-sign-in
- http
- image-picker
- local-auth
- node.js
- revenuecat
- riverpod
- share-plus
- typescript
- video-player

Log in or sign up for Devpost to join the conversation.