Skip to content

Recipe R&D — turning inspiration into menu-ready dishes

The Recipe R&D inbox is where new dish ideas start. You drop in an Instagram reel, a photo, or a quick note, and the system turns it into a candidate recipe within thirty seconds. The candidate is not a real recipe yet — it’s a draft proposal pre-filled with the ingredients the AI thinks come from your own pantry, written in the voice your menu already uses. From the candidate you decide what becomes a real dish, what gets reviewed later, and what gets thrown away.

What it does

Every kitchen we’ve worked with has the same problem. Ideas arrive in three or four different places — a screenshot saved to a phone, a Reel a sous-chef sends in the group chat, a note scribbled on a paper menu after dinner. By the time anyone is in the office to act on them, half are forgotten. The cost is not the missed idea itself; it’s that the same conversation happens every week without ever producing a single new dish.

The Inspiration Inbox is the funnel. Everything that arrives — a link, a photo, a typed sentence — lands in one place. Anyone with the right role can drop something in, and anyone can see what the team has been thinking about this week. Discarded ideas stay visible so you can prove later you considered them. Promoted ones link back to the original source so a year later you still know whether your Cacio e Pepe was inspired by a Roman trattoria or a 30-second video.

The second job is removing the boring work. Reading a recipe video and writing down ingredients takes ten minutes. The system reads the caption, matches each ingredient against what you actually stock, and proposes quantities. If you keep San Marzano DOP tomatoes in the pantry, that’s what the system will pick — not a generic “tomato”. If your other dishes describe themselves as “restrained, heritage-led”, the new candidate will lean that way too. You correct what’s wrong, you don’t write everything from scratch.

The rule

The inbox is where ideas go to be considered, not where dishes go to be served. Nothing on the public menu comes from here directly — every dish passes through your hand before it ships.

How to use it

Open Back of House → Recipe R&D in the sidebar. You’ll see the inbox grid with five tabs along the top: Inbox, Reviewed, Promoted, Discarded, and All. The first three are the moving parts; Discarded is the historical record; All is the firehose.

Adding a candidate

Click + Add candidate in the top right. The dialog gives you two paths:

  • From a link. Paste any recipe page or social post — a Giallozafferano blog post, a BBC Good Food recipe, an Instagram reel, a TikTok, a YouTube cooking video. For recipe pages, the system reads the structured recipe right off the page: the full ingredient list with quantities, the step-by-step method, the description, the photos. For social posts it reads the caption and (where available) the chef’s spoken narration. Recipe blogs give the cleanest first read because the publisher already laid the recipe out for you; social posts give the chef’s voice and technique on top.
  • From a note. Type the idea in plain prose. Be specific: “carbonara with smoked tuna belly instead of guanciale, finished with bottarga shavings” gives the AI ten times more to work with than “carbonara variation”. This path is also useful when you want to capture an idea that came up in a service post-mortem and there’s no link to point at.

When you submit, the dialog closes and you land on the candidate’s detail page. The first thirty seconds show “Ingesting…” — that’s the AI reading the source and matching ingredients. You can leave the page; everything continues in the background and the page updates on its own when the AI is done. Most candidates take less time to ingest than it takes to walk to the espresso machine.

Reviewing a candidate

The detail page shows you the source on the left (the original link, the caption, the thumbnail) and the AI’s interpretation on the right (a short vibe summary, the proposed ingredient list, and any prep steps it pulled from the caption). Each ingredient line shows whether the AI matched it to your pantry, and how confident it was — 80% match means the AI is sure, No match means you’ll have to add the ingredient yourself when this becomes a real recipe.

Three things you can do from this page:

  • Mark reviewed — you’ve looked at it but you don’t want to promote it yet. The card moves out of Inbox and into Reviewed so the team doesn’t keep tripping over it.
  • Discard — not a fit. The card moves to Discarded; it doesn’t disappear, but it stops cluttering the active tabs.
  • Promote to recipe — start the real work. The AI co-author runs (about ten seconds) and you land on a new recipe in drafting state, with everything pre-filled.

When a card says “We couldn’t read this source cleanly”

Now and then the AI’s first read of a video doesn’t come back in a usable shape — usually a one-off with a long video. When that happens the card keeps the real dish name from the video title and the video thumbnail, and shows a short note explaining what happened. You’re never left with a blank, nameless card.

To fix it, open the card and click ↻ Refresh from transcript at the top. The system reads the video again from scratch — re-grabbing the title, the image, and the ingredients. It almost always works on the second pass. If you’d rather not wait, you can also use Upload photo or video to drop in your own image, and edit the ingredients and steps by hand. Refresh is also how you pull the video’s image down again if a card is missing one.

