Import a recipe with AI
AI import turns a recipe into a draft, ready to review and save. It lives in the chat with Mirabel: give her recipe text, a link, or a photo, and she builds a draft you open in the editor to save. A substitution the source offers and an ingredient it marks optional come through as fields — a substitute row in the ingredient’s panel, and its Optional ingredient box ticked — rather than a note in the footer. A swap for only part of an ingredient stays a footer note. This page is the short version — the full walkthroughs live on her page.
Use AI import for a dictation, a foreign-language source, a cookbook page, an index card, a handwritten note, or a page or paste too messy to read plainly. A link or recipe text you paste into the Add Recipe sheet is read for free first, with nothing sent to Anthropic — see Adding a recipe. To import recipes you already have as .md, .txt, or .zip files, use Markdown import instead. A ZIP, or several files picked together, imports with no AI at all. A single file already written in Mirepoix’s own recipe format is read exactly as written, also without AI; any other single file takes the same read as pasted text, so it can fall back to AI.
Before you start
- There are two ways in. Mirabel’s Add a recipe starter, in her panel, walks you through where the recipe’s coming from. The Add Recipe button at the top of your recipes list opens a sheet that reads a link, pasted text, or a file for free and opens it in the editor; on a read that didn’t come out cleanly it can also read the same link or text with AI itself, when you tap Read it with AI, and it hands a recipe to Mirabel only when you tap From a photo or pick an image with Choose a file. Both are always there for a kitchen member — importing from a website, pasted text, or a file works without Anthropic’s AI. What needs a key is AI itself. The photo route needs the deployment’s AI keys (Anthropic for Mirabel, Mistral for reading the photo). The AI read this page’s other sections describe (the fallback when a page or paste is too messy to read plainly) needs the Anthropic key. Without an Anthropic key, the photo option and Read it with AI aren’t offered and a messy source can’t escalate to AI — Mirabel reads what she can on her own or asks you to paste the text in. (On
mirepoix.recipesthe keys are set by the operator. Self-hosted deployments setANTHROPIC_API_KEY, andMISTRAL_API_KEYfor photos, in their environment.) - Each kitchen shares one monthly AI allowance across everyone in it — the same pool covers AI import, photo import and Mirabel’s chat. Importing keeps working when it runs out, because she reads what she can on her own; her chat pauses until the allowance resets on the 1st of each month.
The short version
- Open Mirabel’s panel and tap the Add a recipe starter. She asks where the recipe’s coming from.
- Pick a source — From a website, From a photo, I’ll paste the text, or From a file — and give her the recipe when she asks.
- Watch for the Recipe draft card she adds to the chat; ask for changes in plain words until it looks right.
- Tap Review and save on the card to open the draft in the full-page recipe editor, review it, and tap Save to kitchen. Nothing is saved until you save it there.
From the Add Recipe sheet, From a photo opens her photo picker — pick a photo and send it to her, then carry on from step 3. Photo import is a beta with its own reader: Mistral AI reads the photo’s text, and the draft keeps exactly those words, with any lines worth checking listed on the card. See Import a recipe from a photo.
Read directly, for free
When you give her a recipe through one of the choices above — pasted text, and for many web pages too — Mirepoix first tries to read it itself, sending nothing to Anthropic. If it comes through clearly, your draft appears right away. (Pasting a recipe into her box out of the blue, rather than through the paste choice, is an ordinary message and imports with AI — see Import a recipe by pasting it.) Mirabel says where the draft came from — read exactly as written because the file was already in Mirepoix’s own format, read straight from the site’s own recipe data, or pieced together from the text. She also points out anything to double-check, like a title she wasn’t sure about, ingredient lines that didn’t parse cleanly, or — for a page’s own structured recipe data — a sign that the ingredient list itself looked like only part of the real one, worth a look at the page. A draft she reads this way is free: it doesn’t count against your monthly AI allowance.
The Add Recipe sheet runs this same read on a link, pasted text, or a single file, without her, and never turns to AI on its own, so that read never draws on the allowance. A clean read opens straight in the editor, with none of her notes about where the draft came from. A read that isn’t clean stops in the sheet, which offers Read it with AI when AI is available: the same AI read she uses, run in the sheet without her, which does draw on the allowance — see AI import.
When a draft is pieced together from the text, Mirepoix asks Typesafe AI, an outside AI service, to check the lines it took for the ingredient list. A line Typesafe AI is confident isn’t an ingredient is left off. So a heading like For the garnish, a method sentence like Beat the eggs, or page clutter like Save this recipe! or Prep Time: 20 mins doesn’t arrive as an ingredient row. A recipe’s name caught above the list can still become the draft’s title. The check only takes lines out, never adds one. It can miss a stray line, and rarely it takes out a real ingredient, so compare the list with your source before you save. It doesn’t count against your allowance either, and Data and privacy says what it sends.
Before it pieces a draft together, Mirepoix tidies lines a page or paste has mangled. Ingredients run together on one line between marks like ▢, • or a bar, each with its own amount, come apart into a line each. An amount that broke onto a line by itself, like 3 tablespoons above unsalted butter, joins its ingredient again. Worcestershire Sauce: 2 tablespoons arrives as 2 tablespoons of Worcestershire Sauce. About 1/2 cup vegetable oil arrives as 1/2 cup of vegetable oil, with the word “about” moved to the prep note.
The tidying reaches the title too. For a link, the draft’s title leans on the title the page gives itself, less a site name after it. That happens when the page’s text or main heading prints the same title. A page sent with the bookmarklet gets the same when its text prints that title. Page furniture like Jump to Recipe, Skip navigation, a save counter, a line of hashtags, or a line ending in a web address is left out, unless that line is an ingredient with its amount. A channel or site name after a bar at the end of the title comes off. That needs the text, or the link’s address, to name that channel or site. A chatty first line like “ok here u go, from memory lol” is dropped. A label like Recipe: Miso Ramen comes off the title. A breadcrumb on the first line, like Nick’s Kitchen > Noodles > Miso Ramen, keeps only its last part. In a paste, a short first line followed straight away by a yield or time line, or by an Ingredients heading, is taken as the recipe’s name, and Mirabel doesn’t ask you to give the title a second look. A description or chatter in between, or a first line ending in a period or other punctuation, still gets that note. The title is still Mirepoix’s best guess, so check it in the editor.
All this tidying, and the yield-finding under Serves and Makes on the draft, is only for Mirepoix’s own read. When Mirabel turns to AI, the AI never sees the tidied text.
A website’s structured recipe data reads into a faithful draft without Anthropic’s AI, and a single rough ingredient line no longer breaks the whole import. Any rough lines are flagged for you to double-check — never handed off to Anthropic’s AI. A page’s ingredient lines can still go to Typesafe AI, as Data and privacy describes. A single file already in Mirepoix’s own recipe format reads exactly as written, with no AI and nothing flagged. Through these choices she turns to AI only for messier sources: text you paste, a single file that isn’t in that format, a page’s visible text that’s too jumbled to read plainly, or a structured page too broken to read on its own. That fallback runs only when AI is available. Photos always use AI: Mistral AI reads them, never Anthropic’s AI, and that needs the deployment’s AI keys (Anthropic for Mirabel, Mistral for reading the photo).
A line that offers a choice comes through as a choice, on a page and in text you paste alike. 1 cup (113g) King Arthur Pastry Flour Blend or 1 cup (120g) King Arthur Unbleached All-Purpose Flour arrives as the pastry flour blend with its own amount, and the all-purpose flour as a substitute carrying its own. Swap to a substitute on Groceries or Pantry. A note at the end of the line belongs to every choice: 1/2 cup light brown sugar or dark brown sugar, packed gives light brown sugar, packed, with dark brown sugar packed under it. Where the “or” is really a range of sizes — 4 very small or 2 large boneless, skinless chicken breasts — the line is kept whole, as written. A line read as a choice isn’t one of the rough ones flagged for you to double-check.
A line naming two things you both need arrives as two lines. Sour cream and pickled jalapeños, for serving comes through as one line for the sour cream and one for the jalapeños, the note carried on each, so Groceries and Pantry see both. 1 teaspoon grated lemon zest plus 2 tablespoons juice gives the zest its teaspoon and the juice its tablespoons, on lines of their own. Where the “plus” is one amount written in two parts — 3/4 cup plus 2 tablespoons cold water — it stays a single line with that whole amount.
On a web page with structured recipe data, a line like this that Mirepoix can’t read with confidence on its own can still split. When Typesafe AI is confident the line names several ingredients the recipe uses together, each arrives as its own line: 2 teaspoons (6g) minced parsley, tarragon, and chives gives the parsley with the amount, then tarragon and chives. A note like “for serving” at the end is carried on each. When Typesafe AI isn’t sure, or the line doesn’t split cleanly, it arrives the way Mirepoix read it on its own.
Without any AI, Mirepoix also splits a line that only lists foods, on a page and in text you paste alike. salt, pepper, garlic powder to taste arrives as salt, pepper and garlic powder on lines of their own, with to taste on the garlic powder. An amount or a word like “fresh” at the start stays with the first food: fresh oregano, thyme, and parsley gives fresh oregano, then plain thyme and parsley. A note like “for serving” at the end stays with the last food. A list inside parentheses stays whole, so 2 cups shredded cheese (cheddar, mozzarella) is one line. So does a line offering a choice with “or”, or giving examples with “such as” or “preferably”. A name with “and” in it, like half and half or peas and carrots, is never cut in two. Check the amounts on the new lines before you save.
An amount carrying a second measurement arrives as fields too. 4 tablespoons (57g) unsalted butter opens in the editor with 4 and tablespoons in the amount boxes and 57 and g in that row’s second measure boxes, rather than the whole phrase sitting in the amount. The saved line then carries a real amount — one that scales, and that nutrition can weigh — instead of reading as a line with no amount at all.
A line with an aside in parentheses can arrive with its amount in place, not stuck in the ingredient’s name. 2 cups (473mL) lukewarm water arrives the way the butter above does: 2 cups of water, with 473mL as its second measure and lukewarm in the prep note. In 4 ounces (about 12) pitted olives (cured), about 12 isn’t a measure Mirepoix reads, so it goes to the prep note. (cured) stays with the name, since a note right after the name usually says which product: 4 ounces of pitted olives (cured). A range with no unit can arrive as the amount too, so 5–6 Garlic Cloves gives 5–6 of Garlic Cloves. 2% milk and 6-inch corn tortillas keep their numbers in the name.
A decimal comma before a unit reads as a decimal, so 0,6 liters beef stock arrives as 0.6 liters of beef stock. The T. in 3 T. plain gelatin, a short spelling of tablespoon, arrives in the amount as printed. Two amounts joined by + can arrive together, written with plus: 1 tablespoon sugar + ½ cup divided gives sugar with 1 tablespoon plus ½ cup as its amount. Like any plus amount in the recipe format, it adds up and scales when both are the same kind of measure, and stays as written when they mix volume and weight. A whole number of cans with their size in parentheses arrives as a package, filling the row’s Package boxes: 2 (6 ounce) cans tomato paste gives 2 cans, 6 oz each, and 1 (14 oz) can tomatoes gives 1 can, 14 oz. So does a size written before the can, as in 2 8-ounce cans tomato sauce or 14 oz can coconut milk, and a hyphenated size after it, as in 1 can (15-ounce) black beans: the size is always one can’s. The size in parentheses can carry its metric twin, with or without an “about” in front: 1 (15-ounce; 425 g) can chickpeas gives 1 can, 15 oz, and 2 (approximately 16-ounce; 454 g) cans butter beans gives 2 cans, 16 oz each. An “about” with no twin isn’t read as a package: 1 (about 15 oz) can chickpeas arrives as 1 of chickpeas, with about 15 oz can in the prep note. It can be a fraction or a range, too: 1 (13 1/2-ounce) can coconut milk gives 1 can, 13½ oz, and 1 (14 to 16-ounce) bag frozen corn gives 1 bag, 14–16 oz. Some recipe sites print the size in a note after the name. There, 1 can condensed milk with a note of 12 oz arrives as 1 can, 12 oz. With two or more cans, a size in the note stays in the prep note unless it says “each”. 2 cans (28 oz) tomatoes is different — the 28 oz is both cans together, so it arrives as an ordinary amount, not a package. Half a can stays a can: ½ (16-ounce) can frozen orange juice concentrate, thawed arrives as 1/2 can of the concentrate, with 16-ounce, thawed in the prep note. “A” or “an” before a weight or volume reads as one of it: a cup of flour arrives as 1 cup of flour and a pound of butter as 1 pound, amounts that scale like any other. A measure that isn’t a weight or volume keeps its words, so a pinch of salt and a handful of basil arrive as written. All of this happens on a page and in text you paste alike.
When the allowance is used up, importing still works for pasted text and most web pages — Mirabel does her best to read it on her own and tells you to review the draft carefully before saving. If she can’t make out a recipe on her own, she’ll ask you to copy the recipe text and paste it in instead. Either way, running out of the allowance no longer stops you from importing.
On a draft she read directly in her chat, a Use AI instead choice appears under it. Tap it to redo that import with AI — useful if the quick read missed a step or an amount.
The import bookmarklet reads a page’s structured recipe data when it’s there. Most food blogs and recipe sites publish that data behind the page. Clicking it saves the capture to mirepoix quietly — a small confirmation appears in the corner of the page with an Open link, so there’s no need to switch tabs right away. Find them later under Pending Imports at the top of your recipes list. It opens a list of everything waiting, each row naming the recipe with the site it came from and how long ago you saved it. Tap a row whenever you’re ready and Mirabel opens with a confirm card naming that page, offering Import and Dismiss. Tap Import and, when the bookmarklet found structured recipe data, your draft appears right away, with nothing sent to Anthropic. Dismiss drops that capture and leaves the list. Without it she falls back to the page’s visible text, and points out anything to double-check. Some sites block the quiet save — there the bookmarklet opens Mirabel directly with the captured recipe instead, the way it always has, so you can confirm the import by hand.
Each way in has its own walkthrough on Mirabel’s page:
- Import a recipe by pasting it
- Import a recipe from a photo
- Import a recipe from a link
- Import from your browser or by sharing — the bookmarklet and the phone Share sheet
Where the recipe came from
Give Mirabel a link — paste the address, or send the page in with the import bookmarklet — and the draft records that address as the recipe’s Source. The saved recipe shows it at the bottom of the page as a link back to the original, and the site’s name comes from the address itself, never from a guess. She won’t repeat the link as a footer note as well: the recipe has its own field for it. This happens whether she read the page on her own or handed it to AI.
When the source isn’t a link — it’s named in the text you pasted, or something you told her (“this is from Julia Child”) — there’s no address to record. She credits it in the recipe’s footer instead: “Based on a recipe from Julia Child.” Either way she never invents a source. A photo import doesn’t carry a source over, even one printed on the page. If the recipe doesn’t say where it came from, the draft leaves it blank, and you can fill in the Source field yourself when you edit the recipe.
When an import comes from a web page — a link you paste or type, a link you give the Add Recipe sheet, or a page you hand her with the bookmarklet or the Share sheet — the photo in the page’s recipe data comes along too, for you to keep or drop while you review the draft. See a photo that came in with an import, which also covers which imports bring a photo and which don’t.
Sections on the draft
Some recipes come in parts — a stew and what you serve it with, a crust and a filling. When a recipe puts its ingredients under labels like For the stew and For serving, the draft arrives as one step per group. Each step is titled with its group’s label and holds that group’s ingredients. The whole method goes in the last group’s step, so the draft reads each group’s ingredients, then the method. The label heads its step and isn’t copied into the method.
This holds for a site’s structured recipe data and for a draft pieced together from the text. That covers a paste, a page or bookmarklet capture without that data, and a photo. In text, a line like For the sauce counts as a label with or without its colon. A heading that comes after the last ingredient belongs to the method, and stays there as a paragraph of its own.
Ingredients above the first label become a first step with no title, since the recipe gives them no name. That includes a group headed only Ingredients. A single label over the whole list isn’t a set of groups: the draft is one untitled step, and the label is left out of the method.
On a site’s structured recipe data, the method can split too. When the instructions name the same parts in the same order, each part keeps its own instructions in its own step — the author’s own split. The step’s title is still the label the page puts over its ingredients, not the wording in its instructions. A page headed Crust that writes “To make the crust: In a bowl, whisk together the flour…” gives a Crust step starting “In a bowl, whisk together the flour…”. Only the label comes off the sentence, and the rest is kept word for word. Sometimes the method has titled sections of its own that don’t name the groups. Then the group steps hold only ingredients, and the method’s sections follow as titled steps.
Reading the groups on a site’s structured data uses the page’s own layout, so it needs Mirepoix to open the page itself, from a link. A page saved with the import bookmarklet that has structured data arrives without its groups, with every ingredient in the first step.
In a draft pieced together from the text, each numbered or bulleted line of the method starts a paragraph of its own. So does the line after one that ends a sentence or a heading’s colon, which keeps a web page’s method steps apart. A line wrapped in the middle of a sentence still joins the line before it.
Change any of it in the editor before you save.
Times on the draft
A draft brings the recipe’s times with it, so you don’t fill them in by hand. One rule covers a site’s structured recipe data and a draft pieced together from the text — a paste, a page or bookmarklet capture without that data, or a photo. Time is the recipe’s stated total time; when it states only a prep time and a cook time, those two are added together instead. Active is a stated active time, else the prep time — the hands-on part.
Mirepoix leaves Active off when the prep time is longer than the total, rather than saving a pair that can’t both be right. A recipe that states only a prep time (“Prep: 20 minutes”) arrives with neither time. Set either one yourself in the editor if you want it.
In text, Mirepoix reads lines like Prep time: 15 minutes, Cook: 50 mins and Total Time 1 hour 45 minutes. A recipe card that prints a unit label after each time, like Prep Time 10 minutes mins, reads as 10 minutes. A card’s labelled time line counts even when a blog post puts its own Directions heading above the card. A card that prints each label on its own line, like Cook Time: with 40 mins on the next line, reads the same way.
Both land in the editor’s Time field — the total in its total box and the active time in active — and read on the saved recipe as Takes 45 min (15 min active).
A draft Mirabel handed to AI brings any total and active time the AI read from the recipe into the same total and active boxes. Mirepoix leaves Active off when there’s no total to go with it, or when it’s longer than the total, rather than guessing at a total. A sentence that says how long the dish takes, like “takes about 30 minutes”, is read as the total.
Serves and Makes on the draft
A draft read straight from a site’s structured recipe data brings the page’s yield with it. When the page names what it makes — “10 to 12 latkes”, “1 1/2 dozen cookies” — the draft carries Makes: 10-12 latkes or Makes: 1 1/2 dozen cookies, numbers as written; when the page gives a plain number or counts servings — “8”, “6 servings”, “4 people” — it carries Serves: 8 instead. Only one of the two lines is filled in. A range keeps both ends when it saves, rather than collapsing to a single number — a page that makes “10 to 12” saves as Makes: 10-12. A “dozen” count is still multiplied on save the way a single dozen count always has been, so “2 to 3 dozen” saves as Makes: 24-36 — the range survives, the dozen math still runs on each end. Serves: keeps a whole-number ascending range the same way (“6 to 8 servings” saves as Serves: 6-8); anything Serves: can’t hold as a range — a fraction, a decimal, or a backwards or equal-ended pair — is rounded to the middle before it ever reaches the draft.
A count spelled as a word is read as a number, and a pan’s size is never read as a count. “One 9-inch pie” carries Makes: 1 pie, “Two 8-inch layers” carries Makes: 2 layers, and “a dozen cookies” carries Makes: 1 dozen cookies. The inch measurement names the tin, not what comes out of it, and a capacity written like “one 2-quart casserole” is read the same way. Change either line in the editor before you save.
A draft pieced together from the text takes its yield from a line like Serves 4, and Mirepoix finds that line in more places. It reads a recipe card’s line that runs its fields together, with Serves: 8 and Prep time: 35 minutes on one line. It reads a card that prints the label on its own line above the value, like Servings: with 8 servings on the next line, which carries Serves: 8. It reads a sentence like serves 2. prep 30 minutes. It reads Serving 2-4, a yield printed after the method or in the notes, and (2 servings) in the title. A sentence like This makes 1 pizza. gives Makes: 1 pizza. Serves 4 people carries Serves: 4, and a range like Serves 6-8 stays a range. Serves holds only a number, so a count of things under a serving label, like Serves: 1 loaf, carries Makes: 1 loaf instead. Check it in the editor before you save.
Tags on the draft
A draft read straight from a site’s structured recipe data arrives with tags already in it. Mirepoix takes them from the page’s own keywords, category, cuisine, and diet labels, keeps only the ones it recognizes as tags, and stops at six. It adds weeknight itself when the recipe’s total time is 30 minutes or less and it has fewer than 10 ingredients (as long as there’s room under the six-tag cap).
A draft Mirabel handed to AI gets weeknight on the same rule, and no tags from the page’s labels.
Either way the tags are a suggestion in the draft. Change or remove them in the editor’s Tags field before you save — see tags and categories.
See also
- Mirabel, your kitchen helper — where AI import lives, and what else she can do
- Markdown import — import recipe files for free
- Check ingredients — the ✓ or ? on each ingredient row in the editor, and choosing the ingredient a line means
- Data and privacy — what’s sent to Anthropic and Typesafe AI, and what isn’t
Last updated October 15, 2026