{
  "slug": "sample-case-study",
  "title": "Sample case study",
  "brand": "Sample Brand",
  "unofficial": null,
  "prompt": "Make a 20-second launch film for my note-taking app. Here is the site: <your URL>",
  "mode": "auto",
  "route": "ice-film",
  "film_type": "product launch",
  "size": "standard",
  "supplied": [
    { "kind": "brief", "status": "partial", "filled_fields": ["audience", "platform and aspect ratio", "duration"] }
  ],
  "questions": [
    { "question": "Where will the film play?", "answer": "Vertical, for social", "answered_by": "user" },
    { "question": "Should a voice speak?", "answer": "Music and on-screen text", "answered_by": "default" }
  ],
  "stages": [
    {
      "id": "01", "name": "brief",
      "summary": "Sample summary: the research on the business, its brand material and the ad rules of its field came first, then one message with two questions.",
      "decisions": [
        { "decision": "Primary audience", "options": ["Existing users", "New visitors"], "chosen": "New visitors", "reason": "Sample reason: the brief names a launch, so the film speaks to people who do not know the app yet.", "source": "brief slot: goal" }
      ],
      "artifacts": [
        { "path": "media/01-research.webp", "type": "image", "caption": "Sample plate in place of the research and brand material" }
      ],
      "critic": [],
      "minutes": 18,
      "roles": ["researcher", "director"]
    },
    {
      "id": "02", "name": "concept",
      "summary": "Sample summary: three directions were pitched, two of them unexpected, and a separate critic picked one.",
      "decisions": [
        { "decision": "Concept", "options": ["A notebook that writes itself", "A desk seen from above", "One sentence that grows"], "chosen": "One sentence that grows", "reason": "Sample reason: it shows the product working in the first second.", "source": "research note: sample-01" }
      ],
      "artifacts": [
        { "path": "media/02-concepts.webp", "type": "image", "caption": "Sample plate in place of the concepts pitched" },
        { "path": "media/concepts.md", "type": "text", "caption": "Concepts pitched and the one chosen (sample text)" }
      ],
      "critic": [
        { "round": 1, "verdict": "pick C", "score": "sample score 8 of 10", "notes": ["Sample note: C is the clearest at phone size."], "fixes": [] }
      ],
      "minutes": 12,
      "roles": ["director", "critic", "approver"]
    },
    {
      "id": "03", "name": "script",
      "summary": "Sample summary: the on-screen words were written for each language and timed to the beats; a 6-second cutdown was planned.",
      "decisions": [
        { "decision": "Words on screen", "options": ["Five lines", "Three lines"], "chosen": "Three lines", "reason": "Sample reason: three lines fit the reading time of a 20-second vertical film.", "source": "ice-type reading-time rule" }
      ],
      "artifacts": [],
      "critic": [],
      "minutes": 9,
      "roles": ["director"]
    },
    {
      "id": "04", "name": "storyboard",
      "summary": "Sample summary: eight rough boards with their framing, timing and transitions.",
      "decisions": [],
      "artifacts": [
        { "path": "media/04-storyboard.webp", "type": "image", "caption": "Sample plate in place of the rough boards" }
      ],
      "critic": [],
      "minutes": 14,
      "roles": ["director"]
    },
    {
      "id": "05", "name": "look",
      "summary": "Sample summary: a mood board, then the palette, type and motion feel, shown as style frames with the brand's real material.",
      "decisions": [
        { "decision": "Palette", "options": ["Brand blue and white", "Brand blue with a warm accent"], "chosen": "Brand blue with a warm accent", "reason": "Sample reason: the accent marks the one action in each shot.", "source": "brand sheet" }
      ],
      "artifacts": [
        { "path": "media/05-style-frame.webp", "type": "image", "caption": "Sample plate in place of a style frame" }
      ],
      "critic": [],
      "minutes": 21,
      "roles": ["director", "consultant"]
    },
    {
      "id": "06", "name": "animatic",
      "summary": "Sample summary: the boards and the look merged into a timed rough cut with temporary sound; the cue sheet was locked.",
      "decisions": [],
      "artifacts": [],
      "critic": [],
      "minutes": 11,
      "roles": ["builder"]
    },
    {
      "id": "07", "name": "build",
      "summary": "Sample summary: the full film was written as code and rendered as a draft.",
      "decisions": [],
      "artifacts": [],
      "critic": [],
      "minutes": 46,
      "roles": ["builder"]
    },
    {
      "id": "08", "name": "sound",
      "summary": "Sample summary: music and sound effects were made from the locked cue sheet while the film was built, then mixed on the draft.",
      "decisions": [
        { "decision": "Music", "options": ["Licensed track", "Music generated by code"], "chosen": "Music generated by code", "reason": "Sample reason: no licence to clear for a social launch.", "source": "ice-audio music policy" }
      ],
      "artifacts": [],
      "critic": [],
      "minutes": 17,
      "roles": ["builder"]
    },
    {
      "id": "09", "name": "review",
      "summary": "Sample summary: the gates ran on the exported file and two fresh critic rounds asked for one fix.",
      "decisions": [],
      "artifacts": [],
      "critic": [
        { "round": 1, "verdict": "one more pass", "score": "sample score 7 of 10", "notes": ["Sample note: shot 5 holds too long."], "fixes": ["Sample fix: shot 5 trimmed to the beat."] },
        { "round": 2, "verdict": "ship", "score": "sample score 8.5 of 10", "notes": ["Sample note: the fix landed."], "fixes": [] }
      ],
      "minutes": 25,
      "roles": ["critic", "approver"]
    },
    {
      "id": "10", "name": "deliver",
      "summary": "Sample summary: the vertical film, a square cutdown and captions were delivered with the report.",
      "decisions": [],
      "artifacts": [
        { "path": "media/10-final-still.webp", "type": "image", "caption": "Sample plate in place of stills from the delivered film" }
      ],
      "critic": [],
      "minutes": 6,
      "roles": ["builder"]
    }
  ],
  "research": [
    {
      "question": "Sample question: how do note-taking apps present a launch on social video?",
      "sources": [
        { "title": "Sample source one", "url": "https://example.com/sample-source-one", "date": "2026-10-01", "accessed": "2026-10-20" },
        { "title": "Sample source two", "url": "https://example.com/sample-source-two", "date": "2026-09-14", "accessed": "2026-10-20" }
      ]
    }
  ],
  "gates": [
    { "name": "Storyboard lint", "result": "pass", "value": "sample: 0 errors", "threshold": "" },
    { "name": "Slop scan", "result": "pass", "value": "sample: no stock look found", "threshold": "" },
    { "name": "Default-look gate", "result": "pass", "value": "sample: blue and purple under the limit", "threshold": "" },
    { "name": "Loudness", "result": "warn", "value": "sample: -13.6 LUFS, true peak -1.2 dBTP", "threshold": "" }
  ],
  "versions": [
    { "language": "en", "aspect": "9:16", "seconds": 20, "file": "renders/final/sample-9x16.mp4" },
    { "language": "en", "aspect": "1:1", "seconds": 6, "file": "renders/final/sample-1x1-cutdown.mp4" }
  ],
  "metrics": { "loudness_lufs": -13.6, "true_peak_dbtp": -1.2, "fps": 30, "resolution": "1080 x 1920" },
  "credits": ["Sample credit: music generated by code with the bundled mgaudio toolkit"],
  "tools": ["storyboard_lint.py", "film_gate.py", "loudness.mjs"],
  "notes": [
    { "field": "all", "note": "This is a sample written by hand from the case study schema to show the format. It is not the export of a real run." },
    { "field": "unofficial", "note": "fictional brand: no real brand, so the unofficial label does not apply" },
    { "field": "stages[06].artifacts", "note": "no animatic render in the run files" },
    { "field": "gates[].threshold", "note": "NOTE.md gates table does not separate thresholds; they are inside each value where the report states them" }
  ],
  "exported": { "media": true, "ffmpeg": false, "at": "2026-10-20T00:00:00.000Z" }
}
