Maximize credit card rewards by always using the right card for every purchase.
skills/card-optimizer/ (this file)data/card-optimizer/cards.json — card definitions, reward rates, spending estimates, category mapEach card in cards.json follows this structure:
{
"id": "unique_id",
"name": "Card Name",
"issuer": "Issuer Name",
"network": "visa|mastercard|amex|discover",
"annual_fee": 95,
"reward_type": "cashback|points|miles",
"point_valuation_cpp": null,
"transfer_partners": [],
"notes": "Optional notes",
"signup_bonus": {
"amount": 200,
"type": "cashback",
"spend_requirement": 3000,
"timeframe_months": 3,
"earned": false
},
"categories": [
{
"category": "groceries",
"rate": 6.0,
"cap_amount": 6000,
"cap_period": "yearly",
"rate_after_cap": 1.0
},
{
"category": "rotating",
"rate": 5.0,
"cap_amount": 1500,
"cap_period": "quarterly",
"rate_after_cap": 1.0,
"quarterly_categories": {
"Q1": ["gas", "ev_charging"],
"Q2": ["groceries", "home_improvement"],
"Q3": ["restaurants", "paypal"],
"Q4": ["amazon", "target", "walmart"]
},
"activation_required": true
},
{
"category": "everything_else",
"rate": 1.0
}
]
}
For points/miles cards, store point_valuation_cpp (cents per point):
The category_map in cards.json maps each spending category to the best card ID. This is the precomputed optimal assignment — recalculate when cards are added or removed.
To power ROI calculations, gap analysis, and new card recommendations, the user can optionally set estimated monthly spending per category in cards.json:
{
"estimated_monthly_spending": {
"groceries": 600,
"gas": 200,
"restaurants": 300,
"amazon": 150,
"streaming": 50,
"everything_else": 500
}
}
If no estimates are provided, the skill can still recommend cards per-purchase — it just can't run ROI or gap analysis. Ask the user to estimate during first-time setup.
Note: This skill does NOT track individual purchases. If the user wants detailed spending data, they should connect their bank accounts through a budgeting tool. These estimates are rough numbers for optimization calculations.
When the user asks "which card for [category]?" or "I'm buying [item]":
💳 Use: [Card Name] ([Issuer])
💰 Reward: [X]% [cashback/points/miles] on [category]
⚠️ Note: [any caps, network warnings, or caveats]
🔄 Fallback: [Next best card if merchant doesn't accept primary]
When a card has spending caps:
Example: "Your Amex BCP gets 6% on groceries up to $6,000/year. At ~$600/month, you'll hit the cap around October. After that, it drops to 1% — switch to Wells Fargo Active Cash for 2%."
Some cards (Chase Freedom Flex, Discover It) have rotating 5% categories that change quarterly and require activation.
At the start of each quarter (Jan 1, Apr 1, Jul 1, Oct 1):
activation_required: trueStore activation status per card:
{
"quarterly_activations": {
"chase_freedom_flex": {
"2026-Q1": {"activated": true, "date": "2026-01-02"}
}
}
}
For each card with an annual fee, calculate whether it's worth keeping based on estimated_monthly_spending:
💳 [Card Name] — Annual Fee: $[fee]
Bonus rewards earned: $[amount]
vs. 2% flat card: $[amount]
Bonus value: $[amount]
Annual fee: -$[fee]
━━━━━━━━━━━━━━━━━━━━━━━━
Net value: $[amount] ✅ Worth it / ❌ Consider downgrading
Break-even: Need $[X]/yr in bonus categories to justify the fee
Using estimated_monthly_spending, identify:
📊 Card Optimization Report
✅ Well covered:
- Groceries → Amex BCP (6%) — earning ~$360/yr
- Amazon → Chase Prime (5%) — earning ~$90/yr
⚠️ Gaps identified:
- Dining: $300/mo at 2% (Chase Prime) — a 4% dining card would save $72/yr
- Travel: $200/mo at 1% — a 3x travel card would earn $48 more/yr
❌ Fee card alert:
- [Card] costs $95/yr but only generates $60 in bonus rewards — net loss of $35
💡 Recommendations:
- Adding [Card Name] would earn ~$[X] more per year on [categories]
- Consider downgrading [Card] to the no-fee version
Based on spending estimates, suggest cards that would add value:
Do not recommend specific affiliate links — just name the card and explain why.
Popular cards to consider by category:
| Category | Cards | Notes |
|---|---|---|
| ---------- | ------- | ------- |
| Dining | Chase Sapphire Preferred (3x), Amex Gold (4x), Capital One SavorOne (3%) | Sapphire and Gold have annual fees |
| Groceries | Amex BCP (6%), Amex Gold (4x MR) | BCP has $6k cap |
| Travel | Chase Sapphire Reserve (3x), Amex Platinum (5x flights), Capital One Venture X (2x) | All have significant annual fees |
| Gas | Citi Custom Cash (5% top category), PenFed Platinum Rewards (5x gas) | Custom Cash is flexible |
| Flat rate | Citi Double Cash (2%), Wells Fargo Active Cash (2%), Fidelity Visa (2%) | No-fee safety nets |
| Rotating | Chase Freedom Flex (5% quarterly), Discover It (5% quarterly + first-year match) | Requires activation |
When the user mentions a merchant, map to the correct card category:
| Merchant / Keyword | Category | Notes |
|---|---|---|
| --- | --- | --- |
| Kroger, Publix, Safeway, HEB, Aldi, Trader Joe's | groceries | Supermarkets |
| Costco, Sam's Club | groceries OR warehouse | Costco is Visa-only in store. Amex may code as groceries at Sam's Club |
| Target, Walmart | varies | May code as "superstore" not "groceries" — depends on card issuer |
| Amazon, amazon.com | amazon | Some cards have specific Amazon category |
| Whole Foods | whole_foods OR groceries | Chase Prime has specific Whole Foods category |
| Shell, Exxon, BP, Chevron | gas | Gas stations |
| Uber, Lyft, subway, bus | transit | Public transit and rideshare |
| Netflix, Hulu, Spotify, Disney+, HBO Max, YouTube TV | streaming | Streaming subscriptions |
| Chipotle, McDonald's, DoorDash, Grubhub | restaurants | Dining and food delivery |
| CVS, Walgreens, Rite Aid | drugstores | Pharmacies |
| Hilton, Marriott, Airbnb | hotels/travel | Travel/lodging |
| United, Delta, Southwest | airlines/travel | Airfare |
When the user says something informal:
If ambiguous, ask: "Is this a grocery store or a restaurant?"
American Express has lower merchant acceptance than Visa/Mastercard:
When recommending an Amex card, always provide a Visa/MC fallback.
Costco US stores only accept Visa credit cards (plus debit/cash):
When the user wants to add a card:
cards.jsoncategory_map — determine which card now wins each categorycards array in cards.jsoncategory_mapIf data/card-optimizer/cards.json doesn't exist:
cards.json with all cards and the precomputed category map| User Says | Action |
|---|---|
| --- | --- |
| "Which card for groceries?" | Recommend best card for that category |
| "I'm buying gas" | Recommend with gas category |
| "Best card for Amazon?" | Recommend with Amazon category |
| "Annual fee worth it?" | ROI analysis for all fee cards |
| "Add a new card" | Walk through new card setup |
| "Remove a card" | Remove and recalculate |
| "Card optimization report" | Full gap analysis + recommendations |
| "What cards should I get?" | New card recommendations |
| "Activate Q2 categories" | Update quarterly activation status |
| "Does Costco take Amex?" | Network acceptance info |
| "What are my cards?" | List all cards with key rates |
| "Update my spending estimates" | Revise estimated monthly spending |
共 1 个版本