How It's Built

One URL In. One Recipe Out.
Everything in Between is Engineering.

SuzeChef turns a TikTok link into a structured, cookable recipe in under 3 seconds. Here's how seven extraction strategies, server-side AI, real-time sync, and a native iOS client make that feel effortless.

7 Sources, 1 Output FormatZero-Upload Photo ParsingReal-Time Sync via WebSocket8 Tables, 0 Polling~$0.001 Per AI Parse

The Stack

Five services, zero vendor lock-in. Each external dependency was chosen because it's best-in-class at exactly one thing — and replaceable if it isn't.

iOS Client

SwiftUI + SwiftData

Convex Backend

Real-time DB & Functions

Auth0

OpenRouter

RevenueCat

ScrapeCreators

Seven Sources. One Recipe.

A TikTok video, a screenshot of grandma's handwriting, and a New York Times URL all produce the same structured JSON. The import engine detects the source, routes to the right extraction strategy, deduplicates by URL, and hands clean text to the AI parser.

Source Detection

Route to the right extraction strategy

Web URL

On-device scraping — JSON-LD first, HTML fallback, og:image capture

TikTok

ScrapeCreators API — transcript extraction + video metadata

Instagram

ScrapeCreators API — caption + transcript + post metadata

YouTube

ScrapeCreators API — description + transcript + chapters

Photo / Screenshot

Apple Vision OCR — on-device, image never leaves the phone

Pasted Text

Pattern matching — auto-detects ingredients, steps, and sections

AI Prompt

Two-phase — generate recipe text, then parse into structured JSON

Unified AI Parsing → Structured Recipe

End-to-End Pipeline

1

Input Detected

Source routing

2

Content Extracted

Strategy-specific

3

Cache Check

Dedup by URL

4

AI Parsing

OpenRouter → JSON

5

Recipe Saved

Ready to cook

Web Extraction Priority

StrategyPriorityDescription
JSON-LDPreferredSchema.org Recipe markup — already structured, highest accuracy
HTML ScrapingFallbackRecipe-specific div extraction, Open Graph tags, meta descriptions
Full TextLast ResortPage body text with pattern detection for ingredients and steps

AI That Parses, Never Stores

Every AI call is a pure function — text in, structured JSON out, no side effects. If the model returns garbage, the system retries with tighter constraints. If it returns valid JSON, schema validation confirms it before anything touches the database. The AI never sees usernames, emails, or photos — only recipe text.

Raw Text

From extraction

Convex Action

Orchestration

OpenRouter

Model routing

Validated JSON

Schema-checked

Recipe Parsing

Unstructured text from any source transformed into structured ingredients, steps, timing, and nutrition data.

Remix Generation

Applies user dietary preferences to a parsed recipe — smart substitutions with recalculated nutrition.

Recipe Creation

Generates complete recipes from natural language prompts, producing the same structured output as the parser.

Retry & Resilience

Exponential backoff with jitter on every call. Malformed JSON triggers a retry with tighter constraints before surfacing an error.

Schema Validation

Output is validated against a strict schema — quantities, step ordering, nutrition ranges, and tag enums are all checked before anything reaches the database.

Intelligent Meal Planning

Auto-filling a week of meals that hit your nutrition targets while keeping variety high and respecting your preferences. Runs entirely server-side with zero external services.

User Recipes

Your cookbook

Nutrition Targets

Presets or custom

Opti-Plan Engine

YALPS (pure JS)

Your Week

3 meals × 7 days

What Opti-Plan Handles

Nutrition Targets

Set your daily calorie goal and macro split. Opti-Plan builds a week that stays on target.

Macro Presets

Balanced, High Protein, Low Carb, Lean/Cut — pick a preset or dial in custom ratios.

Variety Control

Keeps your week interesting — won't overload any single recipe. Empty slots are fine too.

Pre-Filled Slots

Already planned Tuesday's dinner? Opti-Plan works around your existing picks.

Architecture

YALPS

A pure JavaScript linear programming library with zero native dependencies. Lightweight enough to run inside a Convex action — no WASM compilation, no external services, no API keys.

Server-Side Execution

The engine runs as a Convex action with full access to the user's recipe library and nutrition data. Results are written directly to the meal plan table.

No External Infra

Zero new services to deploy or pay for. YALPS is a single npm dependency bundled into the existing Convex backend — no additional API keys or third-party dependencies.

