Turn your bank statements into a clean, private, multi-page finance dashboard — net worth, spending breakdown, a 12-month cash forecast, a sinking-fund plan, and document/renewal reminders. All local. Your data never leaves your machine. Built to be driven by Claude Code: drop in a statement, ask Claude to build it.
🇦🇪 UAE-aware out of the box. It already understands local nuances — Wio Spaces, DIB/ADIB WPS-salary + finance repayments, DEWA (incl. via DubaiNow), Empower cooling, Salik, Etisalat, Ejari, Mollak, the quarterly-rent sinking-fund pattern, and Emirates ID / visa / Mulkiya renewal cadences. See UAE-NOTES.md — your Claude reads it and picks up the whole playbook, so you don't start from scratch. (Works in any country too — just adapt the parser to your bank.)
![pages: Overview · Spending · Cash Flow · Net Worth & Plan · Renewals]
Open sample/sample-dashboard.html in any browser — it's built from synthetic data so you
can see exactly what you'll get.
git clone https://github.com/mpbharat/Fin.git && cd Fin- Open the folder in Claude Code.
- Drop a bank statement (CSV/PDF) into
statements/. - Tell Claude: "Build my finance dashboard from my statement."
Claude reads
CLAUDE.md, adapts the parser to your bank, helps you fill infacts.json, and runs the pipeline. Done.
cp facts.example.json facts.json # then edit with your numbers
# put your statement CSV(s) in statements/ (adjust COLUMN_ALIASES/CURRENCY in build_dashboard.py)
python3 build_dashboard.py # statements → data.json
python3 finances_db.py init # DB + your facts.json + transactions
python3 finances_db.py export # → dashboard_data.json
python3 gen_html.py # → financial-dashboard.html
open financial-dashboard.html| File | Role |
|---|---|
build_dashboard.py |
example statement parser → data.json (adapt to your bank) |
finances_db.py |
SQLite store + tool (init / sync / correct / export / backup) |
gen_html.py |
renders the self-contained dashboard from the data |
facts.example.json |
template for your personal facts (loans, net worth, renewals…) |
SCHEMA.md |
the data contract — what the dashboard needs |
CLAUDE.md |
instructions Claude follows to onboard you |
This repo is code only. .gitignore blocks every data file — your database, statements,
facts.json, and generated dashboard all stay local and untracked. Only the synthetic
sample/ is committed. Never git add -f your own data.
Python 3. pdftotext (poppler) only if your statements are PDFs. That's it.
Created by Bharat Sankar — built and battle-tested on real UAE finances, then genericised to share. Free and safe for personal use. Fork it, adapt it, make it yours.
Not affiliated with any bank. A personal planning tool — figures are your own estimates. No warranty; use at your own discretion.