Place your FNB bank statement PDFs — credit card and/or savings account — into the Bank Statements/ folder.
↓
2
Run the parser
A custom Python parser uses pdfplumber to extract transaction tables from each PDF, handling both credit card and cheque account layouts.
python pdf_to_ledger.py
↓
3
Auto-categorise
Transactions are matched against 30+ regex rules covering SA merchants — grocers, petrol stations, restaurants, subscriptions. A merchant map preserves manual edits across runs.
↓
4
Deduplicate & consolidate
All statements are merged into a single ledger.csv. A transaction ID prevents duplicates when you re-run after adding new PDFs.
↓
5
Upload & visualise
Drop the ledger.csv here. The dashboard renders instantly — all processing happens in your browser, nothing is uploaded.
See the pipeline in action
Terminal — pdf_to_ledger.py
$ python pdf_to_ledger.py
Under the hood
pdf_parser.py
Detects statement type (credit vs savings), extracts transaction tables using coordinate-based PDF parsing, assigns transaction dates with cross-year logic, and cleans merchant names.
pdf_to_ledger.py
Orchestrates the pipeline: discovers PDFs recursively, applies 30+ regex categorisation rules, merges with existing ledger preserving manual edits, rebuilds the merchant map.
merchant_map.csv
Persistent lookup table mapping merchant names to categories. Manual corrections made in the dashboard are exported and feed back into the next pipeline run — the system learns over time.
📊
Interactive charts
Monthly cashflow, category breakdown, cumulative net position
🏷️
Smart categories
Auto-categorised by regex rules, editable inline per transaction
🎯
Budget tracking
Set monthly targets per category, track actual vs budget
Finance Tracker—Unsaved changes
Period→
Set monthly budget targets on the
Monthly cashflow
Income vs spend by month
Net shown as line overlay
Where the money goes
Spend by category
Sorted by total spend · selected period
Top merchants
Highest spend in selected period
Patterns & position
Needs / Wants / Savings split
% of monthly spend · 50/30/20 benchmark
Cumulative net position
Running total over selected period
Date
Description
Merchant
Category
Account
Amount
File
💡Type a budget amount into any category card below, then click Save budgets. The chart will show actual vs budget for the selected month. Budgets are saved in your browser automatically.