Your Wallet Is Lying to You (And We Built a Fix)
How we reverse-engineered credit card category multipliers and why your phone should be yelling at you about transfer bonuses
Last week, Chase launched a 25% transfer bonus to Hyatt that expired in 48 hours. I know because our system caught it 11 minutes after it went live. I got a push notification on my phone, checked the math, and transferred 60,000 points before dinner.
Most people missed it entirely. The Points Guy published it 6 hours later. Reddit had a thread by hour 8. But by hour 36, the best Hyatt availability for peak dates was already gone.
This is the kind of thing that drives me slightly crazy, and it's exactly the kind of thing that pushed us to build two features I want to walk you through today: the card optimizer and the push notification system.
The $37,440 You're Probably Leaving on the Table
Here's a confession: I spent two years using my Chase Sapphire Reserve for everything. Dining, groceries, gas, streaming, everything. It felt right; it's a premium card, it earns 3x on travel and dining, what else do you need?
Turns out, a lot.
When I finally sat down and mapped my spending by category, I realized my Amex Gold was sitting in a drawer earning nothing while I was leaving 4x multipliers on the table for dining, groceries, and streaming. That's not a subtle difference. Across a year, the gap between "one card for everything" and "the right card for each category" was 37,440 points.
Thirty-seven thousand points. That's a free round trip to Europe in economy. Gone, because I was too lazy to think about which card to pull out at Whole Foods.
So we built a tool that does the thinking for you.
How It Actually Works Under the Hood
The optimizer isn't magic — it's a constraint satisfaction problem with messy real-world data.
Each credit card has a set of category multipliers. Amex Gold earns 4x at restaurants and 4x at U.S. supermarkets. Chase Sapphire Reserve earns 3x on travel and dining. But the tricky part is that "dining" doesn't mean the same thing to every card issuer.
Amex considers food delivery apps as dining. Chase sometimes does, sometimes doesn't. Costco codes as a warehouse club for most issuers, not a grocery store. Gas station convenience store purchases might code as gas or might not.
We built a merchant category mapping that translates between card issuer definitions. When you enter $850/month in dining, we know:
- Amex Gold: 4x on restaurants + food delivery = 4x on the full $850
- Chase Sapphire Reserve: 3x on dining (but food delivery is inconsistent) ≈ 3x on $650
- Citi Premier: 3x on restaurants (not delivery) = 3x on $500
Then we solve for the optimal assignment: which card should handle each category to maximize total points earned? It's a straightforward optimization, but the data normalization (getting the category mapping right) took us three weeks. Not the three days I estimated.
The result: we can tell you that your 3-card wallet earns 102,240 points per year when optimized, versus 64,800 if you just used your "best" card for everything. That +37,440 gap is real money, roughly $560-$750 in travel value depending on how you redeem.
The Notification Problem
Okay, now the harder thing. Notifications.
I hate most push notifications. I disabled them for almost every app on my phone because they're all noise. "Hey, check out this deal!" "You haven't opened the app in 3 days!" Nobody asked.
So when we built MileIntel's notification system, I had one rule: every alert should be something you'd thank us for interrupting you about.
That means:
- Transfer bonuses that expire in under 72 hours? Yes, interrupt me.
- Your flight gate changed 45 minutes before boarding? Yes.
- Price dropped $127 on a flight you already booked (and the airline refunds the difference)? Absolutely yes.
- "Hey, it's been a while since you checked your miles!" Absolutely not.
The Prioritization Engine
Behind the scenes, each potential notification gets scored on three dimensions:
- Time sensitivity: Does this expire? How soon? A 48-hour transfer bonus scores higher than a program change that's permanent.
- Financial impact: How much is this worth to this specific user? A price drop on a flight you booked matters. A price drop on a random route doesn't.
- User context: Are you at an airport right now? (Gate changes become urgent.) Are you in a quiet hours window? (Hold it until morning.)
We also enforce cooldowns. If we sent you a devaluation alert yesterday, we're not going to send another today unless it's genuinely urgent. The goal is 2-3 alerts per week for an active traveler, not 2-3 per day.
What I'm Still Figuring Out
Honestly? The hardest part isn't the technology — it's the psychology.
Some travelers want to know about every single program change. Others only care about alerts that affect their specific routes and balances. We're still dialing in where the default sensitivity should sit. Right now it's probably too conservative; I'd rather miss a notification than annoy someone.
I also haven't cracked the "digest vs. real-time" question yet. Should transfer bonuses be real-time pushes or part of a weekly email roundup? My gut says real-time for anything with an expiration under 72 hours, digest for everything else. But I'm curious what you think.
Where This Connects
In the last cockpit post, I talked about how we track 47 programs and catch devaluations in 4 hours. The notification system is the delivery layer for that intelligence — it's what turns detection into action.
The card optimizer connects to it too. When we detect a transfer bonus, the alert includes your current balance and the optimizer's recommendation for whether to transfer. It's not just "Chase has a Hyatt bonus." It's "You have 85,000 UR, transfer 60K to Hyatt for 4 nights at Park Hyatt Tokyo at 3.2 cpp."
Context makes the difference between noise and intelligence.
Try It
The card optimizer is available on the dashboard for all accounts. Push notifications are in the notification preferences, where you can choose exactly which alert types you want and set quiet hours.
And seriously, if you have opinions on notification frequency or alert types, I want to hear them. This is the kind of thing where user feedback is worth more than any A/B test.
Every notification should earn the right to interrupt your day. If it doesn't, we failed.
From the Cockpit, where we share what we're building and what we've learned. Have thoughts on how alerts should work? Tell us. We're building this with you, not just for you.
Don't Miss a Departure
Track your miles, catch devaluations before the blogs do, and find the best use of every point you have.
Start Tracking Free