{
  "cases": [
    {
      "id": "dashboard-quarterly-kpis",
      "title": "Quarterly KPI dashboard",
      "prompt": "Create a data-forward quarterly SaaS KPI dashboard. Open with KPI cards, then show a regional bookings bar chart, a six-month MRR line chart, and finish with a short investor-ready takeaway. Keep it analytical, not cinematic.",
      "template_hint": "earnings",
      "theme_hint": "sage green",
      "section_count": 4,
      "interaction_mode": "fact",
      "data": {
        "kpis": [
          { "label": "Net new ARR", "value": 4150 },
          { "label": "Pipeline coverage", "value": 3.6 },
          { "label": "Net revenue retention", "value": 118 },
          { "label": "Gross margin", "value": 79 }
        ],
        "regional_bookings": [
          { "region": "North America", "value": 10900 },
          { "region": "EMEA", "value": 8450 },
          { "region": "APAC", "value": 6325 },
          { "region": "LATAM", "value": 2710 }
        ],
        "mrr_by_month": [
          { "month": "2025-10", "value": 10900 },
          { "month": "2025-11", "value": 11850 },
          { "month": "2025-12", "value": 13200 },
          { "month": "2026-01", "value": 14850 },
          { "month": "2026-02", "value": 16750 },
          { "month": "2026-03", "value": 18100 }
        ]
      },
      "assertions": {
        "expected_component_engine_ids": ["03"],
        "forbidden_component_engine_ids": ["18"],
        "min_quality_score": 75,
        "required_visible_strings": ["Net revenue retention", "MRR"],
        "required_numeric_tokens": ["4150", "10900", "14850", "18100"],
        "forbidden_visible_strings": ["NaN", "undefined", "null"],
        "absent_warning_types": ["chart_surface_missing", "narrative_claim_visibility_gap"],
        "require_claim_map": true,
        "require_key_entities": true
      }
    },
    {
      "id": "roi-calculator-productivity",
      "title": "ROI calculator productivity model",
      "prompt": "Build an ROI calculator for document turnaround. Inputs must include team size, hours saved per week, hourly rate, weeks per year, and annual software cost. Outputs must include annual labor savings, annual net gain, payback period, and ROI percentage. Make it feel trustworthy and practical.",
      "template_hint": "calculator",
      "theme_hint": "slate graphite",
      "section_count": 4,
      "interaction_mode": "fact",
      "assertions": {
        "expected_component_engine_ids": ["08"],
        "min_quality_score": 75,
        "required_visible_strings": ["ROI", "payback", "hourly rate"],
        "forbidden_visible_strings": ["NaN", "undefined", "null"],
        "absent_warning_types": ["narrative_claim_visibility_gap", "headless_validation_failure"],
        "require_claim_map": true,
        "require_key_entities": true
      }
    },
    {
      "id": "particle-ambient-hero",
      "title": "Directed particle ambient hero",
      "prompt": "Create an immersive ambient hero with three particle layers in forest green, warm sand, and deep graphite. The particles should feel like a premium signal cloud around a short message about interactive documents. Do not turn this into a marketing funnel or a form.",
      "template_hint": "hero",
      "theme_hint": "sage green",
      "section_count": 3,
      "interaction_mode": "fact",
      "assertions": {
        "expected_component_engine_ids": ["01"],
        "forbidden_component_engine_ids": ["16"],
        "max_section_count": 3,
        "min_quality_score": 75,
        "forbidden_visible_strings": ["NaN", "undefined", "null"],
        "absent_warning_types": ["narrative_claim_visibility_gap"],
        "require_claim_map": true,
        "require_key_entities": true
      }
    },
    {
      "id": "scroll-infographic-exact-stats",
      "title": "Scroll infographic with exact stats",
      "prompt": "Create an editorial scroll infographic about AI sales operations. Use these exact stats: 68 percent of reps say research time is too high, 42 percent say proposal assembly causes delays, 7.3 hours per week are lost to reformatting, and 31 percent of teams still send static PDFs. Make the pacing clear and grounded.",
      "template_hint": "research",
      "theme_hint": "obsidian cyan",
      "section_count": 5,
      "interaction_mode": "fact",
      "assertions": {
        "expected_wrapper_engine_id": "12",
        "min_quality_score": 75,
        "required_numeric_tokens": ["68", "42", "7.3", "31"],
        "forbidden_visible_strings": ["NaN", "undefined", "null"],
        "absent_warning_types": ["narrative_claim_visibility_gap", "generic_section_pattern"],
        "require_claim_map": true,
        "require_key_entities": true
      }
    },
    {
      "id": "uploaded-research-outline-preservation",
      "title": "Uploaded research outline preservation",
      "prompt": "Turn this uploaded research memo into a polished analytical IterFact without flattening its structure. Preserve the section order unless two adjacent sections clearly belong together.",
      "template_hint": "research",
      "theme_hint": "sage green",
      "interaction_mode": "fact",
      "uploaded_content": "# Opening Problem\nStatic documents force readers to reconstruct the story themselves.\n\n## Why the Format Breaks\nTeams lose context when charts, notes, and next steps live in separate places.\n\n## What Interactive Documents Change\nReaders can explore the evidence in sequence instead of skimming screenshots.\n\n## Operational Impact\nOperators spend less time re-explaining the same material.\n\n## Recommendation\nUse one hosted artifact that can be revised in place instead of restarting from a blank deck.",
      "assertions": {
        "min_section_count": 4,
        "min_quality_score": 75,
        "required_visible_strings": ["Static documents", "Operational Impact", "Recommendation"],
        "forbidden_visible_strings": ["NaN", "undefined", "null"],
        "absent_warning_types": ["source_outline_drift", "source_specificity_loss", "generic_section_pattern"],
        "require_claim_map": true,
        "require_key_entities": true
      }
    },
    {
      "id": "globe-social-proof",
      "title": "Global social proof globe",
      "prompt": "Create a global social proof section for IterFact with a rotating testimonial globe and short proof snippets from clients in New York, London, Dubai, and Singapore. Keep it focused on customer footprint and proof, not counters or lead forms.",
      "template_hint": "social proof",
      "theme_hint": "sage green",
      "section_count": 4,
      "interaction_mode": "fact",
      "assertions": {
        "expected_component_engine_ids": ["39"],
        "forbidden_component_engine_ids": ["16", "03"],
        "min_quality_score": 75,
        "forbidden_visible_strings": ["NaN", "undefined", "null"],
        "absent_warning_types": ["social_proof_metric_invention_risk", "social_proof_form_scope_drift", "narrative_claim_visibility_gap"],
        "require_claim_map": true,
        "require_key_entities": true
      }
    }
  ]
}
