{"status":"partial","document_type":"bank_statement","fields":{"period_end":{"value":"2026-04-30","confidence":0.95,"source":{"page":1,"text_span":[120,130],"bbox":[202.58998107910156,102.45001220703125,253.72996520996094,116.19001007080078]}},"account_holder":{"value":"Contoso Retail LLC (sample)","confidence":0.95,"source":{"page":1,"text_span":[42,69],"bbox":[129.75999450683594,74.45001220703125,258.1299743652344,88.19001007080078]}},"account_number":{"value":"4821","confidence":0.95,"source":{"page":1,"text_span":[83,87],"bbox":[110.8699951171875,88.45001220703125,133.1099853515625,102.19001007080078]}},"opening_balance":{"value":5000,"confidence":0.95,"source":{"page":1,"text_span":[163,171],"bbox":[142.55999755859375,130.45001220703125,181.47998046875,144.1900177001953]}},"period_start":{"value":"2026-04-01","confidence":0.95,"source":{"page":1,"text_span":[106,116],"bbox":[137.5500030517578,102.45001220703125,188.6899871826172,116.19001007080078]}},"currency":{"value":"USD","confidence":0.95,"source":{"page":1,"text_span":[141,144],"bbox":[99.21000671386719,116.45001220703125,120.32000732421875,130.1900177001953]}},"closing_balance":{"value":-1293.83,"confidence":0.95,"source":{"page":1,"text_span":[1353,1362],"bbox":[461.0039978027344,640.5250244140625,499.0290222167969,652.8909912109375]}}},"tables":[{"name":"transactions","rows":[{"date":"2026-04-03","description":"Card Purchase #001","debit":325.9,"credit":null,"running_balance":4674.1,"amount":-325.9},{"date":"2026-04-04","description":"Card Purchase #002","debit":387.98,"credit":null,"running_balance":4286.12,"amount":-387.98},{"date":"2026-04-05","description":"Card Purchase #003","debit":695.74,"credit":null,"running_balance":3590.38,"amount":-695.74},{"date":"2026-04-07","description":"Direct Deposit #004","debit":null,"credit":445.34,"running_balance":4035.72,"amount":445.34},{"date":"2026-04-08","description":"Card Purchase #005","debit":707.62,"credit":null,"running_balance":3328.1,"amount":-707.62},{"date":"2026-04-09","description":"Direct Deposit #006","debit":null,"credit":284.85,"running_balance":3612.95,"amount":284.85},{"date":"2026-04-10","description":"Card Purchase #007","debit":110.24,"credit":null,"running_balance":3502.71,"amount":-110.24},{"date":"2026-04-11","description":"Card Purchase #008","debit":758.86,"credit":null,"running_balance":2743.85,"amount":-758.86},{"date":"2026-04-12","description":"Card Purchase #009","debit":390.82,"credit":null,"running_balance":2353.03,"amount":-390.82},{"date":"2026-04-14","description":"Card Purchase #010","debit":462.79,"credit":null,"running_balance":1890.24,"amount":-462.79},{"date":"2026-04-15","description":"Direct Deposit #011","debit":null,"credit":525.98,"running_balance":2416.22,"amount":525.98},{"date":"2026-04-16","description":"Card Purchase #012","debit":524.75,"credit":null,"running_balance":1891.47,"amount":-524.75},{"date":"2026-04-18","description":"Card Purchase #013","debit":229.52,"credit":null,"running_balance":1661.95,"amount":-229.52},{"date":"2026-04-20","description":"Direct Deposit #014","debit":null,"credit":581.2,"running_balance":2343.15,"amount":581.2},{"date":"2026-04-22","description":"Card Purchase #015","debit":738.51,"credit":null,"running_balance":1504.64,"amount":-738.51},{"date":"2026-04-24","description":"Card Purchase #016","debit":403.43,"credit":null,"running_balance":1101.21,"amount":-403.43},{"date":"2026-04-25","description":"Card Purchase #017","debit":512.56,"credit":null,"running_balance":588.65,"amount":-512.56},{"date":"2026-04-27","description":"Card Purchase #018","debit":270.26,"credit":null,"running_balance":318.39,"amount":-270.26},{"date":"2026-04-28","description":"Direct Deposit #019","debit":null,"credit":132.35,"running_balance":450.74,"amount":132.35},{"date":"2026-04-28","description":"Card Purchase #020","debit":576.96,"credit":null,"running_balance":-126.22,"amount":-576.96},{"date":"2026-04-28","description":"Card Purchase #021","debit":770.36,"credit":null,"running_balance":-896.58,"amount":-770.36},{"date":"2026-04-28","description":"Card Purchase #022","debit":229.13,"credit":null,"running_balance":-1125.71,"amount":-229.13},{"date":"2026-04-28","description":"Card Purchase #023","debit":432.62,"credit":null,"running_balance":-1558.33,"amount":-432.62},{"date":"2026-04-28","description":"Direct Deposit #024","debit":null,"credit":264.5,"running_balance":-1293.83,"amount":264.5}],"row_count_expected":24,"row_count_extracted":24,"row_count_detection_available":true}],"checks":[{"id":"pages_complete","name":"All pages processed","passed":true,"expected":1,"actual":1},{"id":"required_fields_present","name":"Required fields present","passed":true,"expected":["account_number","period_start","period_end","opening_balance","closing_balance"],"actual":["account_number","period_start","period_end","opening_balance","closing_balance"]},{"id":"low_confidence","name":"Field confidence above threshold","passed":true,"expected":">= 0.5","actual":[]},{"id":"date_sanity","name":"Dates are parseable and plausible","passed":true},{"id":"currency_consistency","name":"Currency is consistent across fields","passed":true,"expected":1,"actual":1},{"id":"table_row_count_reconciliation","name":"Row count reconciles for table \"transactions\"","passed":true,"expected":24,"actual":24},{"id":"bank_balance_reconciliation","name":"Opening + transactions = closing","passed":true,"expected":-1293.83,"actual":-1293.83},{"id":"running_balance_continuity","name":"Running balance follows from each transaction","passed":false,"detail":"Discontinuity at row index 13."}],"pages":{"total":1,"processed":1,"sizes":[{"page":1,"width":612,"height":792}]},"warnings":["'account_number': printed value is masked on the document ('****4821'); reporting the visible portion ('4821') as the field value, not the masking characters"],"reasons":[{"code":"RUNNING_BALANCE_DISCONTINUITY","message":"Transaction 14: printed balance is 2343.15, but the previous balance 1661.95 + 581.20 = 2243.15. The next balance continues from 2243.15, so this row's printed balance is off by 100.00."}],"engine":{"name":"homelab-python-engine","model":"qwen3.6","version":"0.1.0","duration_ms":14943}}