Inspiration

Everyone has cookbooks collecting dust on a shelf or handwritten family recipes slowly fading with time. And just about everyone can relate to seeing a delicious recipe on Instagram, but never following through and making it. CookIQ solves this by bridging the gap between the recipes we have and the meals we actually cook.

What It Does

AI-Powered Scanning — Point your camera at any recipe and GPT-4o Vision extracts the title, ingredients (with quantities, units, and notes), instructions, prep/cook times, and auto-generated tags.

Chef AI Assistant — A context-aware chatbot that knows your recipe library. Ask for substitutions, technique tips, or what to cook with what's in your fridge.

Smart Shopping Lists — Add ingredients from any recipe to a consolidated list. The app intelligently merges duplicates — two recipes calling for flour become one combined entry, categorized by aisle.

Meal Planning — A weekly calendar where you slot recipes into Breakfast, Lunch, Dinner, and Snack, then push all ingredients to your shopping list in one tap.

Search, Sort & Filter — Full-text search across your library with sorting by recency, alphabetical order, or rating.

How I Built It

I used Cursor and Claude Code to build the app.

React Native + Expo, targeting iOS, Android, and web from a single TypeScript codebase. Supabase handles auth, PostgreSQL storage, and Edge Functions (securely proxying OpenAI calls so keys never touch the client). OpenAI GPT-4o powers both the vision-based recipe extraction and the streaming Chef AI chat. RevenueCat manages the freemium subscription model. The app uses a local-first architecture: AsyncStorage as the primary data layer with Supabase syncing in the background so it works fully offline and degrades gracefully.

Challenges

Making sure that recipe import worked from Instagram was challenging and took a lot of trial and error. It was also challenging to ensure it worked from TikTok as well as Instagram.

Keeping users engaged during processing was another challenge. Extraction takes several seconds, and a spinner felt like dead time. The solution: a Flappy Pizza mini-game that plays while the AI works. It turned a wait into a moment of fun.

State management at scale got complex fast. The app juggles auth state, subscription entitlements, onboarding progress, user preferences, cooking activity tracking, and theme context. Keeping this performant while maintaining a local-first approach with cloud sync required careful architecture.

What I Learned

This was one of the first iOS apps I've ever built, so I learned a lot about what goes into testing the app and making sure it works on TestFlight and will get approved. That was one of the hardest challenges and learnings for me.

Built With

Share this project:

Updates