888888ba .d888888 dP .d88888b .d888888
88 `8b d8' 88 88 88. "' d8' 88
a88aaaa8P' 88aaaaa88a 88 `Y88888b. 88aaaaa88a
88 88 88 88 `8b 88 88
88 88 88 88 d8' .8P 88 88
dP 88 88 dP Y88888P 88 88
Paisa is a local-first personal finance app for importing HDFC and ICICI PDF bank statements.
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"Optional semantic categorization boost will also need:
python -m pip install -e ".[ai]"Create a .env file when Ollama is not running on the default local address:
cat <<'EOF' > .env
OLLAMA_BASE_URL=http://172.26.48.1:11434
EOFPaisa loads .env from the current working directory at startup.
Place statement PDFs in:
statements/
Files in statements/ are gitignored by default.
paisa init-dbThis creates the local SQLite database and seeds starter categories like Food, Travel, Income, and Misc.
paisa importImport behavior:
- Reads every
*.pdffromstatements/ - Detects HDFC or ICICI format
- Prompts for PDF password when needed
- Stores passwords in secure keyring when available
- Skips already imported files by hashing file contents
- Normalizes merchant names
- Categorizes transactions before saving
- Falls back to
Miscwhen no confident category exists
Useful flags:
paisa import --no-prompt
paisa import --debug-pdfpaisaRunning paisa without subcommands also initializes the database before opening the TUI.
Main shortcuts:
1Overview2Expenses3Ledger4Categories5Ask AICtrl+Kcommand palettettoggle themeqquit
What each screen does:
Overview: current balance, income this month, expenses this month, rolling 30-day balance chart, recent transactionsExpenses: expense breakdown by category or bank, timeframe filters, investment totals by monthLedger: search transactions, edit merchant/category, run AI recategorization on visible debit rows withrCategories: add, rename, delete unused categoriesAsk AI: ask local finance questions; app generates read-only SQL and answers from your local database
Two features use Ollama:
LedgerAI recategorization for uncertain debit transactionsAsk AInatural-language finance queries
Ollama must be reachable at OLLAMA_BASE_URL or default http://127.0.0.1:11434.
- Statement source folder:
./statements - Default database: platform data directory under
paisa/paisa.db - PDF passwords: secure keyring plus local encryption key when secure backend exists