[
  {
    "name": "clean-text.pdf",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-104\nWorker Name: Alex Reed\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 37.5",
    "expected": {
      "worker": "W-104",
      "hours": 37.5,
      "exceptions": []
    }
  },
  {
    "name": "clean-scan.png",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-108\nWorker Name: Jamie Lane\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 8\nTuesday: 8\nWednesday: 8\nThursday: 8\nFriday: 8\nSaturday: 0\nSunday: 0\nTotal: 40",
    "expected": {
      "worker": "W-108",
      "hours": 40,
      "exceptions": [
        "ocr"
      ]
    }
  },
  {
    "name": "missing-id.pdf",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID:\nWorker Name: Alex Reed\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 37.5",
    "expected": {
      "exceptions": [
        "worker_id"
      ]
    }
  },
  {
    "name": "duplicate.pdf",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-104\nWorker Name: Alex Reed\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 37.5",
    "expected": {
      "exceptions": [
        "duplicate (with clean-text.pdf)"
      ]
    }
  },
  {
    "name": "inconsistent.pdf",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-104\nWorker Name: Alex Reed\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-14\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 39",
    "expected": {
      "hours": 37.5,
      "exceptions": [
        "total"
      ]
    }
  },
  {
    "name": "unsupported.pdf",
    "text": "SYNTHETIC DATA ONLY\nUnvalidated handwritten or unknown layout\nHours: unreadable",
    "expected": {
      "exceptions": [
        "layout",
        "missing fields"
      ]
    }
  },
  {
    "name": "unmatched.pdf",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-999\nWorker Name: Alex Reed\nAssignment: A-99\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 37.5",
    "expected": {
      "exceptions": [
        "worker_match",
        "assignment_match"
      ]
    }
  },
  {
    "name": "ambiguous.pdf",
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID:\nWorker Name: Sam Vale\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 37.5",
    "expected": {
      "exceptions": [
        "worker_id",
        "worker_ambiguous"
      ]
    }
  },
  {
    "name": "heldout-text.pdf",
    "heldout": true,
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-112\nWorker Name: Robin Moss\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-07\nMonday: 6.25\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 7.5\nSaturday: 0\nSunday: 0\nTotal: 36.25",
    "expected": {
      "worker": "W-112",
      "hours": 36.25,
      "exceptions": []
    }
  },
  {
    "name": "heldout-scan.png",
    "heldout": true,
    "text": "FIRSTLINE DEMO V1\nSYNTHETIC DATA ONLY\nWorker ID: W-104\nWorker Name: Alex Reed\nAssignment: A-10\nClient: Demo Orchard\nWeek: 2026-09-21\nMonday: 7.5\nTuesday: 7.5\nWednesday: 7.5\nThursday: 7.5\nFriday: 4.25\nSaturday: 0\nSunday: 0\nTotal: 34.25",
    "expected": {
      "worker": "W-104",
      "hours": 34.25,
      "exceptions": [
        "ocr"
      ]
    }
  },
  {
    "name": "unreadable.png",
    "heldout": true,
    "text": "SYNTHETIC DATA ONLY\n?????  ?????\nUNREADABLE",
    "expected": {
      "exceptions": [
        "layout",
        "ocr",
        "missing fields"
      ]
    }
  }
]