Inspiration

Like millions of home cooks, I had 50+ saved recipe videos scattered across TikTok, Instagram, YouTube, and random bookmarks — but I barely cooked any of them. The gap between "that looks amazing" and "it's actually on the table" was enormous.

I first built InstaRecipes, a personal tool to download Instagram Reels from a WhatsApp message and extract the recipe, some months ago. When Eitan Bernath's Shipyard brief dropped — describing this exact problem for his audience of millions — the path was clear: evolve my personal tool into a full mobile experience any home cook could use.

What it does

RecipeToDinner closes the gap between recipe inspiration and execution:

  • Native Share Extension — See a recipe on TikTok or Instagram? Hit the iOS Share button, tap RecipeToDinner, and it's imported automatically. No copy-pasting, no app-switching. This is the zero-friction moment that makes saving recipes effortless.
  • Multi-Source Import with Creator Attribution — Paste a link from TikTok, YouTube, Instagram, or any recipe website. AI downloads the content, transcribes the audio, and extracts a complete structured recipe in seconds. Every recipe preserves the original creator's name, avatar, and platform — you always know where inspiration came from.
  • Trending from Creators — The home screen features a curated section with real recipes from creators like Eitan Bernath, complete with author profiles. New users get instant value from day one.
  • Smart Library — All imported recipes in one organized, searchable place. No more digging through Instagram saves.
  • Weekly Meal Planner — Assign recipes to your weekly calendar. Know exactly what you're cooking each day.
  • Intelligent Shopping List with Voice Input — AI aggregates ingredients across recipes ("2 eggs" + "3 eggs" = "5 eggs"), categorizes by aisle (Produce, Dairy, Meat, Pantry), and gives you one optimized list. Need to add something? Hold the mic button and say "avocados, limes, and cilantro" — the AI transcribes, parses, and categorizes your voice into the list. No typing needed.

How I built it

I leveraged my existing InstaRecipes backend (Python/Flask) and extended it into a full-stack mobile product:

Backend (Python/Flask on Railway):

  • Strategy pattern with specialized downloaders: Apify API for Instagram, yt-dlp for TikTok/YouTube, BeautifulSoup for web scraping
  • Audio extraction with MoviePy/FFmpeg → transcription via OpenAI Whisper API
  • GPT-4.1 with Structured Outputs for recipe extraction and shopping list aggregation
  • Voice-to-shopping-list pipeline: record audio → Whisper transcription → GPT-4.1 item extraction & categorization
  • Supabase (PostgreSQL) for data storage, Cloudinary for images

Mobile App (React Native + Expo SDK 54):

  • Expo Router with file-based routing and 5-tab navigation (Home, Plan, Saved, Shop, Profile)
  • expo-share-intent for native iOS Share Extension — import recipes directly from any app
  • Supabase Auth with Google Sign-In
  • RevenueCat SDK for subscriptions (Annual $99.99/yr with 3-day trial, Monthly $9.99/mo)

Challenges I ran into

  • Native Share Extension — Getting expo-share-intent to properly handle URLs shared from TikTok and Instagram required careful configuration of activation rules and app group IDs
  • Recipe parsing quality — Early GPT prompts returned inconsistent JSON. Switching to OpenAI's Structured Outputs with strict: true and explicit JSON schemas solved this completely
  • Voice input for shopping — Building the hold-to-record → transcribe → parse → categorize pipeline required chaining Expo Audio recording, Whisper API transcription, and GPT-4.1 structured extraction in a seamless UX
  • Shopping list aggregation — Combining "2 cups flour" + "100g flour" across recipes requires unit normalization. GPT-4.1 handles this intelligently as part of the aggregation prompt

What I learned

  • Share Extensions are a killer feature — Removing the need to copy/paste URLs makes the import flow 10x more natural
  • OpenAI's Structured Outputs feature is a game-changer for building reliable AI pipelines — no more parsing flaky JSON
  • Voice input feels magical when the AI chain behind it (record → transcribe → extract → categorize) is fast enough
  • RevenueCat makes subscription management surprisingly straightforward, especially the identity sync with existing auth systems
  • Building for a real creator's audience (vs. abstract users) sharpens every product decision

What's next for RecipeToDinner

  • Nutritional info per recipe (calories, macros)
  • Grocery delivery integration (Instacart, Amazon Fresh)
  • Collaborative shopping lists for families
  • More creator collections
  • Android launch and web companion app

Built With

Share this project:

Updates