Overview
Every budgeting app I have ever used eventually wants me to either pay a subscription, ship my transaction history to their servers, or watch features I rely on get gated behind a higher tier. LedgerOne is my answer to all of that. It is a personal finance app that runs entirely on my own machine, talks directly to Chase through Plaid Production, and uses a local Ollama model for every piece of “AI” in the product. Nothing about my spending leaves the box.
The frontend is a React 19 + Vite single-page app. The backend is a FastAPI server with a single SQLite database file, and FastAPI serves the compiled frontend too, so the whole product is one process. It runs on an always-on Linux home server now, deployed automatically from my editing machine with health checks and rollback. When I open the app I get a dashboard with monthly income, spending, savings, cash flow, budget status, recent transactions, and an AI brief. There is a transactions table with search, filters, review states, and CSV export, a budget planning screen with category progress and planned payments, an insights screen for AI prompts and detected patterns, and an accounts screen that handles Chase via Plaid Link with a CSV import fallback for anything Plaid does not cover. The CSV importer has duplicate detection and a review preview so I never double-count a transaction.
The AI side runs on a local Qwen model through Ollama on my desktop GPU, reached over my private network through an authenticated gateway. It handles categorization, generates the daily brief, surfaces patterns, and answers free-form questions about my spending. It is doing real work, not a chat gimmick. Because the model is local, I can let it see everything without thinking twice about who else might one day read those prompts.
Key Features
- Local-first architecture: SQLite database, FastAPI backend, no cloud dependency
- Chase auto-sync through Plaid Production with CSV fallback for anything outside Plaid’s coverage
- AI categorization, daily briefs, and pattern detection running entirely on a local Ollama model
- Dashboard with monthly income, spending, savings, cash flow, budget status, and recent transactions
- Transactions table with search, filters, review states, and CSV export
- Budget planning with category progress, planned payments, and rule-based automation
- CSV import with duplicate detection and a review preview before commit
Tech Stack
- React 19 + Vite (frontend)
- Python + FastAPI (backend, also serves the built frontend)
- SQLite for storage
- Ollama running a local Qwen model for all AI features
- Plaid Production API for Chase sync
- Debian home server + systemd for hosting