Bank Statement To Table — Development skill for Claude Code
Agent Skill that converts a bank statement PDF into a spreadsheet and then proves the extraction is correct against the statement's own running balance.
How to install Bank Statement To Table
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open Hiberius/bank-statement-to-table and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Bank Statement To Table does
Agent Skill that converts a bank statement PDF into a spreadsheet and then proves the extraction is correct against the statement's own running balance. European and Anglo formats, multi-line descriptions, scans. Entirely offline, zero dependencies.
Alternatives in Development
- Spreadsheet — Create, edit, analyze, and visualize spreadsheets with formulas 14.6k ★
- n8n MCP Tools Expert — MCP tools guide with tool selection and node formats 3.6k ★
- Octo Docs — Document delivery with export to PPTX, DOCX, PDF formats 2.8k ★
README
Bank Statement to Table
**An Agent Skill that turns a bank statement into a spreadsheet and then proves the result is correct, using the statement's own running balance. European and Anglo number formats, multi-line descriptions, page breaks, scans. Entirely offline.**
[](LICENSE)   
npx skills add Hiberius/bank-statement-to-table
Anyone can extract. The question is whether it is right
pdftotext -layout statement.pdf - > 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
rows 7 (7 carry a balance)
chain checks 6
chain breaks 0
sum of movements 862.56
opening + movements 2103.11
stated closing 2103.11
difference 0.00
VERIFIED: the parse reproduces the statement exactly.
Every running balance must equal the previous balance plus the movement. That is not a convention, it is what a balance is. So the parse either reproduces the chain from the opening balance to the closing balance, or it is wrong and the chain says which row.
Change one digit and:
NOT VERIFIED: the parse does not reproduce the statement.
break at row 1, 2026-06-03 PAGAMENTO POS SUPERMERCATO
2740.55 -8.24 should give 2732.31, the statement says 2658.15 (off by -74.16)
hint: the difference equals the amount on 2026-06-05: that row is probably
duplicated or missing
Two decisions made once, never per row
`01/06` is ambiguous and no cleverness resolves a single row: if any date in the file has a first component above 12, the whole document is day-first. Deciding per row silently sw
Related Skills
Lotr Speechscape
A Claude Code skill for writing, revising and critiquing prose in J.R.R. Tolkien's manner — register modulatio
Search Epo
Search European patents using EPO OPS API and BigQuery (100M+ patents filtered for EP)
London Property Hunt Public
Automated London flat/room hunt powered by Claude Code + Claude in Chrome + Gmail MCP. Scrapes 4 rental platfo
Arckit.At Barrierefreiheit
[COMMUNITY] Assess Austrian digital accessibility obligations — applicability across BaFG (European Accessibil
Sheet
Orchestrate spreadsheet/tracker builds with structured protocol
Engineering Leadership Plugin
Free Claude plugin for engineering leaders: team-lead readiness assessment, 2026 European salary models, 1:1 p
Related Agents
Design Copy Editor
Stage 3c of the world-class-design process. Treats every AI-written line in a design as placeholder and rewrit
Excelsior Verifier
Adversarial verification agent. Independently proves work is correct by running checks. Auto-detects stack. Re
Hebrew LaTeX Formatter
Formats Hebrew academic content for XeLaTeX compilation with correct RTL, polyglossia, and font configuration.