When a card is stuck on “Ingesting…”

Ingesting normally finishes in well under two minutes. Very occasionally — usually a long, heavy video — the reader hits a snag partway through and the card keeps showing “Ingesting…”. You don’t have to wait it out or refresh the browser. After about three minutes the card shows a calm note, “This is taking longer than usual,” with a ↻ Re-run ingest button. Click it. A second try almost always goes through, and you can keep editing the category and photos while it runs.

For a very long video the re-run may come back with just the details from the post’s written caption rather than the chef’s spoken narration — you’ll still get a named card with a description, and you can fill in any missing ingredients and steps by hand. That’s by design: a usable card beats a card spinning forever.

After promoting

A draft recipe behaves like any other recipe except for one thing: there’s a banner across the top of the editor reminding you this is an AI draft, and a Ready to ship button. Edit anything — name, ingredients, allergens, costs, prep instructions. When you’re done, click Ready to ship and the polisher finalises the menu description in your venue’s languages, double-checks the allergens against the ingredient list, and flips the recipe to active. From that point on it’s a real recipe — it can be sold, plated, costed, and pulled into a menu.

If something is wrong — the ingredients are off, the voice doesn’t feel right — just keep editing. The polisher only runs when you click the button; nothing automatic happens in the background while you’re working.

Worked example

It’s Sunday afternoon. Camilla, the head chef, is scrolling Instagram and finds a reel from a chef in Bologna making Tagliatelle al Ragù alla Bolognese with a 40% pancetta / 60% guanciale base instead of the usual all-pancetta. The caption goes into the meat ratio, the wine reduction, and the slow-cook timing.

She opens the admin, taps Recipe R&D, clicks + Add candidate, and pastes the reel URL. Twenty seconds later the candidate page fills in. The title says “Tagliatelle al Ragù — guanciale-pancetta blend”. The vibe summary captures the heritage tone of the caption without aping it. The ingredient list shows:

  • Guanciale → matched to Guanciale di Cinta Senese at 92% confidence
  • Pancetta → matched to Pancetta arrotolata at 88% confidence
  • San Marzano tomato → matched to San Marzano DOP — 2.5kg can at 95% confidence
  • Red wine → matched to Sangiovese — cucina at 73% confidence
  • Tagliatelle → no match (the venue makes its pasta fresh, not stocked as an inventory item)

Camilla scans the list. The matches are right; the no-match on tagliatelle is correct because they’re made to order. She clicks Promote to recipe. Ten seconds later she’s in the recipe editor, banner across the top: AI draft from Recipe R&D. Ready to ship when finished.

She bumps the guanciale-pancetta ratio from the AI’s 1:1 default to 40:60 to match the source, adds “fresh tagliatelle, made to order” as a free-text ingredient note, and writes one line about service: “ribbon ratio 1.2× the meat sauce so the noodle isn’t lost”. She clicks Ready to ship. The polisher writes the menu description in English and Italian, both 80 words, in the voice the rest of the menu uses. The recipe is now active and Camilla can drop it into next week’s seasonal menu.

Time from spotting the reel to a real recipe she can plate: under five minutes.

Another worked example — from a recipe page

It’s Tuesday morning. Marco, the pastry chef, is browsing a Giallozafferano sub-blog and finds Marmellata di fragole all’aceto balsamico — strawberry jam finished with balsamic vinegar, intended as a cheese-board accompaniment. The page has a clear three-ingredient list, a single paragraph of method, and one hero photo of the finished jam in a small ceramic dish.

He pastes the URL into + Add candidate and tags the category as Condiments. Twelve seconds later the candidate page is filled in. The title is the original Italian. The vibe summary reads like Marco’s other condiment cards on the menu — calm, ingredient-led, two paragraphs. The ingredient list shows:

  • 200 g Fragole → matched to Fragole — cassetta at 94% confidence
  • 30 g Zucchero → matched to Zucchero semolato at 96% confidence
  • 4 cucchiai Aceto balsamico → matched to Aceto balsamico di Modena IGP at 89% confidence

The method appears as one step (the source’s HowTo block was a single paragraph, not pre-split). The hero photo is in the gallery already. Source attribution at the top of the card shows the blog’s hostname and the original author — Marco knows where to send credit if this lands on the menu.

He clicks Promote to recipe. The draft opens with the three ingredients in venue units (grams, not cucchiai), the AI co-author has written a 60-word service description in English and Italian, and the photo from Giallozafferano is the hero. Marco swaps the photo for a fresh shot from this morning’s prep — house policy is that nothing public-facing uses someone else’s photography — clicks Ready to ship, and the jam is live on the cheese list by lunch.

