CSVs are parsed in your browser, never uploaded

Your bank's CSV, turned into a budget you'll keep.

Import statements from every card and account, categorize once with rules that stick, and watch the month take shape — spending, budgets, bills, and net worth, all in one place.

See how it works →
  • Free, every feature included
  • No bank login required
  • Duplicate-proof imports

Everything a month needs, and nothing it doesn't

Six things, done properly. No goals, no streaks, no advice — just an honest ledger of where the money went and where it is going. All six are switched on for every account; there is no tier that unlocks the rest.

Teach it your bank once

Upload the CSV your bank already exports. Amex and Chase formats are detected automatically; anything else gets a one-time column mapping saved to that account. Re-importing an overlapping file is safe — duplicates are caught by content hash and skipped.

Categorize once, not every month

Write a rule — description contains STARBUCKS, category Coffee — and every import applies it on the way in. Categorizing something by hand offers to turn it into a rule, so the pile of uncategorized transactions shrinks every month instead of growing.

See the month as a shape

A bubble chart sizes every category by what you actually spent, so the month reads at a glance instead of as a spreadsheet. Click a bubble to jump straight to the transactions behind it, or hide categories to compare the rest.

Bills that check themselves off

Add a recurring bill — weekly, monthly, or yearly — with a match pattern and an amount tolerance. Imported transactions within a week of the due date get matched automatically, so each bill lands as paid, upcoming, or overdue without you ticking a box.

Budgets that include the bills

Set a budget per category per month, and copy last month forward when little has changed. Each category's plan folds in the bills assigned to it, so the number you compare against is the whole commitment, not just the discretionary part.

Balances and net worth

Bank balances come along with your imports. Add snapshots for investments, property, and loans, and net worth is charted over time — the slow-moving number underneath all the monthly noise.

Four steps, then it mostly runs itself

  1. 1

    Sign in with Google

    No password to invent or lose. A profile and a starter set of categories are created on first sign-in.

  2. 2

    Name your accounts

    One per card or bank: Amex, Chase Checking, the joint account. Each remembers its own CSV layout.

  3. 3

    Import a statement

    Drop in the export, check the preview, and set categories right there if you want. Rules do most of it.

  4. 4

    Set budgets and bills

    Then the dashboard fills itself in every time you import, and the month keeps score for you.

Free to use, and it stays that way

There is one plan. You are already on it.

$0per month, indefinitely
  • Unlimited accounts
  • The rules engine
  • Unlimited CSV imports
  • Monthly budgets
  • Full transaction history
  • Recurring bills with auto-matching
  • Custom categories and colors
  • Income and paycheck tracking
  • Spending charts, monthly and yearly
  • Balances and net worth over time

No card required. No trial to run out. No tier above this one.

There is no server in the middle

A year of statements is about as personal as data gets, so the architecture is the privacy policy. Your browser talks to your own slice of the database directly. There is no backend of ours that your transactions pass through, because there is no backend.

  • The CSV file never leaves your machine

    Parsing happens in the browser. Only the parsed rows are written, and they go straight to your own documents.

  • Isolation is enforced by the database

    Every write is bound to the signed-in user's ID by Firestore security rules. Enforcement lives in the database itself, not in app code that a bug could skip.

  • No service-account key exists

    There is no server-side credential that could read across users, because there is no server tier to hold one.

Questions worth asking first

What does it cost?
Nothing, and not as a trial that runs out. Every feature is available on every account — no paid tier, no cap on accounts, imports, categories, or history, and nothing held back for an upgrade. There is no upsell coming later either.
Do I have to connect my bank login?
No. There is no bank linking, no Plaid, no credentials stored anywhere. You export a CSV from your bank the way you always could, and upload that. It means a little more work each month, and it means nothing has standing access to your accounts.
Which banks work?
Any bank that exports CSV. Amex and Chase layouts are recognized on sight; for anything else you point out which column is the date, the description, and the amount, and that mapping is saved to the account for every future import.
What happens if I import the same file twice?
Nothing. Every transaction gets a content hash, and rows that already exist are skipped rather than re-added. Overlapping date ranges and accidental re-uploads are both safe, and your existing categorization is never overwritten.
Where does my data actually live?
In Firestore, under a document tree keyed to your user ID, written directly from your browser. The CSV file itself is parsed client-side and never uploaded anywhere. Access is enforced by Firestore security rules rather than by application code.
Can I get my data back out?
Your imports are your own CSVs, and the data model is plain documents in your own Firestore tree. Nothing here is a lock-in format.

Start with last month's statement

One CSV is enough to see the whole thing work — categories, chart, and totals, in about a minute.