Browse all guides

How import works under the hood

A short tour of what happens between tapping Share and the recipe landing in your library — and the architectural choice that keeps it cheap to run.

Most recipe apps share roughly the same pipeline. We don't, and the difference is the reason there's no per-import cap, no "upgrade to import more," and no waiting in a queue. If you're curious where the speed and the price come from, here's the actual shape.

What most other apps do

The standard recipe-import pipeline has three paid steps stacked on top of each other:

  1. Pay a proxy or AI scraper (Scrapfly, Bright Data, etc.) to fetch the page from a clean residential IP — Instagram, TikTok, and most modern recipe sites block server IPs outright.
  2. Pay an LLM to read the scraped HTML and extract the recipe.
  3. Pay an LLM again (often as an async job) to parse ingredients into units, quantities, and shopping-list shape.

That stack costs the operator several cents per recipe in the best case and tens of cents for video sources. It's the reason most recipe apps are subscription-only or rate-limit free users to a few imports a month.

What we do instead

We move the expensive part — the fetch — onto your phone, and we collapse the LLM work into one pass.

  1. Your phone fetches the page in an offscreen WebView and pulls out the caption, the cover image, or the article text on its own. No proxy bill.
  2. Your phone sends a short payload to our server — caption text, page text, or a photo file. Not the whole webpage.
  3. The server runs one cheap Gemini call that handles text, audio, and video in a single multimodal pass. That's the only LLM cost we pay.
  4. Ingredient parsing happens on your phone, against a bundled dictionary that ships with the app. No second LLM call, no async job.

Net result: imports cost us fractions of a cent each. That's why we don't meter them.

The trade-off

Because the fetch happens from your phone, the request to Instagram, TikTok, YouTube, or Facebook comes from your residential IP, not from a server in a datacenter. That's the only way to reach those platforms reliably — they aggressively block server traffic — and it's the part of the architecture other apps spend money to work around.

In practice nobody notices. Your phone is going to load the same Reel or post anyway when you open it; we're just doing it once in the background instead of you doing it manually.

What runs where, by source

  • Websites (Safari import): our server fetches the page and reads the JSON-LD recipe block. A few sites use bot detection that blocks direct server fetches — we have a fallback for those.
  • Instagram / TikTok / YouTube / Facebook: an offscreen WebView on your phone extracts the caption and cover, the server does the multimodal pass.
  • Photos (Photo import): your phone uploads the image, the server does OCR plus the recipe pass in one call.
  • Pasted text (Text import): your phone uploads the text, the server does the recipe pass.

Recipe sites we've imported from

Most modern recipe sites work on the first try. A non-exhaustive list, alphabetical:

  • Allrecipes
  • America's Test Kitchen
  • BBC Good Food
  • Bon Appétit
  • Budget Bytes
  • Cook's Illustrated
  • Delish
  • Epicurious
  • Food52
  • Food Network
  • Half Baked Harvest
  • King Arthur Baking
  • Minimalist Baker
  • NYT Cooking
  • Pinch of Yum
  • Serious Eats
  • Simply Recipes
  • Smitten Kitchen
  • Tasty
  • The Kitchn

If your favorite recipe blog shows up in Google's recipe carousel, it almost certainly works here too. We read the same JSON-LD recipe block that Google indexes — every major food site publishes it for SEO.

Why this matters to you

  • No per-import cap. Costs scale with your phone's battery, not with our infrastructure bill.
  • Captions land in seconds. TikTok and YouTube imports usually finish in 3-5 seconds — there's no scraping middleman to wait on.
  • Pricing stays sane. We're not under pressure to push you onto a paid tier to cover per-recipe costs that don't exist.

Related guides