← ClaudeAtlas

bank-statement-to-tablelisted

Use when turning a bank statement into a spreadsheet or a ledger - extracting transactions from a PDF or scan, parsing dates and amounts across European and Anglo conventions, handling multi-line descriptions and page breaks, and above all proving the extraction is correct by checking it against the statement's own running balance before anyone acts on the numbers.
Hiberius/bank-statement-to-table · ★ 0 · Data & Documents · score 72
Install: claude install-skill Hiberius/bank-statement-to-table
# Bank Statement to Table ## Overview Extraction is the easy half. Any parser produces a table; the question is whether the table is the statement. A bank statement carries its own proof, so you never have to guess: ``` balance[i] == balance[i-1] + amount[i] every row opening + sum(amounts) == closing the whole statement ``` **Core principle: never hand over an extraction that has not passed both checks.** Extraction is guessing. Verification is knowing. ## When to use - A PDF or scanned bank statement that needs to become a spreadsheet or accounting import - Dates and amounts in a mixed or unclear convention - An extraction that "looks right" and needs to be proven before it is used - Multi-line descriptions, page breaks, repeated headers, carried-forward lines - A statement that crosses a year boundary with rows that omit the year **Not for:** categorising transactions, budgeting, or reading a statement to answer a question. This is about getting the numbers out correctly. ## The three commands ```bash pdftotext -layout statement.pdf - > statement.txt python3 scripts/statement.py detect statement.txt python3 scripts/statement.py parse statement.txt --out rows.csv python3 scripts/statement.py verify rows.csv --opening 1240.55 --closing 2103.11 ``` ``` VERIFIED: the parse reproduces the statement exactly. ``` That line, and only that line, means the file is usable. ## Two decisions made once per document, never per row **Date order.** `01/06` is