Time from finding the blog post to a costed, plated, menu-ready recipe: under three minutes.

The discussion thread

Every candidate has a conversation panel underneath the AI extraction. Anyone on your team with R&D access can comment — leave a technique note, mention a supplier, flag an allergen issue, or argue for a different ingredient. The thread is append-only and the order is chronological, so a candidate that’s been in the inbox for a week reads like a slow review.

Two things to know about who can delete what. Your own comments you can always delete — they soft-disappear with a “comment removed” placeholder so the rest of the thread keeps its order. Other people’s comments require the R&D editor permission (the same one needed to promote a candidate to a real recipe). That permission lives with the owner and managers by default; ordinary R&D collaborators can comment freely but can’t wipe each other’s contributions.

Use the thread to converge before clicking Promote. The point of the playground is that bad ideas die in comments and good ideas come out sharpened. A candidate with three rounds of comments and a clear consensus produces a much better recipe than one that gets promoted on the first read.

Every photo the AI scraped from the source post, every video frame you’ve saved, every photo you’ve uploaded — they all live under the source image, in the gallery strip. Click any of them to open full-size. They carry over to the recipe automatically when you promote the candidate, in the order they appear in the gallery. The first photo becomes the dish’s hero image.

This is where the “Save frame as photo” button from the video studio pays off. Pause the video on the moment the cream falls into the pasta and the plating looks right, save the frame, and that single still becomes the candidate’s identity image. Three or four frames captured across a 40-second video give you a small gallery to pick from when you finalise the dish photo.

Three ways to start a candidate

Click + Add candidate at the top of the inbox. The dialog now has three modes:

From a link — paste a recipe blog URL or a social post URL. The system figures out which kind it is and takes the right route.

A recipe page (Giallozafferano, BBC Good Food, NYT Cooking, Marmiton, Serious Eats — anything that publishes a recipe in the usual structured way) is the cleanest input. The system reads the page’s machine-readable recipe data: the title, the description, the full ingredient list with quantities, the step-by-step method, and any photos. The AI then writes a vibe summary in your venue’s voice and matches each ingredient against your pantry. Most blog ingests finish in under fifteen seconds because nothing has to be transcribed.

A social post (Instagram, TikTok, YouTube) takes longer because the recipe isn’t laid out neatly — the system has to read the caption and (on YouTube) the video subtitles or transcribe the audio. Subtitles are a gift: they’re a full transcript of what the chef is saying, which lets the AI write a much richer dish description on Promote without you paying for an audio transcription run.

If the recipe page blocks our request, or the publisher doesn’t publish structured data (rare for cooking sites, common for general lifestyle blogs), you’ll see a friendly message in the candidate. Try a different source, or paste the recipe text into the From a note mode and let the AI work from prose.

From a note — type a free-form idea in plain prose. The AI shapes it into a candidate exactly as if you’d pasted a caption. Use when you spotted something but don’t have a link, or want to remix two ideas into one.

From scratch — give the dish a working title, optionally some notes, and pick a category. No AI scrape, no inspiration source — just a blank candidate ready for the team to comment on. Use this when an idea originates in your own kitchen rather than the internet: a chef wants to try a riff on carbonara using smoked guanciale, write the title, drop two lines about plating, share with the team, iterate in comments.

Every mode lets you pick a category up front (pasta, pizza, cocktail, mains, …). The category is optional — you can set it later from the candidate page — but tagging at creation time clusters the playground so the pasta team only sees pasta candidates, the bar team only sees cocktails.

Filtering the playground

The inbox header has a category dropdown. Pick one and the grid filters to just that category — your “pasta pool” or “cocktail pool”. Combine with the status tabs to see, for example, only the Reviewed pizza candidates that haven’t been promoted yet. The categories are the same ones your real recipes use; manage them under Settings → Recipe categories.

The dashboard at a glance

The top of the inbox is now a small dashboard, not just a list. A row of KPI tiles shows the numbers that matter this week: how many candidates are sitting in Inbox, Reviewed, Promoted, and Discarded; how many landed in the last seven days; how many are currently ingesting. The tiles are clickable shortcuts — tap Inbox and the grid filters to that status; tap This week and you see only the candidates added in the last seven days. The numbers update live as the team adds, reviews, and promotes.

Below the KPI row is a category chip strip. Every recipe category appears as a pill with its candidate count (Pasta · 12, Pizza · 4, Cocktail · 7). The chips wrap to two or three rows on a narrow screen — you don’t sideways-scroll to find the one you want. Tap a chip and the grid filters to that category. Tap it again to clear. The “no category” group has its own pill so candidates a team member forgot to tag stay visible.

