January Statement Verification Tracker

Live HTML view of /home/adamsl/rol_finances/readable_documents/bank_statements/january/verification_tracker.md.

Purpose: keep statement verification status, blockers, and next actions visible from the dashboard so we are literally on the same page.

11Workflow Done
2In Progress
2Final Fail
11Final Pass
13Tracked Statements

Verification Table

StatementReport PathMath CheckDB PresenceDuplicate CheckVendor Key Status (Strict)Category StatusFinal StatusWorkflow StatusCleanup StatusBlockersNext ActionLast Updated
december_january_personal_bank_statement.pdfreadable_documents/bank_statements/january/december_january_personal_bank_statement/fifth_third_december_january_personal_bank_statement_report.htmlPASSFAIL (35/36 matched; generic 2025-01-03 deposit unmatched)PASSPASS (using persisted `expenses.id_light` as vendor proxy for matched rows)REVIEW NEEDED (broad `Personal` categories remain)FAILIN_PROGRESSCLEANEDOne generic deposit row is not traceable to a persisted DB entry; several matched rows use broad `Personal` categories needing policy reviewLocate or explain the 2025-01-03 `$3,540.76` deposit entry, then regenerate final status2026-06-18
united_personal_card_01_25-statements-0062.pdfreadable_documents/bank_statements/january/united_personal_january_0062/report.htmlPASSPASSPASSPASS (no transactions)PASS (no transactions)PASSDONECLEANEDIntake parser logged a noisy Gemini JSON failure, but manual verification confirmed this is a true zero-activity statementOptional: fix Chase/United no-activity parser path to avoid false extraction noise2026-06-20
check_images/fifth_third_personal_images/december_january_fifth_third_personal_images.pdfreadable_documents/bank_statements/january/check_images/fifth_third_personal_images/report.htmlPASSPASSPASSPASS (deterministic check_* vendor keys)REVIEW NEEDED (inherits broad `Personal` categories from linked statement)PASSDONECLEANEDParser returned zero rows after noisy Gemini JSON failure; packet is supporting evidence onlyOptional: harden check-image packet parser path to suppress false zero-row noise2026-06-20
amex_personal_january_25readable_documents/bank_statements/january/amex_personal_january_25/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
amex_personal_whole_2025readable_documents/bank_statements/january/amex_personal_whole_2025/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
business_january_february_6285readable_documents/bank_statements/january/business_january_february_6285/report.htmlPASSPASSPASSPASSPASS WITH NOTES (14 intentionally uncategorized rows remain)PASSDONECLEANEDStatement text lacks reliable payee/memo detail for 14 transfer/card-payment rows and one unlabeled check, so they remain Uncategorized by designOptional: refine those 14 dashboard categories later if supporting detail becomes available2026-06-20
diners_club__january_25_statements-MONTHLY-0587readable_documents/bank_statements/january/diners_club__january_25_statements-MONTHLY-0587/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
february_fnbo_2025_account_4851.pdfreadable_documents/bank_statements/january/february_fnbo_2025_account_4851/report.htmlPASSFAIL (4/7 purchase rows matched; Alfano's, both Day Break Laundry rows, and 2025-03-02 Family Fare were not found in expenses)PASSPASSPASS WITH NOTESFAILIN_PROGRESSCLEANEDFour purchase rows are missing from the expenses table; intake facade also hit a Gemini CLI/Node compatibility failure and manual extraction was usedFind or import the 4 missing purchase rows, then regenerate final status2026-06-20
january_fnbo_2025_account_4851readable_documents/bank_statements/january/january_fnbo_2025_account_4851/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
jet_blue__december_january_12_26_25_to_01_23_25readable_documents/bank_statements/january/jet_blue__december_january_12_26_25_to_01_23_25/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
jet_blue_january_february_01_27_to_02_25_25readable_documents/bank_statements/january/jet_blue_january_february_01_27_to_02_25_25/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
non_profit_rol_Statement_december_january_6285readable_documents/bank_statements/january/non_profit_rol_Statement_december_january_6285/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20
platinum_business_credit_card_for_the_yearreadable_documents/bank_statements/january/platinum_business_credit_card_for_the_year/report.htmlPASSPASSPASSPASSPASSPASSDONECLEANEDNoneNone2026-06-20

Check Scratch Pad

  • `#9320` — `$150.00` — Western Michigan Credit Union — Category: `Personal` (confirmed by user)

Run Log

2026-06-20

  • Started `february_fnbo_2025_account_4851.pdf` and created `february_fnbo_2025_account_4851/report.html`.
  • Statement math reconciles: previous balance $134.22 - $250.00 in payments + $297.30 in purchases = $181.52 new balance.
  • Manual PyPDF2 extraction was used because `tools/mazda_intake.py` fell into Gemini fallback and the gemini CLI crashed under Node 18 (`Invalid regular expression flags`).
  • DB presence is currently incomplete: 4 of 7 purchase rows did not match expenses (Alfano's Pub, both Day Break Laundry rows, and a 2025-03-02 Family Fare purchase).
  • Finalized `business_january_february_6285/report.html` as PASS.
  • Confirmed the remaining 14 Uncategorized rows are intentionally left unresolved because the statement provides insufficient payee/memo detail; they do not block math, DB-presence, duplicate, or vendor-key verification.
  • Verified `check_images/fifth_third_personal_images/december_january_fifth_third_personal_images.pdf` as a supporting check-image packet and created `check_images/fifth_third_personal_images/report.html`.
  • Confirmed the five visible checks ($814.99 total) exactly match rows already present in `december_january_personal_bank_statement/report.html`; this packet must not create duplicate accounting entries.
  • Intake classification was correct, but the parser again emitted a noisy Gemini JSON failure before returning zero rows, so verification was completed manually.
  • Verified `united_personal_card_01_25-statements-0062.pdf` and created `united_personal_january_0062/report.html`.
  • Confirmed it is a genuine no-activity statement for 2024-12-28 through 2025-01-27: previous balance = new balance = -$42.09; all activity buckets are $0.00.
  • Intake classification was acceptable, but the parser still emitted a noisy Gemini JSON failure before returning zero rows; result was manually validated and reported as PASS.

2026-06-19

  • Repaired January report.html contract issues across existing statement directories.
  • Backfilled missing `data-description`, `data-signed-amount`, and `data-date` attributes on Verified Transactions rows for Amex Whole 2025, Diners Club 0587, January FNBO 4851, and Platinum Business Year reports so the category picker has the metadata it requires.
  • Confirmed all current January `report.html` files now contain `id="verified-transactions"`, one picker block marker, and complete per-row metadata.
  • Normalized `jet_blue__december_january_12_26_25_to_01_23_25/report.html` so it now contains `id="verified-transactions"` exactly once, matching the report output contract.

2026-05-12

  • Added `Vendor Key` column to Verified Transactions for the Fifth Third Dec/Jan report.
  • Enforced fail-closed vendor-key resolution in core processing paths.
  • Created Mazda codex subagent SOP requiring strict vendor-key policy.
  • Created Taco Letta agent with Mazda-equivalent capabilities for January verification continuity while Mazda is unavailable.