arthurrees.dev / Projects
Local --:--:--
Available
← Back to projects

LedgerOne

TAGS // React · FastAPI · Local AI · Plaid · Fintech

A local-first personal budgeting app that auto-syncs with Chase through Plaid and runs every AI feature on my own hardware. No subscription, no cloud, no data leaving my desk.

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 on port 8787 with a single SQLite database file. The two talk over a proxied /api and that is the whole architecture. 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 qwen3:14b through Ollama on my desktop. 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 on port 8787 (backend)
  • SQLite for storage
  • Ollama running qwen3:14b for all AI features
  • Plaid Production API for Chase sync