The dashboard’s job is to make the next thirty seconds productive. If you walk into Recipe R&D with five minutes between services, the KPIs tell you whether there’s anything to look at, and the chips tell you which corner of the kitchen to look in.

Three ways to view the same candidates

A view toggle in the inbox header swaps between three layouts. Same candidates, same filters — different density:

  • Grid — large cards with the hero image, title, category chip, vibe summary, and creator attribution. Best for browsing what’s new; the image leads the eye. Three or four cards per row on a desktop.
  • List — compact rows with a thumbnail, title, category, status, creator, and timestamp. Best for managing a backlog of thirty or forty candidates — you can scan all of them in one pass without scrolling forever.
  • Kanban — columns for each status (Inbox, Reviewed, Promoted, Discarded) with small cards underneath. Drag a card between columns to change its status — the move saves the moment you let go.

Pick the view that matches what you’re doing. Browsing for inspiration on a Sunday afternoon → Grid. Cleaning out the backlog before a menu meeting → List. Running the weekly R&D standup on a wall TV → Kanban.

Hover any card to see the dish bigger

In List and Kanban views the thumbnails are small. Hover your mouse over any thumbnail and a much larger preview pops up next to it — the hero image at near-full size. Move the mouse away and the preview disappears. Use it to skim the backlog without clicking into every candidate; one second of hovering replaces a click + back-button round trip.

Who saved each candidate

Every card now shows by [name] underneath the title — the team member who dropped the idea in the inbox. Useful when you need to ask “what were you thinking with this one?” three days later, and useful for the chef who wants to see what their sous-chef has been collecting. The attribution carries across Grid, List, and Kanban views.

Sending an idea from your phone — Telegram bot

Open AI Settings → Telegram integration in the admin and Pair my Telegram — scan the QR or open the link, send /start <code> to the bot, and your phone is paired with the venue. From then on you can drop ideas into the inbox without opening the admin app:

  • “Save this for the inbox: — paste a Reel, TikTok, or YouTube link. The bot confirms with a two-button keyboard — Apply drops it into the inbox as a new candidate and the ingester runs immediately; Cancel drops the message. A confirmation comes back when the candidate is created.
  • “Idea for the inbox: carbonara with smoked tuna belly instead of guanciale” — free-text. Same Apply/Cancel keyboard; same result minus the link scrape (the AI just turns your sentence into a candidate).
  • “What’s new in the inbox?” — the bot lists the latest candidates (title, category, creator, status). Useful when you want to check whether someone already saved the dish you were about to send.
  • “Show me candidate — full details for a single candidate, so you don’t have to switch to the admin app to remind yourself what was in it.

The bot inherits whoever-you-are’s permissions — if your role can’t reach Recipe R&D in the admin app, it can’t reach R&D through the bot either. Saving from Telegram counts toward the same dashboard KPIs and shows up under your name in the by [creator] attribution, exactly as if you’d added it through the dialog.

The point is the phone. You’re on the BTS, the kitchen line, the Sunday market — wherever you spot the idea — and you don’t have to remember it until you’re back at a desk. Send it to the bot, walk away, find it in the inbox tomorrow.

Brainstorm with AI

Every candidate now has an Brainstorm panel where you can have a back-and-forth conversation with an AI that already knows your pantry, your voice, and the team’s thinking on this dish. Ask whatever’s nagging you — “what pasta shape pairs with smoked guanciale?”, “suggest a saffron riff using ingredients we have”, “how should we plate this?”, “is there a cheaper substitute for the Pecorino I’m pricing right now?”. The AI replies with concrete suggestions referencing your actual inventory (it’ll name the exact item, not “tomato”) and matching the prose voice the rest of your menu uses.

Every question and answer stays on the candidate as a thread — you can come back tomorrow and the AI sees the conversation, plus any comments your team posted in the meantime, before answering the next question. Use it as a thinking partner during plating sessions, supplier negotiations, or menu planning, rather than as a one-shot oracle.

The AI is grounded but not infallible. If it’s confidently wrong about an ingredient or a technique, push back in a follow-up question — it’ll usually adjust. If it stays wrong, that’s useful signal: the venue knowledge base might be missing context on that item, which you can fix by editing the item’s AI notes in inventory.

Trend Radar

Back of House → Recipe R&D → Trend Radar is the room where you watch what’s trending in your cuisine. Save a search — a hashtag like thaistreetfood, a competitor account, a regional theme — and hit Run now to pull the latest matching Instagram or TikTok posts. The results land in a grid you can scan in thirty seconds; the ones that look promising become candidates with one click, and from there go through the regular Ingester → Promote → Polisher flow.

