Dashboard

Analyzing your spend against every card in your wallet.

Demo data
You're looking at sample data. A realistic year of spending, so every screen has something in it. Use Upload CSV on the Transactions tab to run this on your own statement — it stays in your browser and is never uploaded anywhere.

Where your money goes

Spend by category, with the rate you actually earned

Biggest upside

Top switches by annualized value

Card performance

Effective return rate on what you put on each card

Leaks

Money left on the table this period

Credit Health

Score, utilization, and what a new application would cost you.

Placeholder: score + balances are stubbed. Wire CreditData.pull() in index.html to your bureau/aggregator feed — it just needs to return {score, bureau, pulledAt, accounts:[{cardId, balance, limit, openedYear}]}.

FICO Score 8

13-month history

Utilization by card

Under 30% per card, under 10% overall is the target

Paydown simulator

Utilization is ~30% of a FICO score and it re-scores every statement — this is the fastest lever you have
Pay down $0

Interest & statement detail

From your linked accounts
CardPurchase APRStatement bal.Min. paymentDueCarrying cost /mo

Score-aware actions

Ordered by impact per dollar

Switch Charges

Every charge re-scored against every card you already hold.

Unused Perks & Credits

Statement credits you're paying for. Usage is inferred from your charges — override anything that's wrong.

CreditCardValueUsedProgressAt risk

Gated credits — advertised but conditional

These require qualifying spend or status, so they're excluded from every total on this site

Non-cash perks you hold

No dollar figure, but stop paying twice for these

Annual Fee Break-Even

Rewards earned plus credits actually used, against what each card costs you.

CardAnnual feeRewards (ann.)Credits usedNetBreak-evenVerdict
Rewards are annualized from the selected window. A card can still be worth keeping below break-even for lounge access, status, or protections — those aren't priced here.

Next Card

Simulated against your real spend: uplift over your current best card, plus the signup bonus, minus the fee.

Ranked by value to you — earn-rate uplift, credits you'd actually use, and a signup bonus only if your spend clears it, minus the fee. Some cards may pay us a commission; the ranking code has no access to which ones. How that's enforced.
Placeholder: approval-odds gating is off. Candidates are scored on value only — they don't yet factor 5/24, income, or issuer rules.

Action Calendar

Everything with a deadline attached, in the order it will cost you money.

Upcoming

Sorted by date. Dollar figures are what you lose by missing it.

Recurring obligations

Statement due dates from your linked accounts
Due dates and APRs come from Plaid /liabilities/get. Connect a card to populate this.

Recurring Charges

Detected from cadence and amount stability. Move one of these once and it earns for you forever.

Card-Linked Offers

Amex, Chase and Citi offers you must activate before you spend. Ranked by what you'll actually claim.

Placeholder feed. No issuer publishes an offers API — see offers.master.json for the four realistic ways to source this. Activation state is stored locally.

My Wallet

Toggle the cards you hold. Everything downstream re-runs instantly.

Transactions

Drop a statement CSV here
Columns are auto-detected — date, description, amount, and card if present. Chase, Amex, Citi, Capital One and Discover exports all work as-is.
DateMerchantCategoryCharged toAmountEarnedBest cardUpside

Settings

Point valuations drive every dollar figure on this site.

Master benefit file

Placeholder loaded. Drop in card-benefits.master.json with the full pulled dataset — the app reads it live, no code change. Schema notes are in the file's _README.
Load master benefit file
JSON · replaces the card database in place

Point valuations

Cents per point. Change these and every number re-computes.

Your account

Not signed in
Sign in to save your wallet and settings across devices, and to link bank accounts.

Linked institutions

Not connected
Requires the backend in server/. Copy .env.example to .env, add your Plaid keys, then npm install && npm start. Sandbox works with no real bank.

Merchant categorization rules

Keyword → category. First match wins; unmatched charges fall to other.
Placeholder: keyword matcher stands in for a real MCC feed. Swap Categorizer.rules for MCC codes off the transaction feed when that's wired up.