How it works

The part most tools get wrong

Anyone can multiply spend by a rate. The difficulty is that card terms are full of conditions, and ignoring them inflates every number.

1. Charges are walked in order, not summed

Spend caps only behave correctly if you process purchases chronologically. When you cross the Amex Gold's $25,000 grocery cap, the next dollar earns the base rate — mid-transaction if necessary. Caps reset on their own boundary: the calendar year for Gold, the quarter for Freedom Flex, the billing cycle for Custom Cash.

Summing category totals and multiplying by a rate — which is what a spreadsheet does — silently overstates every capped card.

What gets modeled

  • Caps at annual, quarterly and monthly boundaries, with spillover to the base rate.
  • Rotating categories read off each transaction's own quarter.
  • Choice categories — Citi Custom Cash's 5% slot is assigned to whichever eligible category your spend actually supports, respecting the monthly cap.
  • Foreign transaction fees, subtracted. A 2% card with a 3% FX fee loses to a 1.5% card with none, and the app will tell you so.

2. Then it runs the counterfactual

The same year is replayed with every charge assigned to the best card you hold, under the same cap accounting. The difference between what you earned and what you could have earned is the headline number. It isn't a projection — it's the same data scored twice.

Deliberately slightly pessimistic. The optimal assignment is greedy and chronological rather than globally optimal across every cap at once. It leaves a little value on the table, which we prefer to the alternative.

3. Credits are simulated period by period

This is the detail that changes the answer most. A $10/month dining credit is twelve separate $10 credits — you can't skip four months and spend $120 in December. Treating it as one annual pot makes an unused credit look used.

So each period is simulated on its own, then annualized. That's what lets the app say "$37 of credits expire in 10 days" while you can still do something about it.

4. Recurring charges get special treatment

Subscriptions are the highest-leverage spend you have: they're the only charges you can re-point once and earn on forever. Detection groups by normalized merchant, requires at least three charges on a consistent cadence, and requires stable amounts.

Price rises are found with a changepoint scan — every possible split point is tested, and a step only counts when both sides are internally tight. Without that test, any busy merchant with drifting amounts looks like a subscription that raised its price. Amazon is not a subscription.

5. Where the card data comes from

224 cards across Amex, Chase, Citi, Capital One, Bank of America, Barclays, U.S. Bank and Discover — 689 earn rules and 226 usable statement credits, each with sources and a verified date.

Where the source data is ambiguous, the conversion errs low every time:

  • A card publishing both 3x and 2x for travel is modeled at 2x; the higher tier is usually condition-bound.
  • Rotating cards whose categories haven't been published score at the base rate, never an assumed bonus.
  • Cards with no published base rate score 0x on unbonused spend and are excluded from recommendations entirely.