Use it for two things specifically. First, weekly market intelligence: keep five or six saved queries running for the cuisines you care about, sweep them once a week, see what twenty venues are doing with bottarga or charred cabbage that you aren’t. Second, competitor watch: save a competitor’s most-watched hashtag and you’ll know within a week when they launch something noteworthy — before it shows up in food press or customer DMs.

A few things to know about cost and limits today. Each Run now costs ~60 credits because Apify charges us about $0.02 per scrape and we mark it 3×. Results are deduped across runs — re-running a query only fetches genuinely new posts since last time, so the cost is bounded. The list caps at ~25 posts per platform per run. Weekly automated sweeps with an AI digest (“the three most-viral dishes in your cuisine this week”) are queued for the next phase; today it’s manual run-now per query.

Uploading your own photos and videos

Underneath the source image on every candidate is an Upload photo or video button. Pick a file from your computer — JPEG, PNG, HEIC, MP4, or WebM up to 50 MB for video — and it lands in the candidate’s gallery in a few seconds. Photos appear in the gallery strip alongside scraped thumbnails and saved frames; videos populate the player below the source. Everything you upload carries over to the recipe when you promote.

HEIC photos from iPhone are converted to JPEG automatically. Large images are downscaled to 4000 px wide before upload to keep transfers fast — the original quality is preserved enough that it’s invisible at any normal screen size. Videos aren’t transcoded — convert anything weird (.mov, .avi) to MP4 or WebM before uploading.

Scoping the brainstorm

By default the AI scans your whole pantry when you ask a question and picks the most relevant items automatically. That’s good for open questions (“how should I plate this?”) but sometimes you want to point the AI at a specific direction. Above the question box on every brainstorm panel are two controls:

Focus on specific items — type to search your inventory, click an item to add it as a focus chip. Add up to ten. When you ask a question, the AI sees those items first in its prompt with a “PRIMARY FOCUS” marker, with their notes and descriptions, and is told to anchor its answer there before considering the broader pantry. Useful when you’ve decided the dish revolves around a specific ingredient and want technique advice rather than ingredient suggestions.

Include Product Hunt — toggle on to let the AI see the supplier products you’re researching (the recent additions in Product Hunt that haven’t been approved into inventory yet). The AI treats those as candidate-additions — “you could try the artisan ricotta you flagged from Caseificio Borgo” — rather than ingredients you already have. Useful when you’re considering bringing in something new and want to know whether it fits the dish before you commit to ordering.

Either control is optional. Both can be on at the same time. Each question’s scope is shown as small badges underneath the question in the thread, so when you re-read the conversation later you can see exactly what the AI was looking at when it gave each answer.

The chef’s transcript, in their own words

Right under the dish title sits the Chef’s transcript block — collapsed by default, showing a word + character count. Click it open and you’ll see exactly what the chef said in the video, word for word, the way they teach it. This is the source of truth for the dish; the structured ingredient table below is a tidy interpretation of it, but the transcript is the raw narration.

The text is editable. Caption auto-transcription is great but never perfect — fix typos, drop filler, add the bit of context the captions missed. Click Save transcript when you’re done. The Co-author uses the saved version on Promote, so a transcript you’ve cleaned reads through into a better recipe description than the raw caption ever would.

If a candidate has no transcript yet — say it came from an Instagram Reel without subtitles — you can either click Transcribe audio in the video studio below, or just open the transcript block and type / paste one yourself. Both flows write to the same field.

Transcription costs almost nothing — about a tenth of a cent per minute of audio. The cloud transcription service hosts a multilingual model that handles Italian, English, Spanish, French, Thai, and most other languages cleanly, so a five-minute Reel transcribes for well under a cent. If the audio is music-only or has no spoken narration the transcript comes back empty and you’ll see a calm note explaining that — nothing’s broken, that’s just a video without words.

A super-admin can swap the underlying transcription engine from the platform settings page if a faster or cheaper option ships later — there’s a single slot at Super Admin → AI Settings → Slot 10: Audio transcription that holds the engine name. Leave it unset and the system uses the platform default. The change is a configuration edit, not a code release, so the team can react to a vendor outage in minutes rather than days.

Worked example — manually transcribing a silent Reel

Camilla pastes a Reel from a Sicilian pasta shop. The Reel has no caption and the chef in the video doesn’t speak — he just chops, fries, plates. The candidate ingests with a thin extraction: a vibe summary but no clear ingredient table because there’s nothing for the AI to read.

