Live · Started
LE

Ledgerly

Personal finance that never asks for your bank login. Upload a statement, get a categorised ledger back.

ledgerly-rust-iota.vercel.app

Every personal finance app I tried wanted the same thing first: my online banking login. Not a read-only token — the actual credentials, handed to an aggregator that would sign in as me and scrape the screens. That is a lot of trust to extend before you have seen whether the product is any good.

Ledgerly is the version that never asks. You export a CSV from your bank, or drop in the PDF statement it already emails you, and that is the whole integration. There is no bank connection to authorise, nothing to re-authenticate every ninety days, and no credentials sitting in someone's database waiting to leak.

Categorisation in two passes

Categorising transactions with an LLM is easy to demo and expensive to run. Most of a statement is the same twenty merchants every month — Tesco, TfL, the same standing orders — and paying a model to re-read them is money spent to get an answer you already had.

So the first pass is deterministic: pattern rules match the merchants that recur, instantly and for free. Only what is left over goes to the model. That keeps the per-statement cost close to zero for a regular month, and reserves the expensive path for the transactions that genuinely need judgement.

Bring your own key

The AI features — PDF import, search, the categorisation tail — run on the user's own Anthropic API key, connected in settings. There is no server-side API key in production at all.

That inverts the usual economics. I am not underwriting anyone's token spend, so there is no usage tier to police and no incentive to quietly cap what the product will do for you. CSV import, the rules-based categorisation and every bit of analysis work without a key, so the app is still useful before you connect one.

Keys are encrypted at rest with a versioned key, which means rotation is a migration rather than a rewrite.

Transfers, and why totals lie without them

Moving £500 from current account to savings is not spending £500. Import both accounts naively and you have invented an expense and a matching bit of income, and every category total downstream is wrong.

Ledgerly matches those pairs — same amount, opposite sign, close in time, across two accounts you own — and excludes them. It is unglamorous, it is the sort of thing you only notice when it is missing, and it is the difference between a number you can act on and a number you have to mentally correct.

Features

Automatic categorisation
Pattern rules catch the common merchants instantly; an LLM handles the tail. No manual tagging.
CSV and PDF upload
Exports from your bank or the PDF statement itself — both turn into clean, structured transactions.
AI search
Ask “how much did I spend on coffee last month?” and get an answer rather than a SQL query.
Spending analysis
Earning vs. spending, category breakdowns and month-over-month trends, out of the box.
Transfer detection
Moves between your own accounts are matched up and excluded, so the spend totals are honest.
Custom categories and rules
Rename, add or split categories to match how you actually think about your money.

Tech

  • Next.js
  • TypeScript
  • PostgreSQL
  • Drizzle ORM
  • Clerk
  • Tailwind CSS
  • TanStack Table
  • Recharts
  • Anthropic API
  • Zod
  • Vitest
  • Vercel

Ledgerly is live — have a look for yourself.

Visit ledgerly-rust-iota.vercel.app