See where every rupee goes — and ask why. Import bank statements, get instant analytics, then chat with your finances using GPT-4 / Claude. Self-hosted, multi-currency, zero subscriptions.
Mint shut down. YNAB costs $14.99/mo and doesn't understand Indian bank statements. This is what I built for myself: bring your own data, run it on your own server, no subscription, no ads, no data harvesting. Indian fiscal year, multi-currency, 50/30/20 + tax + FIRE analytics out of the box.
Just want to try it? → Live demo — click "Try Demo" (no signup, sample data)
Want to use it for real? → Sign in to the hosted version (free, your data stays yours)
Want to run it yourself? → Self-hosting guide — or one-click:
- Floating chat widget — ask any question about your spending, trends, tax, or goals
- Tool calling (15 read-only tools) across OpenAI, Anthropic, and AWS Bedrock; the LLM is user-scoped at the FastAPI dependency level
- App mode (free, rate-limited to 10 messages/day) or BYOK mode (your key, unlimited; encrypted at rest with AES-256-GCM, per-user token caps)
- Try before you sign up — full dashboard with ~500 sample transactions (Indian household model)
- All 23 pages render with pre-computed analytics, zero backend calls
- Mutations gracefully blocked with toast notifications
- Drag-and-drop Excel (.xlsx, .xls) and CSV uploads
- Client-side parsing via SheetJS — files never leave your browser, only structured data is sent to the server
- SHA-256 hashing for duplicate detection — re-upload anytime without duplicates
- 50/30/20 Budget Rule (Needs / Wants / Savings)
- Category and subcategory treemaps
- Year-over-year spending comparisons
- Recurring transaction detection
- 4 categories: FD/Bonds, Mutual Funds, PPF/EPF, Stocks
- Inflows + outflows + net investment per category
- Asset allocation visualization
- Interactive Sankey diagrams
- Income → Expenses / Savings breakdown
- Monthly and yearly views
- India FY tax estimation — old vs new regime, slab breakdown, surcharge, cess
- Salary projections — CTC structure + RSU + growth → multi-year tax liability
- FIRE Calculator — Lean / Barista / Standard / Fat variants, adjustable SWR, real return, retirement horizon, part-time-income slider
- Retirement corpus — inflation-adjusted, monthly SIP, lump-sum alternative
- Financial Health Score (8 metrics across 4 pillars: Spend, Save, Borrow, Plan)
- Income vs expense forecasting
- Net Worth tracking across all accounts
- Anomaly detection
- Budget tracking and goals
- 15 currencies (USD, EUR, GBP, JPY, CAD, AUD, CHF, SGD, AED, …)
- Live ECB rates via frankfurter.app, cached 24h
- Quick-switch from sidebar; auto-derives format, symbol, and position
- Account classification — priority-ordered (credit-card > investment > loan > deposit) with word-boundary regex; 20+ Indian banks normalized
- Income classification — auto-assigns Salary/Freelance to Taxable, Dividends/Interest to Investment Returns
- Investment mappings — configurable per user; defaults shipped empty (no leaked names)
- Responsive layouts; dedicated mobile tab bar for the most-used pages
git clone https://github.com/Sagargupta16/ledger-sync.git
cd ledger-sync
pnpm install # root deps
pnpm run setup # backend + frontend deps in parallel
pnpm run dev # both servers- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
Backend env in backend/.env:
LEDGER_SYNC_DATABASE_URL=sqlite:///./ledger_sync.db # local dev
LEDGER_SYNC_ENVIRONMENT=development # development | production
LEDGER_SYNC_FRONTEND_URL=http://localhost:5173 # OAuth redirect base
# Optional OAuth providers:
LEDGER_SYNC_GOOGLE_CLIENT_ID=...
LEDGER_SYNC_GOOGLE_CLIENT_SECRET=...
LEDGER_SYNC_GITHUB_CLIENT_ID=...
LEDGER_SYNC_GITHUB_CLIENT_SECRET=...Frontend env:
VITE_API_BASE_URL=http://localhost:8000For OAuth setup (Google + GitHub) and production deployment, see docs/DEPLOYMENT.md.
- Sign in with Google or GitHub
- Drag a bank-statement Excel file (.xlsx, .xls, or .csv) onto the upload zone
- Browse — start with Dashboard, then Cash Flow, Net Worth, and Income Tax Planning
- Configure account types, tax preferences, and categories in Settings
- Ask the AI chatbot any question about your data
For a tour without signing up, visit /demo.
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript 6, Vite 8, Tailwind CSS 4, Recharts 3, Framer Motion 12 |
| Backend | Python 3.11+, FastAPI, SQLAlchemy 2, Alembic |
| Database | SQLite (dev), Neon PostgreSQL 17 (prod) |
| State | TanStack Query 5, Zustand 5 |
| Deployment | GitHub Pages (frontend), Vercel (backend), Neon (database) |
| CI/CD | GitHub Actions (lint, type-check, build, deploy) |
| Package Mgmt | pnpm 10 (frontend), uv (backend) |
For detailed architecture docs, see docs/architecture.md.
More diagrams (Upload Pipeline, Auth Flow, Backend Layers)
Diagrams generated from .mmd files in docs/images/:
npx -y @mermaid-js/mermaid-cli -i docs/images/<name>.mmd -o docs/images/<name>.svg -b transparentEvery page focuses on a specific question you'd ask about your money. For the detailed data catalog — what each page shows, where the numbers come from, and what decisions it helps you make — see docs/PAGES.md.
| Page | Answers |
|---|---|
| Home / Dashboard | "What happened this month at a glance?" |
| Transactions | "Give me the raw ledger." |
| Cash Flow (Sankey) | "Where did my income actually go?" |
| Expense Analysis | "Am I overspending, and on what?" (50/30/20, treemap, top merchants) |
| Income Analysis | "Where does my money come from?" (by tax bucket) |
| Comparison | "How does this month / FY compare to last?" |
| Year in Review | "Full-year retrospective" (Spotify-Wrapped-style) |
| Net Worth | "What am I actually worth today?" (assets vs liabilities, trend) |
| Trends & Forecasts | "Where is my wealth trending?" (regression + projection) |
| Investment Analytics | "How is my portfolio doing?" (across 8 investment types) |
| SIP Projections | "What will my SIPs be worth later?" |
| Returns Analysis | "Which holdings are winners?" (XIRR + CAGR ranking) |
| Recurring / Subscriptions | "What's auto-draining my account?" (detected + user-confirmed) |
| Bill Calendar | "What's due when?" (month grid with paid/missed indicators) |
| Budgets | "Am I staying within limits this month?" |
| Goals | "How close am I to my savings goals?" |
| FIRE Calculator | "When can I retire?" (Lean / Barista / Standard / Fat variants) |
| Anomaly Review | "Did anything weird happen?" |
| Income Tax Planning | "What will I owe this FY?" (Old vs New regime, multi-year projection) |
| GST Analysis | "What indirect tax did I pay?" |
| Upload & Sync | "How do I add more data?" |
| Settings | "Configure the app." (11 sections; all collapsed by default) |
Free-tier across three services:
| Service | Platform | Details |
|---|---|---|
| Frontend | GitHub Pages | Auto-deploys on push via GitHub Actions |
| Backend | Vercel (serverless) | FastAPI via Mangum; ~400 ms median, up to ~20 s after long idle (Neon free-tier branch archival) |
| Database | Neon PostgreSQL | Free tier, 0.5 GB, Singapore region |
See Deployment Guide for full setup.
ledger-sync/
├── backend/ # Python FastAPI backend (api/, core/, db/, ingest/, schemas/)
├── frontend/ # React + TypeScript frontend (pages/, components/, hooks/, lib/)
├── docs/ # Architecture, API, calculations, deployment guides
└── .github/ # CI workflows
For deeper navigation, browse the repo directly.
- Changelog — version history with release notes
- Architecture — system design and data flow
- Calculations & Data Processing — every metric, chart, and derived number
- API Reference — REST endpoints
- Database Schema — models and migrations
- Development Guide — setup and workflow
- Testing Guide — test strategies
- Deployment Guide — production deployment
Contributions welcome! Please read the Development Guide first.
MIT — see LICENSE for details.