Camilla opens the video panel and hits Transcribe audio. About thirty seconds later a transcript lands — the chef hummed a Sicilian song and named three ingredients while plating. The AI re-reads the candidate with the transcript attached and the ingredient table fills in: tomato, basil, anchovy, garlic, semolina pasta. Camilla pays roughly a tenth of a cent for the transcription and saves five minutes of typing.

If the audio had been silent (background music only, no spoken word) the transcript would have come back empty with a calm note — Camilla would have known immediately that there was nothing to extract, no wasted credits, no chasing a transcription that wasn’t going to materialise.

The candidate IS the draft recipe

The ingredient table on every candidate is now editable. Each row has a free-text source label (whatever the AI pulled from the caption or transcript, which you can correct), an inventory match, a quantity, a unit, a chef’s note, and a live cost. The total cost rolls up at the top of the table and updates the moment you save a change.

Match an ingredient by clicking the inventory combobox on its row and picking from your pantry. The AI’s original guess sits there as a suggestion — if the chef wants to take that guess, there’s a one-click Accept AI suggestion link; if the chef overrides, a small footnote appears with a Reset to AI suggestion button so the original proposal isn’t lost.

Set the quantity directly. Pick the unit from kg / g / L / ml / unit. The cost cell fills in immediately, using the matched inventory item’s current cost-per-unit. If the unit you picked isn’t compatible with the inventory item’s recipe unit — say you set 200 ml for an item that’s tracked in kg — the cost cell stays empty until you fix the mismatch, so you can’t accidentally promote a recipe with a phantom cost.

The quantity and unit are pre-filled when the AI can read them. A caption that mentions “240g guanciale” or “1,5 kg San Marzano” lands with 240 in the qty field and g picked in the unit dropdown — no typing. Italian decimal commas work (1,5 becomes 1.5), as do most spelled-out unit names in English and Italian (grammi, millilitri, chili). When the AI’s hint can’t be parsed cleanly — “a handful”, “q.b.”, “due cucchiai” — the field stays empty and the hint sits as a small caption underneath the source text so you still see what the AI saw. Anything you type or edit yourself takes over from the pre-fill the moment you save the row.

Worked example — Mariola pasta short with measured ingredients. Camilla ingests a 30-second Reel from a Roman trattoria called Mariola. The caption is short but generous: “240g spaghetti, 120g ricotta, 40g parmigiano. Acqua di cottura, sale, pepe.” When the candidate page opens, the ingredient table is already filled in: ricotta matched at 92% confidence with 120 in the qty field and g in the unit dropdown, parmigiano matched with 40 + g, spaghetti unmatched (the venue makes pasta fresh) with 240 + g pre-filled anyway so a future “Add to inventory” lift would land on a clean row. The water and salt pick up no quantity (“q.b.” in the source) and the row’s caption shows the original hint so Camilla knows the AI saw the seasoning instruction. Time to promote: under two minutes, because Camilla only had to confirm matches and pick the inventory for the unmatched spaghetti — no typing of numbers.

The same prefill works on the left column of the detail page, which now scrolls independently. With the inspiration source, the AI photo gallery, the video studio, and the JUMP TO nav stacked vertically, the column would have overflowed the screen on a 13-inch laptop. Now it scrolls inside its own panel so every nav target stays reachable while you keep the right column anchored on the ingredient table you’re editing.

Add an ingredient row with + Add ingredient row at the bottom. Remove a row with the trash icon — it asks for a quick Confirm before deleting so you don’t wipe a row by accident. Same pattern for steps — they’re inline-editable below the ingredients, with + Add step to append and the trash icon to remove. Step edits save when you click outside the row, so you can power-edit five steps in one pass without waiting on round-trips.

Reorder by dragging. On the left edge of every ingredient row and every step row is a small grip handle (⋮⋮). Click and hold it, drag the row up or down, release. The order saves the moment you let go, and the new sequence is what the Co-author sees on Promote. Reorder ingredients so the BOM reads top-to-bottom in cook order; reorder steps when you realise the chef does the sauce reduction before the pasta water, not after. There’s no separate save button — the drag is the save.

When you click Promote to recipe, the system stops guessing at quantities — it uses what you’ve set here. The Co-author still runs (to draft the menu copy and double-check allergens), but the recipe lands closer to what you’d write by hand, and you can ship it with one more polish pass.

When the AI proposes changes — Apply or skip

