An open API service indexing awesome lists of open source software.

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.

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