Personal finance • Self-hosted • Convex

UNPLANNEDEXPENSES

Where the heck is my money actually going?

It's great to have a budget — but does that budget match reality? This app imports your charges and online orders, removes everything recurring or planned for, and whatever is left is the real answer: your unplanned spending, by month, category, and merchant.

The Unplanned Expenses review dashboard with a month-over-month spending trend
$8,048 of unplanned spend
surfaced over 12 mo
?

THE PROBLEM WITH BUDGETS

Even a perfect budget hides the leaks

You can plan every dollar and still wonder why the account is lower than it should be. The spending that hurts is the spending you never accounted for — the impulse Amazon order, the extra takeout, the "just this once." Unplanned Expenses exists to make that invisible category visible.

THREE STEPS TO THE REAL NUMBER

Import, subtract, reveal

01

Import everything

Plaid syncs your bank and card transactions, while a read-only Gmail connection pulls the itemized Amazon orders behind those vague charges — so a $190 line becomes the actual thing you bought.

256 orders from 243 emails in a single sync in the demo data. Real line items, not just merchant totals.
02

Subtract the expected

Mark merchants as recurring — Netflix, Spotify, the gym — and set what you plan for. Everything known and expected drops out of the picture so it can't hide the outliers.

Unmark anytime. A recurring merchant and all its transactions flow right back into the dynamic view when your subscriptions change.
03

Reveal what's left

What remains is your true unplanned spend, charted month over month and broken down by category and top merchant — the clear picture of where the money really went.

Month-over-month trend. Spot the $1,741 month next to the $148 month and actually know why.

AI-DRIVEN CATEGORIES

Categories that sort themselves

Every category is powered by a plain-English description that tells the AI how to decide what belongs in it. Run Categorize transactions and it sorts your dynamic Plaid merchants and Amazon order items automatically — then suggests brand-new categories from whatever is still uncategorized.

  1. Describe a category in one sentence
  2. AI classifies every uncategorized item
  3. Accept suggested categories in one click
AI suggesting new spending categories from uncategorized transactions
Recurring transactions grouped by category and merchant with monthly totals

RECURRING, HANDLED

The subscriptions you already know about

Everything marked recurring is summed and grouped across all time, by category and by merchant, with a true monthly average. It's both a tidy subscription audit and the exact pile of spending that gets subtracted from your unplanned view.

  1. $108.95 average monthly recurring
  2. 6 distinct recurring merchants
  3. Unmark to return them to the dynamic feed

THE WORKBENCH

A review queue built for quick passes

The transaction review queue with per-row category dropdowns and recurring toggles

Each transaction shows its source — plaid for a bank charge, Gmail for an Amazon order — with an inline category dropdown and one-tap actions to mark an item or a whole merchant recurring.

Filter by month, search across merchant, category, and notes, and watch the by-category and top-merchant summaries update as you go. It's designed to clear a month of spending in a couple of minutes.

UNDER THE HOOD

Technical details

FrameworkSvelteKit · Svelte 5
Backend & DBConvex
Scheduled syncConvex scheduled functions
Bank dataPlaid · transactions API
Order detailsGmail API · read-only OAuth
ClassificationRules + optional OpenAI
SecretsServer-side Convex env vars
HostingSelf-hosted · your accounts
LicenseFree & open source

RUN IT YOURSELF

Not hosted for you — hosted by you.

This one is deliberately not a service. It runs on your own Convex, your own Plaid keys, and your own Google project, so your financial data never passes through anyone else. Light technical knowledge and the README will get you there.

Back to All Projects