Tweak a recipe with any AI — including 'this didn't work'
Export a recipe as JSON, paste it to your AI with what you want to change (or what didn't work when you cooked it), and paste the updated JSON back. No connection required.
The Prompt
You are helping me update a SMART recipe in my "Surprise Chef" library. Smart recipes use mise_en_place (pre-heat prep), tracks (parallel workflow lanes), step cues (visual "done" signals), and finish_steps (off-heat plating). Preserve this structure — and if the current recipe is classic (no mise_en_place / tracks / finish_steps), ADD them unless I tell you otherwise. Here's my current recipe: ```json [paste your current recipe JSON here — copy it from the recipe page] ``` What I want to change (or what didn't work when I cooked it): [what you want to change — e.g. 'make it vegetarian', 'scale to 8', 'sauce was too salty'] Examples of what people ask here: - "Make it vegetarian" - "Scale to 8 people" - "Use only what's in my pantry: [list]" - "Convert to slow cooker" - "Upgrade to a smart recipe with mise en place and parallel tracks" - "The sauce was too salty — we cooked it and halved the stock, still too much" - "Kids thought the curry was too spicy — tone it down" - "Step 3 burned before the timer ended" - "Too much prep — streamline it" - "Add the ingredients this recipe is missing: [list]" BEFORE rewriting, ask 1–3 clarifying questions only if my instruction is genuinely ambiguous. If it's clear, skip straight to the JSON. Respond with ONLY a single JSON code block containing the full updated recipe — no commentary. Use the same schema as the input (always smart), preserving fields that don't need to change: ```json { "title": "Short dish name", "description": "One sentence about what makes it appealing", "cuisine": "Italian / Thai / Australian / Fusion / etc.", "protein": "chicken | beef | lamb | pork | fish | tofu | eggs | none", "effort_level": "quick | medium | proper", "base_servings": 4, "prep_time_mins": 15, "cook_time_mins": 30, "total_active_mins": 25, "image_emoji": "🍝", "tags": ["dinner", "comfort"], "dietary_flags": ["vegetarian"], "equipment": ["large frypan", "wooden spoon"], "tracks": [ { "name": "Main", "description": "Primary component", "estimated_mins": 30 } ], "mise_en_place": [ { "id": "m1", "task": "Finely dice the brown onion", "estimated_mins": 2, "ingredient_ids": ["i2"] }, { "id": "m2", "task": "Crush 2 cloves of garlic", "estimated_mins": 1, "ingredient_ids": ["i3"] } ], "ingredients": [ { "id": "i1", "name": "olive oil", "quantity": 2, "unit": "tbsp" }, { "id": "i2", "name": "brown onion", "quantity": 1, "unit": "", "prep": "finely diced" }, { "id": "i3", "name": "garlic cloves", "quantity": 2, "unit": "", "prep": "crushed" } ], "steps": [ { "id": "s1", "order": 1, "title": "Sauté the onion", "track": "Main", "instruction": "Heat oil in a pan over medium heat, add onion and cook until translucent.", "cue": "Onion is soft and see-through, not browned", "time_type": "active", "timer_seconds": 300, "ingredient_ids": ["i1", "i2"], "parallel_hint": "Meanwhile, crush the garlic ready for the next step" } ], "finish_steps": [ { "id": "f1", "title": "Plate and garnish", "instruction": "Divide into 4 bowls. Top with chopped parsley and a squeeze of lemon.", "tip": "Warm the bowls briefly so the food doesn't cool fast" } ] } ``` Smart-recipe fields (required for Surprise Chef, this is the feature): - **tracks**: parallel workflow lanes. Default to MULTIPLE tracks whenever any step can happen at the same time as another step — for example, lettuce chilling in iced water while pork browns is two tracks ("Lettuce", "Filling"). Single-track only for genuinely sequential recipes (cookies, single-pan sautés). When in doubt, split. Multi-component dishes (salmon + broth + salad) always get one track per component. - **mise_en_place**: short prep tasks the cook does BEFORE turning on the heat — chopping, crushing, measuring. Each references ingredient_ids. Max ~2 min per task. - **finish_steps**: final plating / garnish / off-the-heat steps. Optional for simple dishes. - Each step's **track** must match a name in the tracks array. - **cue**: plain English, what the cook sees/smells/hears to know it's done. - **time_type**: "active" = hands on the pan, "passive" = waiting (oven, timer, rest). - **parallel_hint**: what the cook can do alongside this step. On a multi-track recipe, this should often point to a step on another track that can run concurrently ("While the pork browns, drain the chilled lettuce"). General rules: - effort_level: "quick" = under 20 min, "medium" = 20–45 min, "proper" = 45+ min - timer_seconds: only include when a step has a fixed duration - ingredient_ids: reference the "id" field of ingredients used in that step - Step titles: short action verbs ("Brown the mince", "Rest the meat") - Quantities are numbers, not strings - Australian measurements (tbsp, tsp, g, ml, cup) - Don't invent ingredients — if unsure, ask in the clarifying questions Also include an import_metadata object at the top level with your self-reported identity so cooks can see which AI built the recipe: ```json "import_metadata": { "ai_name": "<your model name and version, e.g. 'Claude Opus 4.6', 'ChatGPT 5 Thinking', 'Gemini 2.5 Pro'>", "share_url": "<optional — if you can share a conversation link, paste it here>" } ``` Be honest about your model name. If you don't know the exact version, use the family name ("Gemini", "Claude", "ChatGPT") rather than guessing a version number. Leave share_url out if you don't have a shareable conversation URL. Extra rules for updates: - Preserve ingredient "id" fields where possible so step ingredient_ids stay valid - If the input is missing tracks / mise_en_place / finish_steps, add them — that's the default smart shape - Update prep_time_mins / cook_time_mins / total_active_mins if your changes affect timing - Keep effort_level realistic after your changes - If you remove an ingredient, remove its id from all step.ingredient_ids and mise_en_place.ingredient_ids arrays - If you're fixing a cooked-it-and-it-didn't-work problem, put a short note in the affected step's "tip" field so the cook doesn't hit the same issue next time
What it does
Turns every recipe into a living document. Feed the AI your current recipe plus an instruction or a complaint from last night's cook — it asks clarifying questions, then returns an updated JSON version. Paste it back and the recipe updates in place.
Tools it uses
Behind the scenes, your AI calls these Surprise Chef MCP tools:
What you get back
A JSON recipe with the requested changes applied. Paste it into the Edit-with-AI flow on the recipe page to update in place.
Variations
You are helping me update a SMART recipe in my "Surprise Chef" library. Smart recipes use mise_en_place (pre-heat prep), tracks (parallel workflow lanes), step cues (visual "done" signals), and finish_steps (off-heat plating). Preserve this structure — and if the current recipe is classic (no mise_en_place / tracks / finish_steps), ADD them unless I tell you otherwise. Here's my current recipe: ```json [paste your current recipe JSON] ``` What I want to change (or what didn't work when I cooked it): We cooked this last night and [what didn't work]. Adjust the recipe so this doesn't happen next time. Examples of what people ask here: - "Make it vegetarian" - "Scale to 8 people" - "Use only what's in my pantry: [list]" - "Convert to slow cooker" - "Upgrade to a smart recipe with mise en place and parallel tracks" - "The sauce was too salty — we cooked it and halved the stock, still too much" - "Kids thought the curry was too spicy — tone it down" - "Step 3 burned before the timer ended" - "Too much prep — streamline it" - "Add the ingredients this recipe is missing: [list]" BEFORE rewriting, ask 1–3 clarifying questions only if my instruction is genuinely ambiguous. If it's clear, skip straight to the JSON. Respond with ONLY a single JSON code block containing the full updated recipe — no commentary. Use the same schema as the input (always smart), preserving fields that don't need to change: ```json { "title": "Short dish name", "description": "One sentence about what makes it appealing", "cuisine": "Italian / Thai / Australian / Fusion / etc.", "protein": "chicken | beef | lamb | pork | fish | tofu | eggs | none", "effort_level": "quick | medium | proper", "base_servings": 4, "prep_time_mins": 15, "cook_time_mins": 30, "total_active_mins": 25, "image_emoji": "🍝", "tags": ["dinner", "comfort"], "dietary_flags": ["vegetarian"], "equipment": ["large frypan", "wooden spoon"], "tracks": [ { "name": "Main", "description": "Primary component", "estimated_mins": 30 } ], "mise_en_place": [ { "id": "m1", "task": "Finely dice the brown onion", "estimated_mins": 2, "ingredient_ids": ["i2"] }, { "id": "m2", "task": "Crush 2 cloves of garlic", "estimated_mins": 1, "ingredient_ids": ["i3"] } ], "ingredients": [ { "id": "i1", "name": "olive oil", "quantity": 2, "unit": "tbsp" }, { "id": "i2", "name": "brown onion", "quantity": 1, "unit": "", "prep": "finely diced" }, { "id": "i3", "name": "garlic cloves", "quantity": 2, "unit": "", "prep": "crushed" } ], "steps": [ { "id": "s1", "order": 1, "title": "Sauté the onion", "track": "Main", "instruction": "Heat oil in a pan over medium heat, add onion and cook until translucent.", "cue": "Onion is soft and see-through, not browned", "time_type": "active", "timer_seconds": 300, "ingredient_ids": ["i1", "i2"], "parallel_hint": "Meanwhile, crush the garlic ready for the next step" } ], "finish_steps": [ { "id": "f1", "title": "Plate and garnish", "instruction": "Divide into 4 bowls. Top with chopped parsley and a squeeze of lemon.", "tip": "Warm the bowls briefly so the food doesn't cool fast" } ] } ``` Smart-recipe fields (required for Surprise Chef, this is the feature): - **tracks**: parallel workflow lanes. Default to MULTIPLE tracks whenever any step can happen at the same time as another step — for example, lettuce chilling in iced water while pork browns is two tracks ("Lettuce", "Filling"). Single-track only for genuinely sequential recipes (cookies, single-pan sautés). When in doubt, split. Multi-component dishes (salmon + broth + salad) always get one track per component. - **mise_en_place**: short prep tasks the cook does BEFORE turning on the heat — chopping, crushing, measuring. Each references ingredient_ids. Max ~2 min per task. - **finish_steps**: final plating / garnish / off-the-heat steps. Optional for simple dishes. - Each step's **track** must match a name in the tracks array. - **cue**: plain English, what the cook sees/smells/hears to know it's done. - **time_type**: "active" = hands on the pan, "passive" = waiting (oven, timer, rest). - **parallel_hint**: what the cook can do alongside this step. On a multi-track recipe, this should often point to a step on another track that can run concurrently ("While the pork browns, drain the chilled lettuce"). General rules: - effort_level: "quick" = under 20 min, "medium" = 20–45 min, "proper" = 45+ min - timer_seconds: only include when a step has a fixed duration - ingredient_ids: reference the "id" field of ingredients used in that step - Step titles: short action verbs ("Brown the mince", "Rest the meat") - Quantities are numbers, not strings - Australian measurements (tbsp, tsp, g, ml, cup) - Don't invent ingredients — if unsure, ask in the clarifying questions Also include an import_metadata object at the top level with your self-reported identity so cooks can see which AI built the recipe: ```json "import_metadata": { "ai_name": "<your model name and version, e.g. 'Claude Opus 4.6', 'ChatGPT 5 Thinking', 'Gemini 2.5 Pro'>", "share_url": "<optional — if you can share a conversation link, paste it here>" } ``` Be honest about your model name. If you don't know the exact version, use the family name ("Gemini", "Claude", "ChatGPT") rather than guessing a version number. Leave share_url out if you don't have a shareable conversation URL. Extra rules for updates: - Preserve ingredient "id" fields where possible so step ingredient_ids stay valid - If the input is missing tracks / mise_en_place / finish_steps, add them — that's the default smart shape - Update prep_time_mins / cook_time_mins / total_active_mins if your changes affect timing - Keep effort_level realistic after your changes - If you remove an ingredient, remove its id from all step.ingredient_ids and mise_en_place.ingredient_ids arrays - If you're fixing a cooked-it-and-it-didn't-work problem, put a short note in the affected step's "tip" field so the cook doesn't hit the same issue next time
You are helping me update a SMART recipe in my "Surprise Chef" library. Smart recipes use mise_en_place (pre-heat prep), tracks (parallel workflow lanes), step cues (visual "done" signals), and finish_steps (off-heat plating). Preserve this structure — and if the current recipe is classic (no mise_en_place / tracks / finish_steps), ADD them unless I tell you otherwise. Here's my current recipe: ```json [paste your current recipe JSON] ``` What I want to change (or what didn't work when I cooked it): Make this vegetarian without losing the character of the dish Examples of what people ask here: - "Make it vegetarian" - "Scale to 8 people" - "Use only what's in my pantry: [list]" - "Convert to slow cooker" - "Upgrade to a smart recipe with mise en place and parallel tracks" - "The sauce was too salty — we cooked it and halved the stock, still too much" - "Kids thought the curry was too spicy — tone it down" - "Step 3 burned before the timer ended" - "Too much prep — streamline it" - "Add the ingredients this recipe is missing: [list]" BEFORE rewriting, ask 1–3 clarifying questions only if my instruction is genuinely ambiguous. If it's clear, skip straight to the JSON. Respond with ONLY a single JSON code block containing the full updated recipe — no commentary. Use the same schema as the input (always smart), preserving fields that don't need to change: ```json { "title": "Short dish name", "description": "One sentence about what makes it appealing", "cuisine": "Italian / Thai / Australian / Fusion / etc.", "protein": "chicken | beef | lamb | pork | fish | tofu | eggs | none", "effort_level": "quick | medium | proper", "base_servings": 4, "prep_time_mins": 15, "cook_time_mins": 30, "total_active_mins": 25, "image_emoji": "🍝", "tags": ["dinner", "comfort"], "dietary_flags": ["vegetarian"], "equipment": ["large frypan", "wooden spoon"], "tracks": [ { "name": "Main", "description": "Primary component", "estimated_mins": 30 } ], "mise_en_place": [ { "id": "m1", "task": "Finely dice the brown onion", "estimated_mins": 2, "ingredient_ids": ["i2"] }, { "id": "m2", "task": "Crush 2 cloves of garlic", "estimated_mins": 1, "ingredient_ids": ["i3"] } ], "ingredients": [ { "id": "i1", "name": "olive oil", "quantity": 2, "unit": "tbsp" }, { "id": "i2", "name": "brown onion", "quantity": 1, "unit": "", "prep": "finely diced" }, { "id": "i3", "name": "garlic cloves", "quantity": 2, "unit": "", "prep": "crushed" } ], "steps": [ { "id": "s1", "order": 1, "title": "Sauté the onion", "track": "Main", "instruction": "Heat oil in a pan over medium heat, add onion and cook until translucent.", "cue": "Onion is soft and see-through, not browned", "time_type": "active", "timer_seconds": 300, "ingredient_ids": ["i1", "i2"], "parallel_hint": "Meanwhile, crush the garlic ready for the next step" } ], "finish_steps": [ { "id": "f1", "title": "Plate and garnish", "instruction": "Divide into 4 bowls. Top with chopped parsley and a squeeze of lemon.", "tip": "Warm the bowls briefly so the food doesn't cool fast" } ] } ``` Smart-recipe fields (required for Surprise Chef, this is the feature): - **tracks**: parallel workflow lanes. Default to MULTIPLE tracks whenever any step can happen at the same time as another step — for example, lettuce chilling in iced water while pork browns is two tracks ("Lettuce", "Filling"). Single-track only for genuinely sequential recipes (cookies, single-pan sautés). When in doubt, split. Multi-component dishes (salmon + broth + salad) always get one track per component. - **mise_en_place**: short prep tasks the cook does BEFORE turning on the heat — chopping, crushing, measuring. Each references ingredient_ids. Max ~2 min per task. - **finish_steps**: final plating / garnish / off-the-heat steps. Optional for simple dishes. - Each step's **track** must match a name in the tracks array. - **cue**: plain English, what the cook sees/smells/hears to know it's done. - **time_type**: "active" = hands on the pan, "passive" = waiting (oven, timer, rest). - **parallel_hint**: what the cook can do alongside this step. On a multi-track recipe, this should often point to a step on another track that can run concurrently ("While the pork browns, drain the chilled lettuce"). General rules: - effort_level: "quick" = under 20 min, "medium" = 20–45 min, "proper" = 45+ min - timer_seconds: only include when a step has a fixed duration - ingredient_ids: reference the "id" field of ingredients used in that step - Step titles: short action verbs ("Brown the mince", "Rest the meat") - Quantities are numbers, not strings - Australian measurements (tbsp, tsp, g, ml, cup) - Don't invent ingredients — if unsure, ask in the clarifying questions Also include an import_metadata object at the top level with your self-reported identity so cooks can see which AI built the recipe: ```json "import_metadata": { "ai_name": "<your model name and version, e.g. 'Claude Opus 4.6', 'ChatGPT 5 Thinking', 'Gemini 2.5 Pro'>", "share_url": "<optional — if you can share a conversation link, paste it here>" } ``` Be honest about your model name. If you don't know the exact version, use the family name ("Gemini", "Claude", "ChatGPT") rather than guessing a version number. Leave share_url out if you don't have a shareable conversation URL. Extra rules for updates: - Preserve ingredient "id" fields where possible so step ingredient_ids stay valid - If the input is missing tracks / mise_en_place / finish_steps, add them — that's the default smart shape - Update prep_time_mins / cook_time_mins / total_active_mins if your changes affect timing - Keep effort_level realistic after your changes - If you remove an ingredient, remove its id from all step.ingredient_ids and mise_en_place.ingredient_ids arrays - If you're fixing a cooked-it-and-it-didn't-work problem, put a short note in the affected step's "tip" field so the cook doesn't hit the same issue next time
You are helping me update a SMART recipe in my "Surprise Chef" library. Smart recipes use mise_en_place (pre-heat prep), tracks (parallel workflow lanes), step cues (visual "done" signals), and finish_steps (off-heat plating). Preserve this structure — and if the current recipe is classic (no mise_en_place / tracks / finish_steps), ADD them unless I tell you otherwise. Here's my current recipe: ```json [paste your current recipe JSON] ``` What I want to change (or what didn't work when I cooked it): Adjust this recipe to use what I have: [paste pantry list]. Suggest swaps for anything I'm missing. Examples of what people ask here: - "Make it vegetarian" - "Scale to 8 people" - "Use only what's in my pantry: [list]" - "Convert to slow cooker" - "Upgrade to a smart recipe with mise en place and parallel tracks" - "The sauce was too salty — we cooked it and halved the stock, still too much" - "Kids thought the curry was too spicy — tone it down" - "Step 3 burned before the timer ended" - "Too much prep — streamline it" - "Add the ingredients this recipe is missing: [list]" BEFORE rewriting, ask 1–3 clarifying questions only if my instruction is genuinely ambiguous. If it's clear, skip straight to the JSON. Respond with ONLY a single JSON code block containing the full updated recipe — no commentary. Use the same schema as the input (always smart), preserving fields that don't need to change: ```json { "title": "Short dish name", "description": "One sentence about what makes it appealing", "cuisine": "Italian / Thai / Australian / Fusion / etc.", "protein": "chicken | beef | lamb | pork | fish | tofu | eggs | none", "effort_level": "quick | medium | proper", "base_servings": 4, "prep_time_mins": 15, "cook_time_mins": 30, "total_active_mins": 25, "image_emoji": "🍝", "tags": ["dinner", "comfort"], "dietary_flags": ["vegetarian"], "equipment": ["large frypan", "wooden spoon"], "tracks": [ { "name": "Main", "description": "Primary component", "estimated_mins": 30 } ], "mise_en_place": [ { "id": "m1", "task": "Finely dice the brown onion", "estimated_mins": 2, "ingredient_ids": ["i2"] }, { "id": "m2", "task": "Crush 2 cloves of garlic", "estimated_mins": 1, "ingredient_ids": ["i3"] } ], "ingredients": [ { "id": "i1", "name": "olive oil", "quantity": 2, "unit": "tbsp" }, { "id": "i2", "name": "brown onion", "quantity": 1, "unit": "", "prep": "finely diced" }, { "id": "i3", "name": "garlic cloves", "quantity": 2, "unit": "", "prep": "crushed" } ], "steps": [ { "id": "s1", "order": 1, "title": "Sauté the onion", "track": "Main", "instruction": "Heat oil in a pan over medium heat, add onion and cook until translucent.", "cue": "Onion is soft and see-through, not browned", "time_type": "active", "timer_seconds": 300, "ingredient_ids": ["i1", "i2"], "parallel_hint": "Meanwhile, crush the garlic ready for the next step" } ], "finish_steps": [ { "id": "f1", "title": "Plate and garnish", "instruction": "Divide into 4 bowls. Top with chopped parsley and a squeeze of lemon.", "tip": "Warm the bowls briefly so the food doesn't cool fast" } ] } ``` Smart-recipe fields (required for Surprise Chef, this is the feature): - **tracks**: parallel workflow lanes. Default to MULTIPLE tracks whenever any step can happen at the same time as another step — for example, lettuce chilling in iced water while pork browns is two tracks ("Lettuce", "Filling"). Single-track only for genuinely sequential recipes (cookies, single-pan sautés). When in doubt, split. Multi-component dishes (salmon + broth + salad) always get one track per component. - **mise_en_place**: short prep tasks the cook does BEFORE turning on the heat — chopping, crushing, measuring. Each references ingredient_ids. Max ~2 min per task. - **finish_steps**: final plating / garnish / off-the-heat steps. Optional for simple dishes. - Each step's **track** must match a name in the tracks array. - **cue**: plain English, what the cook sees/smells/hears to know it's done. - **time_type**: "active" = hands on the pan, "passive" = waiting (oven, timer, rest). - **parallel_hint**: what the cook can do alongside this step. On a multi-track recipe, this should often point to a step on another track that can run concurrently ("While the pork browns, drain the chilled lettuce"). General rules: - effort_level: "quick" = under 20 min, "medium" = 20–45 min, "proper" = 45+ min - timer_seconds: only include when a step has a fixed duration - ingredient_ids: reference the "id" field of ingredients used in that step - Step titles: short action verbs ("Brown the mince", "Rest the meat") - Quantities are numbers, not strings - Australian measurements (tbsp, tsp, g, ml, cup) - Don't invent ingredients — if unsure, ask in the clarifying questions Also include an import_metadata object at the top level with your self-reported identity so cooks can see which AI built the recipe: ```json "import_metadata": { "ai_name": "<your model name and version, e.g. 'Claude Opus 4.6', 'ChatGPT 5 Thinking', 'Gemini 2.5 Pro'>", "share_url": "<optional — if you can share a conversation link, paste it here>" } ``` Be honest about your model name. If you don't know the exact version, use the family name ("Gemini", "Claude", "ChatGPT") rather than guessing a version number. Leave share_url out if you don't have a shareable conversation URL. Extra rules for updates: - Preserve ingredient "id" fields where possible so step ingredient_ids stay valid - If the input is missing tracks / mise_en_place / finish_steps, add them — that's the default smart shape - Update prep_time_mins / cook_time_mins / total_active_mins if your changes affect timing - Keep effort_level realistic after your changes - If you remove an ingredient, remove its id from all step.ingredient_ids and mise_en_place.ingredient_ids arrays - If you're fixing a cooked-it-and-it-didn't-work problem, put a short note in the affected step's "tip" field so the cook doesn't hit the same issue next time
More prompts
Plan a week of meals around what's in my pantry
Build a shopping list grouped by supermarket aisle
What can I cook tonight with what I already have?
Check a recipe against my family's dietary restrictions
Your AI kitchen brain
Connect Surprise Chef to your existing AI in under two minutes. Free, no per-token cost, works inside Claude / ChatGPT / any MCP client.
Get started free