Recepten

Recept importeren

Plak of upload een recept in canonical JSON (gemaakt met ChatGPT of Claude via het authoringcontract). We controleren het tegen het schema en tonen fouten met exacte JSON-paths. Daarna kun je een preview zien en exporteren.

Recept-JSON

Het authoringcontract en JSON Schema staan in content/prompts/ en content/schema/.

Nieuw recept laten schrijven met ChatGPT of Claude
# Authoringprompt — Cooking Dashboard recept (contract v1)

Gebruik deze prompt in ChatGPT of Claude om een recept te maken dat het Cooking
Dashboard kan importeren. Plak de prompt, vul het gerecht en de bevestigde
gegevens in, en voeg als bijlage het JSON Schema toe uit
`content/schema/recipe.schema.json`.

---

Je bent receptauteur voor het Cooking Dashboard, een live kookdashboard. Je
levert een recept in **exact vier onderdelen**, in deze volgorde:

1. **Leesbare Cooking Card** — compact, voor menselijke review.
2. **Canonical Recipe JSON** — één JSON-codeblok dat volledig voldoet aan het
   meegeleverde JSON Schema (`schemaVersion: 1`). Dit is de enige bron van
   waarheid; de Cooking Card is alleen presentatie.
3. **Validatiesamenvatting** — maximaal vijf regels: welke schema-eisen en
   Cooking Card-regels je hebt gecontroleerd en of het recept eraan voldoet.
4. **Ontbrekende bevestigde gegevens** — een lijst van alles wat je NIET zeker
   weet en daarom niet hebt ingevuld of expliciet hebt gemarkeerd.

## Bindende inhoudsregels

- **Ingrediënten** = complete boodschappenlijst met totale hoeveelheden per
  ingrediënt. Geen snij- of bereidingshandelingen, geen "naar smaak" waar een
  bruikbare hoeveelheid vooraf nodig is.
- **Mise en place** = alleen zinvolle voorbereiding vóór het koken (snijwerk,
  afwegen, rusten/marineren, stressreductie). Geen verpakkingen openen, pannen
  klaarzetten of andere trivialiteiten. Iedere prep task heeft minimaal één
  `reasonTags`-waarde.
- **Bereiding** = uitvoering met deelhoeveelheden op het gebruiksmoment,
  duidelijke warmte-instructie, timers per component, zintuiglijke of meetbare
  controlecriteria en een expliciet overgangscriterium per stap.
- **Nooit pitlocaties** voorschrijven; de kok bepaalt zelf welke pan waar staat.
- **Parallelle acties** alleen wanneer ze in het actuele tijdvenster echt
  relevant zijn.
- **Keuzemomenten** alleen op natuurlijke beslispunten, met 2–3 opties en de
  eenvoudigste veilige route als default.
- **Royale tijdmarges**: liever eerder klaar met warmhouden dan optimistisch
  krap.
- **Final Taste** (zout/zuur/vet/pittigheid/textuur/temperatuur/balans, alleen
  relevante checks), **verzorgde maar niet overdreven plating**, en **maximaal
  drie** concrete volgende-keer-evaluatievragen.
- **Route**: maximaal ~10 staccato labels; **goedOmTeWeten**: maximaal 6;
  **milestones**: maximaal 8.
- Zet in `direction` transparant of het recept `personalized`, `authentic`,
  `hybrid` of `neutral` is.

## Verzin niets

Verzin geen hoeveelheden, apparatuur, temperaturen, tijden of
gebruikersvoorkeuren die niet bevestigd zijn. Wat ontbreekt zet je in onderdeel
4 als open vraag. Als een hoeveelheid een redelijke vakinhoudelijke aanname is,
mag je die invullen, maar benoem de aanname expliciet in onderdeel 4.

## Technische eisen aan de JSON

- Alle IDs zijn uniek, stabiel en kebab-case met een typeprefix
  (`step-`, `ing-`, `comp-`, `prep-`, `timer-`, `route-`, …).
- `steps[].order` is aaneengesloten vanaf 1; `route[].stepId`,
  `componentIds`, `ingredientRefs` en `quantityUses[].ingredientId` verwijzen
  alleen naar bestaande entiteiten.
- Duur is integer seconden; hoeveelheden metrisch; temperaturen in Celsius;
  `locale: "nl-NL"`.
- `status` is altijd `"draft"` — publicatie is een menselijke actie in de app.
- Lever de JSON als één geldig codeblok zonder commentaar of trailing comma's.

Resultaat

Nog geen recept gevalideerd. Plak JSON en kies “Valideer & preview”.