Real-Time by Default

Convex isn't a REST API you poll every 30 seconds. It's a reactive document database — when data changes server-side, every subscribed SwiftUI view updates instantly over a persistent WebSocket. No pull-to-refresh. No loading spinners. No stale state.

SwiftUI View

WebSocket

Live subscriptions

Convex Functions

Queries · Mutations · Actions

Document DB

8 tables

users

Profiles & preferences

userRecipes

All user recipes

sourceRecipes

URL dedup cache

cookingSessions

Session lifecycle

suzeStates

Evolution stats

cookbooks

Recipe collections

mealPlans

Weekly calendars

shoppingLists

Ingredient lists

Reactive Subscriptions

Views subscribe to queries that re-execute automatically when underlying data changes — no manual refresh needed.

Optimistic Updates

Mutations apply instantly on the client and reconcile with the server for a snappy native feel on any connection.

Serverless Functions

Backend logic as TypeScript functions with automatic scaling and zero cold starts.

Native Down to the Pixel

SwiftUI on iOS 26 with Apple's Liquid Glass design language. Not a web view in a native wrapper — every screen, animation, and transition is built with platform-native APIs. The app works offline via SwiftData cache, syncs when connected via Convex subscriptions, and adapts its entire color theme in real-time based on the mascot's evolution.

iOS 26+Liquid Glass@ObservableOffline-First Cache

Liquid Glass Design

Apple's new material system — translucent surfaces, depth effects, and dynamic color adaptation throughout every screen.

Domain Services

Dedicated service files per domain — recipes, cooking sessions, stats, imports, cookbooks, meal plans — with clear separation of concerns.

Evolution Theming

The entire app theme shifts in real-time based on the mascot's evolution — colors, accents, and animations adapt dynamically.

No Passwords. No Payment Data. No Liability.

Auth0 handles identity via OAuth 2.0 with Google and Apple sign-in. RevenueCat handles commerce via App Store subscriptions. SuzeChef never touches credentials or credit cards — both services sync to Convex server-to-server. RevenueCat is free until $2,500 MRR. Auth0 is free until 25,000 MAU.

Auth0 — Identity

OAuth 2.0Google + AppleJWT Tokens

User

Google or Apple

Auth0 Universal Login

OAuth 2.0

JWT → Convex Session

Authenticated context

Tokens stored in iOS Keychain. Account deletion purges Auth0 + Convex data within 30 days via Management API.

RevenueCat — Commerce

$9.99/mo or $49.99/yrWebhook SyncVirtual Currency Ready

App Store Purchase

INITIAL / RENEWAL / CANCEL

RevenueCat Webhook

Server-to-server

Convex Feature Gate

Free vs. Pro entitlement

Free users get limited imports. Pro unlocks unlimited imports, remixes, and premium features. RevenueCat is free until $2.5k MRR.

What makes this exciting: RevenueCat's architecture supports consumable in-app purchases alongside subscriptions. That means we can expand into a virtual currency system — think cosmetic items for Suze, bonus evolution skins, or extra import credits — all managed through the same webhook pipeline without building a payment backend from scratch.

Built to Ship. Priced to Scale.

The total per-recipe cost is under a penny. The entire backend runs for less than a coffee per month. Every free tier was chosen deliberately — Auth0, RevenueCat, and on-device OCR cost nothing until scale demands it. This isn't optimized for a demo. It's optimized for 10,000 users.

Security Posture

TLS encryption on all data in transit — client, backend, and third-party services

Data encrypted at rest in Convex with automatic key rotation

OAuth 2.0 — zero stored passwords, iOS Keychain for all tokens

On-device OCR — photos never uploaded, images never leave the phone

Rate limiting on import and AI endpoints to prevent abuse

No PII sent to AI — only raw recipe text reaches the model

GDPR and CCPA compliant with full account deletion

Webhook signature verification on all payment events

Unit Economics

AI Parsing (OpenRouter)

per parse — cached duplicates are free

~$0.001

ScrapeCreators

generous free tier for early growth

Tiered

Convex Backend

pay-as-you-go, scales with usage

~$3/mo

Auth0

up to 25,000 MAU

Free

RevenueCat

until $2,500 MRR

Free

On-Device OCR

Apple Vision framework — zero API cost

Free

The Margin

Per-recipe cost: ~$0.001. Subscription: $9.99/mo.

9,990x margin on every import