{
  "evaluation_id": "invoice-extraction-v0.1",
  "status": "fixture_published_model_runs_pending",
  "published_at": "2026-08-10",
  "scope": {
    "task": "Extract five defined fields from OCR-like invoice text into JSON",
    "input_boundary": "Text extraction only. Image rendering and OCR quality are outside this first fixture.",
    "required_fields": [
      "supplier_name",
      "invoice_number",
      "issue_date",
      "currency",
      "total_amount"
    ]
  },
  "data": {
    "case_count": 12,
    "source": "Entirely synthetic invoices created for this fixture",
    "production_representativeness": "Not established",
    "privacy": "No real customer, supplier, or payment data"
  },
  "metrics": {
    "primary": "whole_record_exact_match",
    "secondary": [
      "field_exact_match",
      "schema_validity",
      "missing_prediction_count"
    ],
    "pass_threshold": "Not set until the operational error budget and review workflow are defined"
  },
  "normalisation": {
    "strings": "Unicode NFKC, trim outer whitespace, then exact comparison",
    "issue_date": "ISO 8601 YYYY-MM-DD",
    "currency": "Uppercase ISO 4217 code",
    "total_amount": "Numeric comparison rounded to two decimal places"
  },
  "run_requirements": [
    "Lock candidate model IDs, model versions, prompts, and prices before the first scored call",
    "Use the same extraction schema and task instructions for every candidate",
    "Retain raw requests, responses, refusals, malformed outputs, retries, and errors",
    "Report provider or hardware, runtime, quantisation, context settings, latency, and measured token cost",
    "Publish per-case outputs so aggregate pass rates can be reproduced"
  ],
  "not_claimed": [
    "No model has been run on this fixture yet",
    "The fixture does not validate image OCR performance",
    "The fixture is too small and synthetic to establish production readiness"
  ]
}