The brainstorm assistant doesn’t just answer — when your question is about modifying the dish, it proposes concrete edits underneath its prose. Each proposal sits in its own little card with a verb-first label (“Add 200g guanciale”, “Update step 2”, “Remove pancetta”) and an Apply button on the right. Click Apply and the change lands in the ingredient table or step list above; the card flips to ✓ Applied so you know it’s done. Skip ones you don’t want — they’re suggestions, not commands.

You can ask broad things (“rework this in the Sicilian style”) and get five proposed actions in one turn — add this, swap that, change step 3. Pick and choose: maybe accept the swap, skip the addition. Open questions (“what wine pairs?”) return only prose, no actions, because there’s nothing to apply.

When you click Apply the system re-validates against the current state of the dish. If you’ve changed something since the AI proposed it (deleted a row, edited a step), the apply may fail with a clear message — the AI’s plan is now slightly stale; ask a follow-up to refresh the suggestion. This keeps the brainstorm honest: nothing applies that doesn’t make sense against the current draft.

Applied actions stay marked in the thread so you can read back later and see exactly which suggestions you took. The conversation becomes the dish’s history: who suggested what, what you accepted, what you ignored.

Undo and bulk apply

Two refinements make the proposed-action chips less of a one-way street.

Undo. Every action you’ve applied shows an ↶ Undo button next to the ✓ Applied badge. Click it and the change reverses — the added ingredient disappears, the updated row snaps back to its previous values, the removed step comes back. The chip flips to Apply again so you can re-apply later if you change your mind. The Undo uses the snapshot the system captured the moment you originally applied, so it restores exactly what was there before, not “best effort”. If you’ve manually moved or deleted the affected row since, the Undo refuses with a clear message rather than rewriting the wrong piece — at that point just edit it back yourself.

