{
 "name": "ScanChess scoresheet recognition benchmark",
 "date": "2026-10-16",
 "page": "https://scanchess.com/accuracy",
 "license": "Result tables: CC BY 4.0. Images keep their own licenses (see each sheet's imageLicense).",
 "run": {
  "date": "2026-10-16",
  "model": "google/gemini-3-flash-preview (response modelVersion: gemini-3-flash-preview)",
  "thinkingLevel": "low (gateway default; production does not override it)",
  "codeVersion": "origin/main 5fe3b53a (after PR #158/#159), extracted with git archive",
  "path": "createScanService().scanScoresheet() + createAiGateway(): production prompt, output budget (8192 + 2048 per extra page, + 8192 thinking reserve), JSON mode, 45 s timeout, 1 retry, response validation and notation translation. In-memory repository stub: no production API, no database, no credits.",
  "moveBoxes": "off (SCAN_MOVE_BOXES default)",
  "systemPromptSha256": "62c0ea19ddc784599663d78ac88807e5facf3658db33542c67a69472fe771ad4",
  "imagePreprocessing": "As the web client (apps/web/src/lib/imageUpload.ts): EXIF-rotate, longest edge <= 2000 px, white background, JPEG quality 0.85 (done with Pillow instead of a browser canvas).",
  "runsPerSheet": 1,
  "modelApiCalls": 8,
  "flagRules": "lowConfidence: token conf < 0.85 (SUSPICIOUS_CONFIDENCE_THRESHOLD); implausible: findImplausibilities() marks both plies of a hung-and-ignored piece; firstIllegal: findFirstIllegalPly(), the one red mark. Same functions and threshold as the web review screen (apps/web/src/store/gameStore.ts).",
  "scoring": "Plies aligned to the ground truth with a minimum-edit (Levenshtein) alignment. A recognized ply is correct when it names the played move in the true position: exact SAN after stripping +, #, x and =, or a spelling that resolves uniquely to the played move (so Nxe5/Ne5 and Rd1-d5/R1d5 count, while an ambiguous 'Nd7' does not). wrong = substituted, missing = ground-truth ply with no recognized ply, extra = recognized ply with no ground-truth ply (a written 'Resigns' returned as a move counts as extra). accuracy = correct / ground-truth plies. 'reading' additionally accepts English descriptive notation (P-K4) when it can describe the played move in the true position; lenient, and a diagnostic only, because the product cannot turn descriptive notation into PGN."
 },
 "notes": [
  "Per-sheet results only: six scored sheets and two blank controls are too few for an overall accuracy figure.",
  "status: correct | wrong | missing | extra. flaggedYellow: model confidence below 0.85 (the review screen's yellow flag). firstIllegal: the first move that does not replay legally (the review screen's red mark).",
  "Descriptive-notation sheets (P-K4) are not supported by ScanChess; their reads count as wrong because they cannot become PGN."
 ],
 "sheets": [
  {
   "id": "demo-ruy-lopez",
   "title": "ScanChess demo sheet: Ruy Lopez, Breyer (fictional players)",
   "difficulty": "easy",
   "notation": "english",
   "synthetic": true,
   "supportedNotation": true,
   "imageSource": null,
   "imageLicense": "Own work (ScanChess). Rendered by apps/web/scripts/render-demo-scoresheet.mjs with Caveat and Inter (SIL OFL 1.1).",
   "imageAttribution": "ScanChess demo sheet",
   "groundTruthPgn": "[Event \"Spring Open (fictional demo)\"]\n[Date \"2026.05.12\"]\n[White \"A. Rivera (fictional)\"]\n[Black \"M. Okafor (fictional)\"]\n[Result \"1/2-1/2\"]\n[PlyCount \"65\"]\n\n1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. Nbd2 Bb7 12. Bc2 Re8 13. Nf1 Bf8 14. Ng3 g6 15. a4 c5 16. d5 c4 17. Bg5 h6 18. Be3 Nc5 19. Qd2 h5 20. Bg5 Be7 21. Rad1 Qc7 22. Bf4 Rf8 23. Nh2 Nh7 24. Be3 Bf6 25. Nf3 Bg7 26. Qc1 Kh8 27. Bd2 Nf6 28. Nh2 Rae8 29. f4 exf4 30. Bxf4 Nfxe4 31. Nxe4 Nxe4 32. Bxe4 Rxe4 33. Rxe4 1/2-1/2",
   "groundTruthSource": "Self-made synthetic sheet. Moves are the legal prefix of `line` in apps/web/scripts/render-demo-scoresheet.mjs (the script that rendered the image); the image shows exactly these 65 plies.",
   "groundTruthPlies": 65,
   "counts": {
    "correct": 65,
    "wrong": 0,
    "missing": 0,
    "extra": 0
   },
   "flags": {
    "yellow": 0,
    "firstIllegal": 0
   },
   "plies": [
    {
     "moveNo": "1.",
     "expected": "e4",
     "read": "e4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "1...",
     "expected": "e5",
     "read": "e5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2.",
     "expected": "Nf3",
     "read": "Nf3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2...",
     "expected": "Nc6",
     "read": "Nc6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3.",
     "expected": "Bb5",
     "read": "Bb5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3...",
     "expected": "a6",
     "read": "a6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4.",
     "expected": "Ba4",
     "read": "Ba4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4...",
     "expected": "Nf6",
     "read": "Nf6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5.",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5...",
     "expected": "Be7",
     "read": "Be7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6.",
     "expected": "Re1",
     "read": "Re1",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6...",
     "expected": "b5",
     "read": "b5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7.",
     "expected": "Bb3",
     "read": "Bb3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7...",
     "expected": "d6",
     "read": "d6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8.",
     "expected": "c3",
     "read": "c3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8...",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9.",
     "expected": "h3",
     "read": "h3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9...",
     "expected": "Nb8",
     "read": "Nb8",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10.",
     "expected": "d4",
     "read": "d4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10...",
     "expected": "Nbd7",
     "read": "Nbd7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11.",
     "expected": "Nbd2",
     "read": "Nbd2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11...",
     "expected": "Bb7",
     "read": "Bb7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12.",
     "expected": "Bc2",
     "read": "Bc2",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12...",
     "expected": "Re8",
     "read": "Re8",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13.",
     "expected": "Nf1",
     "read": "Nf1",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13...",
     "expected": "Bf8",
     "read": "Bf8",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14.",
     "expected": "Ng3",
     "read": "Ng3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14...",
     "expected": "g6",
     "read": "g6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15.",
     "expected": "a4",
     "read": "a4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15...",
     "expected": "c5",
     "read": "c5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16.",
     "expected": "d5",
     "read": "d5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16...",
     "expected": "c4",
     "read": "c4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17.",
     "expected": "Bg5",
     "read": "Bg5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17...",
     "expected": "h6",
     "read": "h6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18.",
     "expected": "Be3",
     "read": "Be3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18...",
     "expected": "Nc5",
     "read": "Nc5",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19.",
     "expected": "Qd2",
     "read": "Qd2",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19...",
     "expected": "h5",
     "read": "h5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20.",
     "expected": "Bg5",
     "read": "Bg5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20...",
     "expected": "Be7",
     "read": "Be7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21.",
     "expected": "Rad1",
     "read": "Rad1",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21...",
     "expected": "Qc7",
     "read": "Qc7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22.",
     "expected": "Bf4",
     "read": "Bf4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22...",
     "expected": "Rf8",
     "read": "Rf8",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23.",
     "expected": "Nh2",
     "read": "Nh2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23...",
     "expected": "Nh7",
     "read": "Nh7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24.",
     "expected": "Be3",
     "read": "Be3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24...",
     "expected": "Bf6",
     "read": "Bf6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25.",
     "expected": "Nf3",
     "read": "Nf3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25...",
     "expected": "Bg7",
     "read": "Bg7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26.",
     "expected": "Qc1",
     "read": "Qc1",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26...",
     "expected": "Kh8",
     "read": "Kh8",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27.",
     "expected": "Bd2",
     "read": "Bd2",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27...",
     "expected": "Nf6",
     "read": "Nf6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28.",
     "expected": "Nh2",
     "read": "Nh2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28...",
     "expected": "Rae8",
     "read": "Rae8",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29.",
     "expected": "f4",
     "read": "f4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29...",
     "expected": "exf4",
     "read": "exf4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30.",
     "expected": "Bxf4",
     "read": "Bxf4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30...",
     "expected": "Nfxe4",
     "read": "Nfxe4",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "31.",
     "expected": "Nxe4",
     "read": "Nxe4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "31...",
     "expected": "Nxe4",
     "read": "Nxe4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "32.",
     "expected": "Bxe4",
     "read": "Bxe4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "32...",
     "expected": "Rxe4",
     "read": "Rxe4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "33.",
     "expected": "Rxe4",
     "read": "Rxe4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    }
   ]
  },
  {
   "id": "opera-demo",
   "title": "ScanChess demo photo: Morphy v Duke of Brunswick & Count Isouard (Opera Game), 1858",
   "difficulty": "easy",
   "notation": "english",
   "synthetic": true,
   "supportedNotation": true,
   "imageSource": null,
   "imageLicense": "Own work (ScanChess demo sheet, 'DEMO SHEET - not an official tournament scoresheet'). The 1858 game score is public domain.",
   "imageAttribution": "ScanChess demo sheet",
   "groundTruthPgn": "[Event \"Paris, Opera house\"]\n[Date \"1858.??.??\"]\n[White \"Paul Morphy\"]\n[Black \"Duke Karl of Brunswick and Count Isouard\"]\n[Result \"1-0\"]\n[PlyCount \"33\"]\n\n1. e4 e5 2. Nf3 d6 3. d4 Bg4 4. dxe5 Bxf3 5. Qxf3 dxe5 6. Bc4 Nf6 7. Qb3 Qe7 8. Nc3 c6 9. Bg5 b5 10. Nxb5 cxb5 11. Bxb5+ Nbd7 12. O-O-O Rd8 13. Rxd7 Rxd7 14. Rd1 Qe6 15. Bxd7+ Nxd7 16. Qb8+ Nxb8 17. Rd8# 1-0",
   "groundTruthSource": "The Opera Game (Morphy v Duke of Brunswick & Count Isouard, Paris 1858), the standard published score (e.g. chessgames.com gid=1233404). The demo sheet deliberately writes 7...Qe7 so it looks like 'Qe1', 9...b5 like '65', and 14.Rd1 after a struck-out 'Rd8'; the ground truth is the move actually played.",
   "groundTruthPlies": 33,
   "counts": {
    "correct": 33,
    "wrong": 0,
    "missing": 0,
    "extra": 0
   },
   "flags": {
    "yellow": 0,
    "firstIllegal": 0
   },
   "plies": [
    {
     "moveNo": "1.",
     "expected": "e4",
     "read": "e4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "1...",
     "expected": "e5",
     "read": "e5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2.",
     "expected": "Nf3",
     "read": "Nf3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2...",
     "expected": "d6",
     "read": "d6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3.",
     "expected": "d4",
     "read": "d4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3...",
     "expected": "Bg4",
     "read": "Bg4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4.",
     "expected": "dxe5",
     "read": "dxe5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4...",
     "expected": "Bxf3",
     "read": "Bxf3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5.",
     "expected": "Qxf3",
     "read": "Qxf3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5...",
     "expected": "dxe5",
     "read": "dxe5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6.",
     "expected": "Bc4",
     "read": "Bc4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6...",
     "expected": "Nf6",
     "read": "Nf6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7.",
     "expected": "Qb3",
     "read": "Qb3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7...",
     "expected": "Qe7",
     "read": "Qe7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8.",
     "expected": "Nc3",
     "read": "Nc3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8...",
     "expected": "c6",
     "read": "c6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9.",
     "expected": "Bg5",
     "read": "Bg5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9...",
     "expected": "b5",
     "read": "b5",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10.",
     "expected": "Nxb5",
     "read": "Nxb5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10...",
     "expected": "cxb5",
     "read": "cxb5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11.",
     "expected": "Bxb5+",
     "read": "Bxb5+",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11...",
     "expected": "Nbd7",
     "read": "Nbd7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12.",
     "expected": "O-O-O",
     "read": "O-O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12...",
     "expected": "Rd8",
     "read": "Rd8",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13.",
     "expected": "Rxd7",
     "read": "Rxd7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13...",
     "expected": "Rxd7",
     "read": "Rxd7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14.",
     "expected": "Rd1",
     "read": "Rd1",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14...",
     "expected": "Qe6",
     "read": "Qe6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15.",
     "expected": "Bxd7+",
     "read": "Bxd7+",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15...",
     "expected": "Nxd7",
     "read": "Nxd7",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16.",
     "expected": "Qb8+",
     "read": "Qb8+",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16...",
     "expected": "Nxb8",
     "read": "Nxb8",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17.",
     "expected": "Rd8#",
     "read": "Rd8#",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    }
   ]
  },
  {
   "id": "hund-finkenzeller-1973",
   "title": "J. Hund v Finkenzeller, Berliner Silvesterturnier 1973, round 1",
   "difficulty": "medium",
   "notation": "german",
   "synthetic": false,
   "supportedNotation": true,
   "imageSource": "https://commons.wikimedia.org/wiki/File:Hund,J.-Finkenzeller_Silvester_-1973.jpg",
   "imageLicense": "CC BY-SA 4.0",
   "imageAttribution": "Photo: GFHund, Wikimedia Commons, CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/). Resized for this benchmark.",
   "groundTruthPgn": "[Event \"Berliner Silvesterturnier 1973, round 1\"]\n[Date \"1973.12.??\"]\n[White \"Juliane Hund\"]\n[Black \"Finkenzeller\"]\n[Result \"1-0\"]\n[PlyCount \"45\"]\n\n1. c4 Nf6 2. Nc3 c6 3. g3 d5 4. cxd5 cxd5 5. Bg2 e6 6. d4 Be7 7. Nf3 Nc6 8. O-O O-O 9. Bf4 a6 10. Rc1 b5 11. Nxb5 axb5 12. Rxc6 Ne8 13. Qb3 Bb7 14. Rc2 Qb6 15. Rfc1 Bd6 16. Bd2 Nf6 17. Bb4 Bxb4 18. Qxb4 Nd7 19. a3 Rfc8 20. Nd2 Rxc2 21. Rxc2 Ra4 22. Qe7 Nf8 23. Rc7 1-0",
   "groundTruthSource": "No published score found. Transcribed from the Commons photo at full resolution (2137x3035), replayed legally with chess.js, and checked against a second, independent transcription made without seeing the first; the two matched on all 45 plies. Black resigned after 23.Rc7 ('aufgg.').",
   "groundTruthPlies": 45,
   "counts": {
    "correct": 43,
    "wrong": 2,
    "missing": 0,
    "extra": 0
   },
   "flags": {
    "yellow": 0,
    "firstIllegal": 1
   },
   "plies": [
    {
     "moveNo": "1.",
     "expected": "c4",
     "read": "c4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "1...",
     "expected": "Nf6",
     "read": "Nf6",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2.",
     "expected": "Nc3",
     "read": "Nc3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2...",
     "expected": "c6",
     "read": "c6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3.",
     "expected": "g3",
     "read": "g3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3...",
     "expected": "d5",
     "read": "d5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4.",
     "expected": "cxd5",
     "read": "cxd5",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4...",
     "expected": "cxd5",
     "read": "cxd5",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5.",
     "expected": "Bg2",
     "read": "Bg2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5...",
     "expected": "e6",
     "read": "e6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6.",
     "expected": "d4",
     "read": "d4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6...",
     "expected": "Be7",
     "read": "Be7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7.",
     "expected": "Nf3",
     "read": "Nf3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7...",
     "expected": "Nc6",
     "read": "Nc6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8.",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8...",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9.",
     "expected": "Bf4",
     "read": "Bf4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9...",
     "expected": "a6",
     "read": "a6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10.",
     "expected": "Rc1",
     "read": "Rc1",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10...",
     "expected": "b5",
     "read": "b5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11.",
     "expected": "Nxb5",
     "read": "Nxb5",
     "confidence": 0.97,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11...",
     "expected": "axb5",
     "read": "axb5",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12.",
     "expected": "Rxc6",
     "read": "Rxc6",
     "confidence": 0.97,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12...",
     "expected": "Ne8",
     "read": "Ne8",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13.",
     "expected": "Qb3",
     "read": "Qb3",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13...",
     "expected": "Bb7",
     "read": "Bb7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14.",
     "expected": "Rc2",
     "read": "Rc2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14...",
     "expected": "Qb6",
     "read": "Qb6",
     "confidence": 0.97,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15.",
     "expected": "Rfc1",
     "read": "Rfc1",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15...",
     "expected": "Bd6",
     "read": "Bd6",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16.",
     "expected": "Bd2",
     "read": "Bd2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16...",
     "expected": "Nf6",
     "read": "Nf6",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17.",
     "expected": "Bb4",
     "read": "Bf4",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17...",
     "expected": "Bxb4",
     "read": "Bxf4",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18.",
     "expected": "Qxb4",
     "read": "Qxb4",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": true
    },
    {
     "moveNo": "18...",
     "expected": "Nd7",
     "read": "Nd7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19.",
     "expected": "a3",
     "read": "a3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19...",
     "expected": "Rfc8",
     "read": "Rfc8",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20.",
     "expected": "Nd2",
     "read": "Nd2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20...",
     "expected": "Rxc2",
     "read": "Rxc2",
     "confidence": 0.97,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21.",
     "expected": "Rxc2",
     "read": "Rxc2",
     "confidence": 0.97,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21...",
     "expected": "Ra4",
     "read": "Ra4",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22.",
     "expected": "Qe7",
     "read": "Qe7",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22...",
     "expected": "Nf8",
     "read": "Nf8",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23.",
     "expected": "Rc7",
     "read": "Rc7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    }
   ]
  },
  {
   "id": "reti-capablanca-1924",
   "title": "R. Reti v J. R. Capablanca, New York 1924, round 5",
   "difficulty": "hard",
   "notation": "german",
   "synthetic": false,
   "supportedNotation": true,
   "imageSource": "https://commons.wikimedia.org/wiki/File:Planilha_R%C3%A9ti_e_Capablanca.gif",
   "imageLicense": "Public domain (Wikimedia Commons: PD-old; 1924 manuscript, writer probably Reti, d. 1929)",
   "imageAttribution": "Score-sheet via Wikimedia Commons (public domain)",
   "groundTruthPgn": "[Event \"New York 1924, round 5\"]\n[Date \"1924.03.22\"]\n[White \"Richard Reti\"]\n[Black \"Jose Raul Capablanca\"]\n[Result \"1-0\"]\n[PlyCount \"61\"]\n\n1. Nf3 Nf6 2. c4 g6 3. b4 Bg7 4. Bb2 O-O 5. g3 b6 6. Bg2 Bb7 7. O-O d6 8. d3 Nbd7 9. Nbd2 e5 10. Qc2 Re8 11. Rfd1 a5 12. a3 h6 13. Nf1 c5 14. b5 Nf8 15. e3 Qc7 16. d4 Be4 17. Qc3 exd4 18. exd4 N6d7 19. Qd2 cxd4 20. Bxd4 Qxc4 21. Bxg7 Kxg7 22. Qb2+ Kg8 23. Rxd6 Qc5 24. Rad1 Ra7 25. Ne3 Qh5 26. Nd4 Bxg2 27. Kxg2 Qe5 28. Nc4 Qc5 29. Nc6 Rc7 30. Ne3 Ne5 31. R1d5 1-0",
   "groundTruthSource": "chessgames.com gid=1102101 (PGN download, PlyCount 61). Matches the sheet's 31.Td1-d5 and Black's 'Aufgegeben'.",
   "groundTruthPlies": 61,
   "counts": {
    "correct": 40,
    "wrong": 21,
    "missing": 0,
    "extra": 1
   },
   "flags": {
    "yellow": 0,
    "firstIllegal": 1
   },
   "plies": [
    {
     "moveNo": "1.",
     "expected": "Nf3",
     "read": "Nf3",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "1...",
     "expected": "Nf6",
     "read": "Nf6",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2.",
     "expected": "c4",
     "read": "c4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2...",
     "expected": "g6",
     "read": "g6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3.",
     "expected": "b4",
     "read": "b4",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3...",
     "expected": "Bg7",
     "read": "Bg7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4.",
     "expected": "Bb2",
     "read": "Bb2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4...",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5.",
     "expected": "g3",
     "read": "g3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5...",
     "expected": "b6",
     "read": "b6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6.",
     "expected": "Bg2",
     "read": "Bg2",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6...",
     "expected": "Bb7",
     "read": "Bb7",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7.",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7...",
     "expected": "d6",
     "read": "d6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8.",
     "expected": "d3",
     "read": "d3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8...",
     "expected": "Nbd7",
     "read": "Nbd7",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9.",
     "expected": "Nbd2",
     "read": "Nbd2",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9...",
     "expected": "e5",
     "read": "e5",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10.",
     "expected": "Qc2",
     "read": "Qc2",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10...",
     "expected": "Re8",
     "read": "Re8",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11.",
     "expected": "Rfd1",
     "read": "Rfd1",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11...",
     "expected": "a5",
     "read": "a5",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12.",
     "expected": "a3",
     "read": "a3",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12...",
     "expected": "h6",
     "read": "h6",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13.",
     "expected": "Nf1",
     "read": "Nf1",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13...",
     "expected": "c5",
     "read": "Nf8",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14.",
     "expected": "b5",
     "read": "Nb3",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": true
    },
    {
     "moveNo": "14...",
     "expected": "Nf8",
     "read": "axb4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15.",
     "expected": "e3",
     "read": "e3",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15...",
     "expected": "Qc7",
     "read": "Qc7",
     "confidence": 0.92,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16.",
     "expected": "d4",
     "read": "d4",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16...",
     "expected": "Be4",
     "read": "Be6",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17.",
     "expected": "Qc3",
     "read": "Nc3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17...",
     "expected": "exd4",
     "read": "c6",
     "confidence": 0.99,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18.",
     "expected": "exd4",
     "read": "cxd",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18...",
     "expected": "N6d7",
     "read": "Nfd7",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19.",
     "expected": "Qd2",
     "read": "Bd2",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19...",
     "expected": "cxd4",
     "read": "fxd",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20.",
     "expected": "Bxd4",
     "read": "Bxd4",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20...",
     "expected": "Qxc4",
     "read": "Bxe7",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21.",
     "expected": "Bxg7",
     "read": "Bxg7",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21...",
     "expected": "Kxg7",
     "read": "Kxg7",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22.",
     "expected": "Qb2+",
     "read": "Bd2+",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22...",
     "expected": "Kg8",
     "read": "Kg8",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23.",
     "expected": "Rxd6",
     "read": "Rxa1",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23...",
     "expected": "Qc5",
     "read": "Rxa1",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24.",
     "expected": "Rad1",
     "read": "Rad1",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24...",
     "expected": "Ra7",
     "read": "Ra5",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25.",
     "expected": "Ne3",
     "read": "Ne1",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25...",
     "expected": "Qh5",
     "read": "Qa5",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26.",
     "expected": "Nd4",
     "read": "Nd1",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26...",
     "expected": "Bxg2",
     "read": "Bxg2",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27.",
     "expected": "Kxg2",
     "read": "Kxg2",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27...",
     "expected": "Qe5",
     "read": "Qe5",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28.",
     "expected": "Nc4",
     "read": "Nc3",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28...",
     "expected": "Qc5",
     "read": "f5",
     "confidence": 0.99,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29.",
     "expected": "Nc6",
     "read": "Nc6",
     "confidence": 0.92,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29...",
     "expected": "Rc7",
     "read": "Ra7",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30.",
     "expected": "Ne3",
     "read": "Ne3",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30...",
     "expected": "Ne5",
     "read": "Ne5",
     "confidence": 0.95,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "31.",
     "expected": "R1d5",
     "read": "Rd1-d5",
     "confidence": 0.9,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": null,
     "expected": null,
     "read": "Resigns",
     "confidence": 0.95,
     "status": "extra",
     "flaggedYellow": false,
     "firstIllegal": false
    }
   ]
  },
  {
   "id": "eisenberg-capablanca-1909",
   "title": "L. R. Eisenberg v J. R. Capablanca, New York (Rice Chess Club), 15 April 1909",
   "difficulty": "hard",
   "notation": "descriptive",
   "synthetic": false,
   "supportedNotation": false,
   "imageSource": "https://commons.wikimedia.org/wiki/File:Planilha_Eisenberg_e_Capablanca.jpg",
   "imageLicense": "Public domain (Wikimedia Commons: PD-old; Capablanca's manuscript, d. 1942)",
   "imageAttribution": "Capablanca's score-sheet, Edward Winter collection, via Wikimedia Commons (public domain)",
   "groundTruthPgn": "[Event \"Rice Chess Club, New York\"]\n[Date \"1909.04.15\"]\n[White \"Louis R. Eisenberg\"]\n[Black \"Jose Raul Capablanca\"]\n[Result \"0-1\"]\n[PlyCount \"126\"]\n\n1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 bxc6 8. Be2 h6 9. Nf3 e4 10. Ne5 Qd4 11. f4 Bc5 12. Rf1 Bb6 13. c3 Qd6 14. b4 Nb7 15. Qa4 Bd7 16. Na3 O-O 17. Nac4 Qc7 18. Nxd7 Nxd7 19. Qc2 Rfe8 20. a4 a5 21. Rb1 Rad8 22. Qb3 Ba7 23. Ba3 axb4 24. cxb4 c5 25. b5 Na5 26. Nxa5 Qxa5 27. Bb2 Nb6 28. Qc3 Qxc3 29. Bxc3 Nxa4 30. Be5 Bb8 31. b6 Re6 32. Bc7 Rf8 33. Bd1 Bxc7 34. bxc7 Rb6 35. Ra1 Nb2 36. Bg4 Rc6 37. c8=Q Rfxc8 38. Bxc8 Rxc8 39. Ke2 Rd8 40. g3 Kh7 41. f5 Nc4 42. Ra2 Rd5 43. g4 Ne5 44. Rf4 Nd3 45. Rf1 Ne5 46. Ra4 c4 47. h3 Nf3 48. Rxc4 Rxd2+ 49. Ke3 Rh2 50. Rd1 Ng5 51. Rd8 Rxh3+ 52. Ke2 Rh2+ 53. Ke3 Rh3+ 54. Kd2 g6 55. f6 e3+ 56. Ke2 Ne6 57. Rd7 g5 58. Rxf7+ Kg6 59. Re7 Kxf6 60. Rxe6+ Kxe6 61. Re4+ Kd5 62. Rxe3 Rxe3+ 63. Kxe3 Ke5 0-1",
   "groundTruthSource": "Edward Winter, Chess Notes C.N. 4551 (chesshistory.com/winter/winter25.html), transcribed from this same score-sheet; also Kings, Commoners and Knaves pp. 65-66. White resigned after 63...Ke5.",
   "groundTruthPlies": 126,
   "counts": {
    "correct": 1,
    "wrong": 70,
    "missing": 55,
    "extra": 0
   },
   "flags": {
    "yellow": 2,
    "firstIllegal": 1
   },
   "plies": [
    {
     "moveNo": "1.",
     "expected": "e4",
     "read": "P-K4",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": true
    },
    {
     "moveNo": "1...",
     "expected": "e5",
     "read": "P-K4",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2.",
     "expected": "Nf3",
     "read": "Kt-KB3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2...",
     "expected": "Nc6",
     "read": "Kt-QB3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3.",
     "expected": "Bc4",
     "read": "B-B4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3...",
     "expected": "Nf6",
     "read": "Kt-B3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4.",
     "expected": "Ng5",
     "read": "Kt-Kt5",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4...",
     "expected": "d5",
     "read": "P-Q4",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5.",
     "expected": "exd5",
     "read": "PxP",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5...",
     "expected": "Na5",
     "read": "Kt-R4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6.",
     "expected": "Bb5+",
     "read": "B-Kt5+",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6...",
     "expected": "c6",
     "read": "P-B3",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7.",
     "expected": "dxc6",
     "read": "PxP",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7...",
     "expected": "bxc6",
     "read": "PxP",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8.",
     "expected": "Be2",
     "read": "B-K2",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8...",
     "expected": "h6",
     "read": "P-KR3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9.",
     "expected": "Nf3",
     "read": "Kt-B3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9...",
     "expected": "e4",
     "read": "P-K5",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10.",
     "expected": "Ne5",
     "read": "Kt-K5",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10...",
     "expected": "Qd4",
     "read": "Q-Q5",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11.",
     "expected": "f4",
     "read": "P-KB4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11...",
     "expected": "Bc5",
     "read": "B-B4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12.",
     "expected": "Rf1",
     "read": "R-B",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12...",
     "expected": "Bb6",
     "read": "B-KKt3",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "13.",
     "expected": "c3",
     "read": "P-B3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13...",
     "expected": "Qd6",
     "read": "Q-Q2",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14.",
     "expected": "b4",
     "read": "P-QKt4",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14...",
     "expected": "Nb7",
     "read": "Kt-Kt2",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15.",
     "expected": "Qa4",
     "read": "Q-R4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15...",
     "expected": "Bd7",
     "read": "B-Q2",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16.",
     "expected": "Na3",
     "read": "Kt-R3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16...",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.98,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17.",
     "expected": "Nac4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17...",
     "expected": "Qc7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18.",
     "expected": "Nxd7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18...",
     "expected": "Nxd7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19.",
     "expected": "Qc2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19...",
     "expected": "Rfe8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20.",
     "expected": "a4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20...",
     "expected": "a5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21.",
     "expected": "Rb1",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21...",
     "expected": "Rad8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22.",
     "expected": "Qb3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22...",
     "expected": "Ba7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23.",
     "expected": "Ba3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23...",
     "expected": "axb4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24.",
     "expected": "cxb4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24...",
     "expected": "c5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25.",
     "expected": "b5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25...",
     "expected": "Na5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26.",
     "expected": "Nxa5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26...",
     "expected": "Qxa5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27.",
     "expected": "Bb2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27...",
     "expected": "Nb6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28.",
     "expected": "Qc3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28...",
     "expected": "Qxc3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29.",
     "expected": "Bxc3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29...",
     "expected": "Nxa4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30.",
     "expected": "Be5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30...",
     "expected": "Bb8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "31.",
     "expected": "b6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "31...",
     "expected": "Re6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "32.",
     "expected": "Bc7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "32...",
     "expected": "Rf8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "33.",
     "expected": "Bd1",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "33...",
     "expected": "Bxc7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "34.",
     "expected": "bxc7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "34...",
     "expected": "Rb6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "35.",
     "expected": "Ra1",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "35...",
     "expected": "Nb2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "36.",
     "expected": "Bg4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "36...",
     "expected": "Rc6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "37.",
     "expected": "c8=Q",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "37...",
     "expected": "Rfxc8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "38.",
     "expected": "Bxc8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "38...",
     "expected": "Rxc8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "39.",
     "expected": "Ke2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "39...",
     "expected": "Rd8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "40.",
     "expected": "g3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "40...",
     "expected": "Kh7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "41.",
     "expected": "f5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "41...",
     "expected": "Nc4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "42.",
     "expected": "Ra2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "42...",
     "expected": "Rd5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "43.",
     "expected": "g4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "43...",
     "expected": "Ne5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "44.",
     "expected": "Rf4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "44...",
     "expected": "Nd3",
     "read": "Kt(R3) B4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "45.",
     "expected": "Rf1",
     "read": "Q-B2",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "45...",
     "expected": "Ne5",
     "read": "KtxB",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "46.",
     "expected": "Ra4",
     "read": "KtxKt",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "46...",
     "expected": "c4",
     "read": "Q-B2",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "47.",
     "expected": "h3",
     "read": "KR-K",
     "confidence": 0.88,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "47...",
     "expected": "Nf3",
     "read": "Q-QKt2",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "48.",
     "expected": "Rxc4",
     "read": "P-QR4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "48...",
     "expected": "Rxd2+",
     "read": "P-QR4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "49.",
     "expected": "Ke3",
     "read": "QR-Q",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "49...",
     "expected": "Rh2",
     "read": "Q-Kt3",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "50.",
     "expected": "Rd1",
     "read": "B-R2",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "50...",
     "expected": "Ng5",
     "read": "B-R3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "51.",
     "expected": "Rd8",
     "read": "PxP",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "51...",
     "expected": "Rxh3+",
     "read": "PxP",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "52.",
     "expected": "Ke2",
     "read": "P-B4",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "52...",
     "expected": "Rh2+",
     "read": "P-Kt5",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "53.",
     "expected": "Ke3",
     "read": "Kt-R4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "53...",
     "expected": "Rh3+",
     "read": "KtxKt",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "54.",
     "expected": "Kd2",
     "read": "QxKt",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "54...",
     "expected": "g6",
     "read": "B-Kt2",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "55.",
     "expected": "f6",
     "read": "Kt-Kt3",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "55...",
     "expected": "e3+",
     "read": "Q-B3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "56.",
     "expected": "Ke2",
     "read": "QxQ",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "56...",
     "expected": "Ne6",
     "read": "BxQ",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "57.",
     "expected": "Rd7",
     "read": "KtxP",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "57...",
     "expected": "g5",
     "read": "R-K5",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "58.",
     "expected": "Rxf7+",
     "read": "B-Kt5",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "58...",
     "expected": "Kg6",
     "read": "B-Kt6",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "59.",
     "expected": "Re7",
     "read": "R-K3",
     "confidence": 0.92,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "59...",
     "expected": "Kxf6",
     "read": "B-B7",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "60.",
     "expected": "Rxe6+",
     "read": "R-KB",
     "confidence": 0.88,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "60...",
     "expected": "Kxe6",
     "read": "B-Q",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "61.",
     "expected": "Re4+",
     "read": "BxB",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "61...",
     "expected": "Kd5",
     "read": "PxB",
     "confidence": 0.98,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "62.",
     "expected": "Rxe3",
     "read": "R-QR3",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "62...",
     "expected": "Rxe3+",
     "read": "Q-QR",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "63.",
     "expected": "Kxe3",
     "read": "Kt-Kt7",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "63...",
     "expected": "Ke5",
     "read": "Resigns",
     "confidence": 0.99,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    }
   ]
  },
  {
   "id": "fischer-najdorf-1970",
   "title": "R. J. Fischer v M. Najdorf, Siegen Olympiad 1970, Final A round 3",
   "difficulty": "hard",
   "notation": "descriptive",
   "synthetic": false,
   "supportedNotation": false,
   "imageSource": "https://commons.wikimedia.org/wiki/File:Fischer_Score_Card.jpg",
   "imageLicense": "Public domain (Wikimedia Commons: PD-ineligible; uploader: 'I own the score sheet, I took this picture, I release the picture to be used for any purpose.')",
   "imageAttribution": "Score-sheet scan via Wikimedia Commons (public domain)",
   "groundTruthPgn": "[Event \"Siegen Olympiad Final-A, round 3\"]\n[Date \"1970.09.16\"]\n[White \"Robert James Fischer\"]\n[Black \"Miguel Najdorf\"]\n[Result \"1-0\"]\n[PlyCount \"96\"]\n\n1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Bd3 Nf6 6. O-O d6 7. c4 Bd7 8. Nc3 Nc6 9. Be3 Be7 10. h3 Ne5 11. Be2 Rc8 12. Qb3 Qc7 13. Rac1 O-O 14. f4 Nc6 15. Nf3 Qb8 16. Qd1 Be8 17. Qd2 Na5 18. b3 b6 19. Bd3 Nc6 20. Qf2 b5 21. Rfd1 Nb4 22. Bf1 bxc4 23. bxc4 a5 24. Nd4 Qa8 25. Qf3 Na6 26. Ndb5 Nc5 27. e5 dxe5 28. Qxa8 Rxa8 29. fxe5 Nfe4 30. Nd6 Bc6 31. Ncxe4 Nxe4 32. c5 Ng3 33. Bc4 h5 34. Bf2 h4 35. Bxg3 hxg3 36. Bb5 Bxb5 37. Nxb5 f6 38. Rd7 Bd8 39. Rc3 fxe5 40. Rxg3 Rf7 41. Rxf7 Kxf7 42. c6 Bb6+ 43. Kf1 Kf8 44. c7 Rc8 45. a4 e4 46. Ke2 e5 47. Rg6 Bd4 48. h4 Bb2 1-0",
   "groundTruthSource": "chessgames.com gid=1044320 (PGN download, PlyCount 96).",
   "groundTruthPlies": 96,
   "counts": {
    "correct": 2,
    "wrong": 68,
    "missing": 26,
    "extra": 0
   },
   "flags": {
    "yellow": 22,
    "firstIllegal": 1
   },
   "plies": [
    {
     "moveNo": "1.",
     "expected": "e4",
     "read": "P-K4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": true
    },
    {
     "moveNo": "1...",
     "expected": "c5",
     "read": "P-QB4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2.",
     "expected": "Nf3",
     "read": "N-KB3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "2...",
     "expected": "e6",
     "read": "P-Q3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3.",
     "expected": "d4",
     "read": "P-Q4",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "3...",
     "expected": "cxd4",
     "read": "PxP",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4.",
     "expected": "Nxd4",
     "read": "NxP",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "4...",
     "expected": "a6",
     "read": "P-QR3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5.",
     "expected": "Bd3",
     "read": "B-Q3",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "5...",
     "expected": "Nf6",
     "read": "N-KB3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6.",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "6...",
     "expected": "d6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7.",
     "expected": "c4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "7...",
     "expected": "Bd7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8.",
     "expected": "Nc3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "8...",
     "expected": "Nc6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9.",
     "expected": "Be3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "9...",
     "expected": "Be7",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10.",
     "expected": "h3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "10...",
     "expected": "Ne5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11.",
     "expected": "Be2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "11...",
     "expected": "Rc8",
     "read": "P-K4",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12.",
     "expected": "Qb3",
     "read": "P-QB4",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "12...",
     "expected": "Qc7",
     "read": "B-K2",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13.",
     "expected": "Rac1",
     "read": "N-QB3",
     "confidence": 0.95,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "13...",
     "expected": "O-O",
     "read": "O-O",
     "confidence": 0.99,
     "status": "correct",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14.",
     "expected": "f4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "14...",
     "expected": "Nc6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15.",
     "expected": "Nf3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "15...",
     "expected": "Qb8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16.",
     "expected": "Qd1",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "16...",
     "expected": "Be8",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17.",
     "expected": "Qd2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "17...",
     "expected": "Na5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18.",
     "expected": "b3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "18...",
     "expected": "b6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19.",
     "expected": "Bd3",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "19...",
     "expected": "Nc6",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20.",
     "expected": "Qf2",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "20...",
     "expected": "b5",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21.",
     "expected": "Rfd1",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "21...",
     "expected": "Nb4",
     "read": null,
     "confidence": null,
     "status": "missing",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22.",
     "expected": "Bf1",
     "read": "B-K3",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "22...",
     "expected": "bxc4",
     "read": "B-K3",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23.",
     "expected": "bxc4",
     "read": "P-KR3",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "23...",
     "expected": "a5",
     "read": "N-R4",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24.",
     "expected": "Nd4",
     "read": "B-K2",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "24...",
     "expected": "Qa8",
     "read": "R-B1",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25.",
     "expected": "Qf3",
     "read": "Q-Q2",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "25...",
     "expected": "Na6",
     "read": "Q-B2",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26.",
     "expected": "Ndb5",
     "read": "P-B4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "26...",
     "expected": "Nc5",
     "read": "Q-K1",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "27.",
     "expected": "e5",
     "read": "N-B3",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "27...",
     "expected": "dxe5",
     "read": "N-B3",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "28.",
     "expected": "Qxa8",
     "read": "Q-B2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "28...",
     "expected": "Rxa8",
     "read": "N-R4",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "29.",
     "expected": "fxe5",
     "read": "B-Q3",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "29...",
     "expected": "Nfe4",
     "read": "P-N3",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "30.",
     "expected": "Nd6",
     "read": "P-R4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "30...",
     "expected": "Bc6",
     "read": "P-N3",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "31.",
     "expected": "Ncxe4",
     "read": "P-R5",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "31...",
     "expected": "Nxe4",
     "read": "P-R4",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "32.",
     "expected": "c5",
     "read": "R-B1",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "32...",
     "expected": "Ng3",
     "read": "R-B1",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "33.",
     "expected": "Bc4",
     "read": "P-QN3",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "33...",
     "expected": "h5",
     "read": "B-Q2",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "34.",
     "expected": "Bf2",
     "read": "B-N1",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "34...",
     "expected": "h4",
     "read": "Q-N2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "35.",
     "expected": "Bxg3",
     "read": "R-B2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "35...",
     "expected": "hxg3",
     "read": "PxP",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "36.",
     "expected": "Bb5",
     "read": "PxP",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "36...",
     "expected": "Bxb5",
     "read": "Q-R1",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "37.",
     "expected": "Nxb5",
     "read": "B-B2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "37...",
     "expected": "f6",
     "read": "R-R2",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "38.",
     "expected": "Rd7",
     "read": "Q-N2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "38...",
     "expected": "Bd8",
     "read": "B-B3",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "39.",
     "expected": "Rc3",
     "read": "B-B1",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "39...",
     "expected": "fxe5",
     "read": "B-N4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "40.",
     "expected": "Rxg3",
     "read": "PxB",
     "confidence": 0.9,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "40...",
     "expected": "Rf7",
     "read": "B-B1",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "41.",
     "expected": "Rxf7",
     "read": "B-R3",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "41...",
     "expected": "Kxf7",
     "read": "PxP",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "42.",
     "expected": "c6",
     "read": "PxP",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "42...",
     "expected": "Bb6+",
     "read": "R-R1",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "43.",
     "expected": "Kf1",
     "read": "R-B1",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "43...",
     "expected": "Kf8",
     "read": "B-R3",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "44.",
     "expected": "c7",
     "read": "Q-B2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "44...",
     "expected": "Rc8",
     "read": "R-R3",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "45.",
     "expected": "a4",
     "read": "N-N2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "45...",
     "expected": "e4",
     "read": "R-K1",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "46.",
     "expected": "Ke2",
     "read": "B-N4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "46...",
     "expected": "e5",
     "read": "B-B2",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "47.",
     "expected": "Rg6",
     "read": "B-Q5",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "47...",
     "expected": "Bd4",
     "read": "R-B4",
     "confidence": 0.85,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    },
    {
     "moveNo": "48.",
     "expected": "h4",
     "read": "B-N7",
     "confidence": 0.8,
     "status": "wrong",
     "flaggedYellow": true,
     "firstIllegal": false
    },
    {
     "moveNo": "48...",
     "expected": "Bb2",
     "read": "Resigns",
     "confidence": 0.99,
     "status": "wrong",
     "flaggedYellow": false,
     "firstIllegal": false
    }
   ]
  }
 ],
 "negativeControls": [
  {
   "id": "blank-zapis-partii",
   "title": "Blank Polish scoresheet form 'Zapis partii szachowej'",
   "imageSource": "https://commons.wikimedia.org/wiki/File:Chess_Score_Sheet.jpg",
   "imageLicense": "Public domain (PD-self, photo by Przemyslaw Jahr; form design by Pawel Jaroch)",
   "imageAttribution": "Przemyslaw Jahr / Wikimedia Commons (the author asks to be credited)",
   "outcome": "refused: no moves on the sheet",
   "movesInvented": 0
  },
  {
   "id": "blank-anotacion-027",
   "title": "Blank Spanish scoresheet form (Coldeportes 'Anotacion 027')",
   "imageSource": "https://commons.wikimedia.org/wiki/File:Anotaci%C3%B3n_027.jpg",
   "imageLicense": "CC BY-SA 2.5 Colombia (author EVD, credit Coldeportes)",
   "imageAttribution": "EVD / Coldeportes, Wikimedia Commons, CC BY-SA 2.5 CO",
   "outcome": "refused: no moves on the sheet",
   "movesInvented": 0
  }
 ]
}