What problem does it solve? Manually checking whether a plain-text beancount ledger matches a bank or credit card statement is tedious and error-prone: sign conventions differ between assets and liabilities, pending-versus-settled timing shifts dates, and the only real proof of correctness is a balance assertion that beancount itself verifies. This Skill automates the diff, classifies every discrepancy, and lands a verified period-end balance assertion. ## Core Features & Use Cases - Statement normalization: Parses CSV exports or pasted PDF statement text, handling debit/credit columns, signed amounts, MDY vs DMY date ambiguity, and asset vs liability sign conventions. - Three-pass matching with classified diffs: Matches statement lines to ledger postings (exact, windowed, near-miss) and classifies discrepancies as missing-in-ledger, missing-on-statement, duplicate, amount-mismatch, or date-drift. - Append-only fixes with confirmation gate: Proposes missing transactions (categorized from payee history or Expenses:Uncategorized) plus a period-end balance assertion dated the day after the statement's last day, writing only after explicit user confirmation and verifying with bea check or bean-check. - Use Case: You ask "does my ledger match my May Chase statement?" and the Skill reports two missing transactions, one amount mismatch to fix by hand, and appends a passing balance assertion proving the account ties out. ## Quick Start Ask the assistant to reconcile your checking account by pointing it at your ledger file and a statement CSV, for example: reconcile ./ledger.beancount against ./statement.csv for Assets:Bank:Checking.