Apply several at once. When a turn has two or more unapplied suggestions, a strip appears above the chip list with a counter (“3 of 5 unapplied”) and an Apply button. Each unapplied chip gets a checkbox. Tick the ones you want, click Apply in the strip, and the whole batch commits together. Partial failures — say one of three has a stale index — surface as a single message (“Applied 2, skipped 1: index out of bounds on #4”). Selection clears when the bulk completes so you don’t accidentally re-apply.

The bulk path is the right tool when the AI returns a coordinated set of changes — “rework this as a 4-step Sicilian variation” might produce add-ingredient + remove-step + update-step + add-step, all of which only make sense together. Applying them one at a time is technically valid but tedious; the bulk button is one click and one transaction.

Cook tests — the dish’s evolution journal

Underneath the brainstorm panel sits Cook tests. Every time you actually make the dish during R&D — not when you cook it for service, when you cook it as a test — log a quick entry. What did you change for this attempt? How did it taste? What was the actual yield? Optionally rate it one to five stars. The entries stack in chronological order so a week later you can scroll the candidate and read its evolution: Test 1 was bland, Test 2 fixed the salt, Test 3 dropped the cream and is the keeper.

Open the panel, click + Add cook test. The form has a label (skip it and it auto-numbers — Test 1, Test 2…), a star rating, a “what changed” field, taste notes, and the actual yield with its unit. None of these are required individually — the only field that really matters is the one that captures what you learned. Save and the test slides into the journal.

These tests don’t move inventory. They are not the same as logging a prep batch to stock. A cook test is a memory aid — “I tried this version on Tuesday afternoon and the ratio was off”. When you eventually promote the candidate to a real recipe and start producing it in service, that’s when stock starts moving and the real cost-of-goods tracking kicks in. The R&D layer stays separate from the kitchen ledger on purpose so a botched experiment doesn’t pollute your stock numbers.

The chef cooks the dish ten times before it ships. Nine of those cooks are tests, not service. The test journal makes the ten cooks visible to the next chef who has to make it.

A typical R&D arc reads like: pull a Reel into the inbox, brainstorm with the AI, mark a couple of proposed changes, log Test 1 with “made the AI’s first draft as written — Roman style with guanciale” and three stars. Two days later log Test 2 with “swapped guanciale for pancetta, halved the salt, four stars”. A week later, Test 3 with “kept Test 2’s salt level, added smoked black pepper, five stars — this is it”. Promote.

The journal also carries forward when someone else has to revisit. A sous-chef looking at the same candidate three months later sees the test history and knows immediately why the final recipe is the way it is — they don’t have to guess what was tried.

Projects: grouping recipes by occasion

The dashboard at the top of the inbox now has two halves. On the left, the four KPI tiles — Inbox count, This week, Promotion rate, Average days to promote. On the right, a strip called Projects. A project is a folder you create when you want to discuss a specific collection of dishes — a lunch menu, a delivery special, an event-week tasting. It’s where management and the chef converge before anything goes on a real menu.

A project is the answer to “let’s look at these six dishes together”. It’s not a category, it’s not a status — it’s a working folder for a moment in time. When that moment passes, you mark the project completed or archive it, and a new one takes its place.

Click + New project in the strip. Give it a name like Lunch Menu August 2026 or Delivery Special Group, pick a colour from the seven available, and the project lands on the dashboard immediately. The colour shows up as a small chip on every dish you add to the project, so a quick glance at the inbox tells you which dishes are in which collection.

A dish can belong to more than one project at once. The same Cacio e Pepe candidate can sit inside Lunch Menu August, Heritage Pasta Showcase, and Delivery Special Group — the project tags appear side by side on the card. Removing a dish from a project doesn’t delete the dish itself; it just stops appearing inside that folder. The dish stays in the inbox.

Adding dishes to a project

There are two paths.

From the project itself. Open the project (click its card in the dashboard strip), then click + Add candidates. A picker opens with every dish in the venue’s inbox that isn’t already in this project. Search by title, filter by category, tick the dishes you want, click Add. You can add up to fifty in one batch. The picker tells you straight away how many were added and how many were already in.

From a single candidate. Open any candidate’s detail page. Below the source and media card, there’s a Projects section. Click the + Add to a project… input, start typing, pick from the dropdown of active projects. The dish lands in that project; the chip with the project’s colour appears immediately on the candidate, and the candidate now shows up inside the project’s view.

When you add a dish, the project’s “last updated” timestamp ticks forward, so the dashboard strip ranks projects with recent curation activity higher. Quiet projects fall further down, and you can archive the ones that have stopped getting attention.

Removing dishes from a project

Two places. On the project detail page, hover any candidate card and a small X appears in the corner — click it and confirm. Or open the candidate itself, find the project chip in the Projects section, click the small X on the chip. Either path is a soft remove: the dish stays in the inbox, the membership row disappears, the project’s count drops by one.

The category chip on every card

The brand owner asked for category visibility too. Every dish card — in Grid, List, and Kanban views, on both the inbox and the project detail page — now shows a small chip with the dish’s recipe category (Antipasti, Pasta, Pizza, Cocktail, whatever you’ve set). The chip appears next to the project chips so at a glance you can read “this is an Antipasti dish in the Lunch Menu Aug and Delivery Special projects”. Untagged dishes show no category chip.

The project detail page

Click any project card on the dashboard strip and you land on its dedicated page. The header carries the project name (click to rename, like the candidate title), a description block (add or edit when you want context for the team), the colour swatch (click for a new colour at any time), and two status actions: Mark completed when the project shipped, or Archive when you’re shelving it. The page body is the same Grid / List / Kanban toggle you already know, scoped to the dishes in this project. The empty state nudges you to + Add candidates if the project has just been created.

A completed project keeps its dishes visible — they’re just out of the “currently being worked on” mental category. Archived projects are hidden from the dashboard strip by default but the all-projects index (the See all link on the strip) has tabs for each status so you can recover them.

Worked example

It’s late July and Beatrice, the F&B director, is planning the August lunch menu with the chef team. She opens Recipe R&D, clicks + New project in the dashboard strip, names it Lunch Menu August 2026, picks amber for the colour, and clicks Create project. She lands on the empty project page.

Click + Add candidates. The picker lists every dish in the inbox. She filters by category to Pasta and adds Cacio e Pepe with Smoked Pepper, Bucatini all’Amatriciana — Guanciale-Pancetta Blend, and Tonnarelli al Tartufo Nero. She switches the category filter to Antipasti and adds Burrata with Roasted Stone Fruit and Vitello Tonnato — Summer Style. Five dishes, one click of Add, the project now has five dishes and the count badge updates.

She heads back to the inbox. Every card she just added now shows the amber Lunch Menu August 2026 chip alongside its category chip. The chef opens the inbox an hour later, sees the amber chips, knows immediately which dishes the F&B director wants to discuss. He opens the project detail page and starts adding cook tests + brainstorm threads on each candidate, all from inside the project view.

Three weeks later, after the menu has launched, Beatrice opens the project detail page and clicks Mark completed. The dishes stay in their projects (and stay live as real recipes on the menu); the project itself just moves out of the active dashboard strip. Next month she’ll create Lunch Menu September 2026 and start over.

  • Recipes & BOM — the recipe surface that R&D drafts promote into; the costing rollups and the kitchen-side documentation all live there.
  • Writing good dish descriptions — the voice guidance the polisher leans on when writing menu copy for the finalised recipe.
  • How the AI uses this knowledge — explains the venue wiki the system reads to match ingredients and match your tone.