https://github.com/versacecrispies/financier
⚡ A cyberpunk-themed personal finance OS: track salaries, bank statements, PF growth, and spending with AI. Local-first, no cloud.
https://github.com/versacecrispies/financier
ai finance finance-tracker india indian-banking self-hosted
Last synced: about 2 months ago
JSON representation
⚡ A cyberpunk-themed personal finance OS: track salaries, bank statements, PF growth, and spending with AI. Local-first, no cloud.
- Host: GitHub
- URL: https://github.com/versacecrispies/financier
- Owner: versacecrispies
- Created: 2026-03-20T08:29:45.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-03-20T09:10:01.000Z (3 months ago)
- Last Synced: 2026-03-28T14:52:22.433Z (3 months ago)
- Topics: ai, finance, finance-tracker, india, indian-banking, self-hosted
- Language: JavaScript
- Homepage:
- Size: 47.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Financier — Personal Finance OS
A local-first personal finance dashboard built for Indian users. Track your salary history, bank transactions, and PF growth — all stored locally in a SQLite database. No cloud, no subscriptions, no data leaves your machine.
---
## Tech Stack
- **Backend** — Node.js + Express + SQLite (`node:sqlite`)
- **Frontend** — Vanilla JS, Chart.js, PDF.js
- **AI** — Anthropic Claude Haiku (optional, for smart parsing and categorization)
---
## Getting Started
### Prerequisites
- Node.js 22+
- An Anthropic API key (optional — needed for AI features)
### Installation
```bash
git clone https://github.com/versacecrispies/financier.git
cd financier
npm install
```
### Configuration
Copy the example config and fill in your values:
```bash
cp config.example.js config.js
```
Edit `config.js`:
```js
const CONFIG = {
// Passwords for password-protected payslip PDFs
// Common format: date of birth as DD-MM-YYYY
payslipPasswords: ['DD-MM-YYYY'],
// Passwords for password-protected bank statement PDFs
// Check your bank's statement email for the password format
bankStatementPasswords: ['XXXX00000000'],
};
```
> `config.js` is gitignored and will never be committed.
### Running
```bash
npm start
```
Open [http://localhost:3000](http://localhost:3000) in your browser. Press `Ctrl+C` to stop.
---
## Features
### Payslips
- Upload payslip PDFs (drag and drop, multiple files at once)
- **Claude AI parsing** — extracts fields from any payslip format regardless of layout or field names (staffing agencies, standard corporate formats, and others)
- **Regex fallback** — works without an API key using pattern matching
- Automatically unlocks password-protected PDFs using passwords defined in `config.js`
- Confirmation modal to review and correct parsed fields before saving
- Duplicate detection by filename and by company + month
- **Salary over time** chart (gross vs net)
- **PF growth** projection with monthly compounding at 8.25% annual rate (configurable employee/employer contribution rates)
### Spends
- Upload bank statement PDFs or CSVs
- **PDF support** — reconstructs multi-line UPI transaction descriptions using PDF.js Y-position grouping
- **CSV support** — works with standard Indian bank exports (HDFC, Axis, SBI, Kotak, and others)
- Determines credit/debit from running balance column rather than keyword guessing
- **AI categorization** — transactions not matched by keyword rules are sent to Claude in batches for accurate categorization
- Categories: food, groceries, transport, utilities, EMI, entertainment, health, shopping, salary, other
- Re-uploading a file replaces its transactions (no duplicates)
- **Monthly stacked bar chart** — spend by category over 12 months
- **Donut chart** — current month category breakdown
- **Cashflow chart** — income vs spending vs net over 12 months
- KPIs: average monthly burn, this month's spend, free cash (net salary − burn − EMI)
- Configurable monthly EMI amount
- Filter transactions by month and category
- Sources panel — remove an entire file's transactions in one click
### AI Chat
- Ask natural language questions about your finances
- Full context of payslips, transactions, PF projections, and spending patterns
- Conversation history maintained within the session
- Powered by Claude Haiku
---
## Claude API Key Setup
1. Go to the **AI Chat** tab
2. Click the API key button in the top right
3. Paste your Anthropic API key (starts with `sk-ant-`)
4. Click Save
The key is stored locally in `finance.db` and never sent anywhere except the Anthropic API (proxied through the local server).
---
## Viewing Your Data
```bash
sqlite3 finance.db
```
```sql
.tables
SELECT * FROM payslips;
SELECT * FROM transactions LIMIT 20;
SELECT * FROM settings;
.quit
```
Or use the [SQLite Viewer](https://marketplace.visualstudio.com/items?itemName=qwtel.sqlite-viewer) VS Code extension — click `finance.db` in the file explorer.
---
## Privacy
- All data is stored locally in `finance.db`
- `finance.db` is gitignored — your financial data and API key will never be committed
- `config.js` is gitignored — your PDF passwords will never be committed
- The only external network calls are to the Anthropic API when AI features are used