earnrate 0.2.12 → 0.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +20 -7
  2. package/data/CHANGELOG.md +197 -0
  3. package/data/VERSION +1 -1
  4. package/data/cards/amex-blue-cash-everyday.yaml +28 -2
  5. package/data/cards/amex-blue-cash-preferred.yaml +19 -0
  6. package/data/cards/amex-business-gold.yaml +38 -3
  7. package/data/cards/amex-business-platinum.yaml +72 -3
  8. package/data/cards/amex-delta-skymiles-gold.yaml +34 -9
  9. package/data/cards/amex-delta-skymiles-platinum.yaml +40 -9
  10. package/data/cards/amex-delta-skymiles-reserve.yaml +42 -10
  11. package/data/cards/amex-gold.yaml +52 -0
  12. package/data/cards/amex-hilton-honors-aspire.yaml +23 -1
  13. package/data/cards/amex-hilton-honors-business.yaml +14 -1
  14. package/data/cards/amex-hilton-honors-surpass.yaml +14 -1
  15. package/data/cards/amex-marriott-bonvoy-brilliant.yaml +15 -1
  16. package/data/cards/amex-marriott-bonvoy-business.yaml +7 -8
  17. package/data/cards/amex-platinum.yaml +110 -0
  18. package/data/cards/apple-card.yaml +76 -0
  19. package/data/cards/bilt-obsidian.yaml +12 -2
  20. package/data/cards/bilt-palladium.yaml +12 -2
  21. package/data/cards/caltech-efcu-platinum-mastercard.yaml +50 -0
  22. package/data/cards/capital-one-rei-co-op-mastercard.yaml +62 -0
  23. package/data/cards/capital-one-venture-x-business.yaml +28 -1
  24. package/data/cards/capital-one-venture-x.yaml +30 -2
  25. package/data/cards/chase-aeroplan.yaml +14 -0
  26. package/data/cards/chase-ihg-one-rewards-business.yaml +27 -1
  27. package/data/cards/chase-ihg-one-rewards-premier-select.yaml +16 -0
  28. package/data/cards/chase-ihg-one-rewards-premier.yaml +15 -0
  29. package/data/cards/chase-ink-business-cash.yaml +13 -0
  30. package/data/cards/chase-ink-business-unlimited.yaml +13 -2
  31. package/data/cards/chase-sapphire-preferred.yaml +11 -0
  32. package/data/cards/chase-sapphire-reserve.yaml +44 -4
  33. package/data/cards/chase-united-business.yaml +32 -0
  34. package/data/cards/chase-united-club-business.yaml +40 -0
  35. package/data/cards/chase-united-club.yaml +40 -0
  36. package/data/cards/chase-united-explorer.yaml +32 -0
  37. package/data/cards/chase-united-quest.yaml +40 -0
  38. package/data/cards/citi-aadvantage-executive.yaml +26 -1
  39. package/data/cards/citi-strata-elite.yaml +20 -1
  40. package/data/cards/discover-it-cash-back.yaml +8 -5
  41. package/data/cards/fidelity-rewards-visa-signature.yaml +60 -0
  42. package/data/cards/navy-federal-cash-rewards-plus.yaml +61 -0
  43. package/data/cards/navy-federal-cash-rewards.yaml +60 -0
  44. package/data/cards/navy-federal-more-rewards-amex.yaml +92 -0
  45. package/data/cards/paypal-cashback-mastercard.yaml +13 -2
  46. package/data/cards/penfed-power-cash-rewards.yaml +47 -0
  47. package/data/cards/usbank-altitude-connect.yaml +8 -2
  48. package/data/cards/usbank-altitude-go.yaml +8 -2
  49. package/data/cards/usbank-smartly.yaml +107 -0
  50. package/data/cards/venmo-credit-card.yaml +151 -0
  51. package/data/cards/verizon-visa-card.yaml +122 -0
  52. package/data/currencies.yaml +14 -0
  53. package/data/issuers.yaml +22 -0
  54. package/data/memberships.yaml +35 -0
  55. package/data/merchants/overrides.yaml +448 -0
  56. package/data/merchants/seed.yaml +1085 -66
  57. package/dist/cli/args.js +18 -0
  58. package/dist/cli/explore.js +10 -1
  59. package/dist/cli/run.js +4 -1
  60. package/dist/cli/wallet.js +31 -4
  61. package/dist/data/file-store.js +5 -2
  62. package/dist/data/integrity.js +22 -0
  63. package/dist/data/store.js +4 -1
  64. package/dist/data/wallet-edit.js +25 -6
  65. package/dist/engine/cheat-sheet.js +20 -7
  66. package/dist/engine/checklist.js +35 -11
  67. package/dist/engine/credits.js +65 -0
  68. package/dist/engine/evaluate.js +38 -11
  69. package/dist/engine/explore.js +72 -9
  70. package/dist/engine/offers.js +2 -1
  71. package/dist/engine/periods.js +10 -3
  72. package/dist/engine/recommend.js +101 -38
  73. package/dist/engine/record.js +42 -1
  74. package/dist/engine/rotation.js +4 -0
  75. package/dist/engine/rule-text.js +35 -7
  76. package/dist/engine/setup.js +17 -6
  77. package/dist/engine/simulate.js +13 -4
  78. package/dist/engine/text.js +89 -1
  79. package/dist/engine/wallet-change.js +37 -1
  80. package/dist/engine/wallet-summary.js +32 -4
  81. package/dist/format/card-text.js +4 -3
  82. package/dist/format/cards.js +6 -2
  83. package/dist/format/cheat-sheet.js +2 -0
  84. package/dist/format/explore.js +20 -4
  85. package/dist/format/recommendation.js +6 -2
  86. package/dist/format/wallet-yaml.js +11 -15
  87. package/dist/format/wallet.js +15 -7
  88. package/dist/import/analyze.js +7 -2
  89. package/dist/mcp/inputs.js +10 -0
  90. package/dist/mcp/prompts.js +9 -1
  91. package/dist/mcp/schemas.js +71 -1
  92. package/dist/mcp/tools/answers.js +11 -5
  93. package/dist/mcp/tools/wallet.js +15 -7
  94. package/dist/merchants/resolve.js +8 -0
  95. package/dist/schema/card.js +37 -3
  96. package/dist/schema/common.js +1 -1
  97. package/dist/schema/merchant.js +6 -0
  98. package/dist/schema/wallet.js +8 -0
  99. package/package.json +1 -1
@@ -83,6 +83,13 @@ rules:
83
83
  match: { categories: [transit] }
84
84
  rate: 2
85
85
  note: Chase's travel category includes passenger trains, buses, taxis, ferries, tolls and parking. Rideshare codes as a taxi.
86
+ # Merchant statement credits, on top of what the purchase earns.
87
+ credits:
88
+ - id: chase-travel-hotels
89
+ match: { merchants: [chase-travel] }
90
+ amount: 100
91
+ period: cardmember_year
92
+ note: 'Hotel stays bought through Chase Travel only, applied automatically.'
86
93
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
87
94
  evidence:
88
95
  - rule: base_rate
@@ -145,5 +152,9 @@ evidence:
145
152
  - rule: foreign_transaction_fee
146
153
  url: https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65222.html
147
154
  quote: 'Foreign Transactions None Penalty Fees'
155
+ - rule: chase-travel-hotels
156
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/preferred
157
+ quote: 'Earn up to $100 in statement credits each account anniversary year for hotel stays purchased through Chase Travel'
148
158
  todo:
149
159
  - "peloton: the $5,000 limit runs across the whole offer (4/1/2025 to 12/31/2027), which no cap period can express, and the $150 minimum per purchase isn't modeled."
160
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
@@ -18,10 +18,10 @@ welcome_offer:
18
18
  spend: 6000
19
19
  months: 3
20
20
  note: 'Chase: "This credit card is unavailable to you if you currently have this card open. The new cardmember bonus may not be available to you if you previously held this card or received a new cardmember bonus for this card." Chase may also weigh how many cards you''ve opened and closed.'
21
- # Not modeled on purpose: the $300 travel credit, The Edit credit, dining,
22
- # StubHub, Lyft and Peloton statement credits, and the $75,000-spend benefits.
23
- # They're credits or perks, not earn rates. Purchases covered by the travel
24
- # credit or The Edit credit earn no points.
21
+ # Not modeled: The Edit credit (per booking), the Exclusive Tables dining
22
+ # credit (restaurants in an OpenTable program), DoorDash promos and the
23
+ # $75,000-spend benefits. Purchases covered by the travel credit or The Edit
24
+ # credit earn no points.
25
25
  rules:
26
26
  - id: chase-travel
27
27
  match: { merchants: [chase-travel] }
@@ -58,6 +58,30 @@ milestones:
58
58
  - up to $500 in Southwest credits on Chase Travel
59
59
  - up to $250 in credits at The Shops at Chase
60
60
  note: 'For the primary cardmember. Each lasts the rest of that calendar year and all of the next (Explorist through the following February). A-List needs your Rapid Rewards number linked on Chase.com.'
61
+ # Merchant statement credits, on top of what the purchase earns.
62
+ credits:
63
+ - id: travel
64
+ match: { categories: [travel] }
65
+ amount: 300
66
+ period: cardmember_year
67
+ note: "Anything in Chase's travel category, applied automatically; earnrate matches its travel purchases, not the trains, buses, taxis, tolls and parking Chase also counts. The purchases it covers earn no points. The year runs from the account anniversary (Chase counts to the first statement after it)."
68
+ - id: stubhub
69
+ match: { merchants: [stubhub, viagogo] }
70
+ amount: 150
71
+ period: half_year
72
+ enroll: true
73
+ note: 'StubHub and viagogo, through December 31, 2027. Activate once on chase.com.'
74
+ - id: lyft-credit
75
+ match: { merchants: [lyft] }
76
+ amount: 10
77
+ period: month
78
+ note: 'A $10 Lyft credit in the app each month, through September 30, 2027, once the card is added to Lyft. Rides only, not memberships, fees, tips or taxes.'
79
+ - id: peloton-credit
80
+ match: { merchants: [peloton-membership] }
81
+ amount: 10
82
+ period: month
83
+ enroll: true
84
+ note: 'Peloton memberships (All-Access, Rental, App+, Guide, App One, Strength+), through December 31, 2027. Activate once on chase.com.'
61
85
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
62
86
  evidence:
63
87
  - rule: base_rate
@@ -126,5 +150,21 @@ evidence:
126
150
  - rule: spend-75k
127
151
  url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
128
152
  quote: '$75,000 Spend Benefit – $250 Credit for The Shops at Chase'
153
+ - rule: travel
154
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
155
+ quote: 'A statement credit will be automatically applied to your account for purchases made in the travel category'
156
+ - rule: travel
157
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
158
+ quote: 'any purchases that qualify for the $300 Annual Travel Credit'
159
+ - rule: stubhub
160
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
161
+ quote: 'with StubHub and viagogo up to a maximum accumulation of $150 in statement credits'
162
+ - rule: lyft-credit
163
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
164
+ quote: 'will receive a $10 Lyft credit each calendar month through 9/30/2027'
165
+ - rule: peloton-credit
166
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
167
+ quote: 'qualifying Peloton Membership purchases up to a monthly maximum of $10'
129
168
  todo:
130
169
  - "peloton: the $5,000 limit runs across the whole offer (4/1/2025 to 12/31/2027), which no cap period can express, and the $150 minimum per purchase isn't modeled."
170
+ - "Chase's terms say purchases the $300 travel credit covers earn no points, but earnrate counts the card's rate on the whole purchase with the credit on top (an engine gap). For its other credits the terms don't say, and they're modeled the same way."
@@ -49,6 +49,26 @@ milestones:
49
49
  note: 'For the primary cardmember, on tickets bought with the card. Chase says to allow 6-8 weeks for them to post; use them within 12 months.'
50
50
  todo:
51
51
  - United Card Events from Chase also earn 2x; no merchant exists for them, so they aren't modeled.
52
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
53
+ # Merchant statement credits, on top of what the purchase earns.
54
+ credits:
55
+ - id: instacart
56
+ match: { merchants: [instacart] }
57
+ amount: 10
58
+ period: month
59
+ enroll: true
60
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027."
61
+ - id: rideshare
62
+ match: { categories: [transit.rideshare] }
63
+ amount: 8
64
+ period: month
65
+ enroll: true
66
+ note: 'Rideshare rides. Opt in each year. December allows $12 (modeled at $8).'
67
+ - id: jsx
68
+ match: { merchants: [jsx] }
69
+ amount: 100
70
+ period: cardmember_year
71
+ note: 'Flights booked directly with JSX.'
52
72
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
53
73
  evidence:
54
74
  - rule: annual_fee
@@ -99,3 +119,15 @@ evidence:
99
119
  - rule: spend-25k
100
120
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
101
121
  quote: 'Earn 2 continental U.S. Economy Plus® seat upgrades after spending $25,000 each calendar year.'
122
+ - rule: instacart
123
+ url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
124
+ quote: 'you can receive one $10 credit in your Instacart account each month'
125
+ - rule: rideshare
126
+ url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
127
+ quote: 'up to $8 back as a statement credit each month from January through November'
128
+ - rule: rideshare
129
+ url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
130
+ quote: 'Yearly opt-in is required.'
131
+ - rule: jsx
132
+ url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
133
+ quote: 'Get up to $100 back as a statement credit each anniversary year when you book flights directly with JSX'
@@ -42,6 +42,31 @@ milestones:
42
42
  note: 'Premier Gold status unlocks it too. It lasts the rest of that calendar year and all of the next.'
43
43
  todo:
44
44
  - United Card Events from Chase also earn 2x; no merchant exists for them, so they aren't modeled.
45
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
46
+ # Merchant statement credits, on top of what the purchase earns.
47
+ credits:
48
+ - id: instacart
49
+ match: { merchants: [instacart] }
50
+ amount: 20
51
+ period: month
52
+ enroll: true
53
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027. Each credit applies to one order."
54
+ - id: rideshare
55
+ match: { categories: [transit.rideshare] }
56
+ amount: 12
57
+ period: month
58
+ enroll: true
59
+ note: 'Rideshare rides. Opt in each year. December allows $18 (modeled at $12).'
60
+ - id: jsx
61
+ match: { merchants: [jsx] }
62
+ amount: 200
63
+ period: cardmember_year
64
+ note: 'Flights booked directly with JSX.'
65
+ - id: renowned-hotels-credit
66
+ match: { merchants: [renowned-hotels-chase-travel] }
67
+ amount: 200
68
+ period: cardmember_year
69
+ note: 'Hotel stays prepaid through Renowned Hotels and Resorts for United cardmembers.'
45
70
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
46
71
  evidence:
47
72
  - rule: annual_fee
@@ -77,3 +102,18 @@ evidence:
77
102
  - rule: spend-50k
78
103
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
79
104
  quote: 'Receive United Club All Access Membership after spending $50,000 in a calendar year'
105
+ - rule: instacart
106
+ url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
107
+ quote: 'you can receive two (2) $10 credits in your Instacart account each month'
108
+ - rule: rideshare
109
+ url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
110
+ quote: 'up to $12 back as a statement credit each month from January through November'
111
+ - rule: rideshare
112
+ url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
113
+ quote: 'Yearly opt-in is required.'
114
+ - rule: jsx
115
+ url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
116
+ quote: 'Get up to $200 back as a statement credit each anniversary year when you book flights directly with JSX'
117
+ - rule: renowned-hotels-credit
118
+ url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
119
+ quote: 'Receive up to $200 back in statement credits each anniversary year on hotel accommodations'
@@ -60,6 +60,31 @@ milestones:
60
60
  note: 'Premier Gold status unlocks it too. It lasts the rest of that calendar year and all of the next.'
61
61
  todo:
62
62
  - United Card Events from Chase also earn 5x; no merchant exists for them, so they aren't modeled.
63
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
64
+ # Merchant statement credits, on top of what the purchase earns.
65
+ credits:
66
+ - id: instacart
67
+ match: { merchants: [instacart] }
68
+ amount: 20
69
+ period: month
70
+ enroll: true
71
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027. Each credit applies to one order."
72
+ - id: rideshare
73
+ match: { categories: [transit.rideshare] }
74
+ amount: 12
75
+ period: month
76
+ enroll: true
77
+ note: 'Rideshare rides. Opt in each year. December allows $18 (modeled at $12).'
78
+ - id: jsx
79
+ match: { merchants: [jsx] }
80
+ amount: 200
81
+ period: cardmember_year
82
+ note: 'Flights booked directly with JSX.'
83
+ - id: renowned-hotels-credit
84
+ match: { merchants: [renowned-hotels-chase-travel] }
85
+ amount: 200
86
+ period: cardmember_year
87
+ note: 'Hotel stays prepaid through Renowned Hotels and Resorts for United cardmembers.'
63
88
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
64
89
  evidence:
65
90
  - rule: annual_fee
@@ -122,3 +147,18 @@ evidence:
122
147
  - rule: spend-50k
123
148
  url: https://creditcards.chase.com/travel-credit-cards/united/united-club
124
149
  quote: 'Receive United Club All Access Membership after spending $50,000 in a calendar year'
150
+ - rule: instacart
151
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-club
152
+ quote: 'you can receive two (2) $10 credits in your Instacart account each month'
153
+ - rule: rideshare
154
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-club
155
+ quote: 'up to $12 back as a statement credit each month from January through November'
156
+ - rule: rideshare
157
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-club
158
+ quote: 'Yearly opt-in is required.'
159
+ - rule: jsx
160
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-club
161
+ quote: 'Get up to $200 back as a statement credit each anniversary year when you book flights directly with JSX'
162
+ - rule: renowned-hotels-credit
163
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-club
164
+ quote: 'Receive up to $200 back in statement credits each anniversary year on hotel accommodations'
@@ -47,6 +47,26 @@ milestones:
47
47
  note: "One a calendar year. It posts to MileagePlus within 6-8 weeks and expires 12 months after it's issued."
48
48
  todo:
49
49
  - United Card Events from Chase also earn 3x; no merchant exists for them, so they aren't modeled.
50
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
51
+ # Merchant statement credits, on top of what the purchase earns.
52
+ credits:
53
+ - id: instacart
54
+ match: { merchants: [instacart] }
55
+ amount: 10
56
+ period: month
57
+ enroll: true
58
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027."
59
+ - id: rideshare
60
+ match: { categories: [transit.rideshare] }
61
+ amount: 5
62
+ period: month
63
+ enroll: true
64
+ note: 'Rideshare rides. Opt in each year.'
65
+ - id: jsx
66
+ match: { merchants: [jsx] }
67
+ amount: 100
68
+ period: cardmember_year
69
+ note: 'Flights booked directly with JSX.'
50
70
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
51
71
  evidence:
52
72
  - rule: annual_fee
@@ -94,3 +114,15 @@ evidence:
94
114
  - rule: spend-20k
95
115
  url: https://creditcards.chase.com/travel-credit-cards/united/united-explorer
96
116
  quote: 'Earn a 10,000-mile award flight discount after spending $20,000 each calendar year'
117
+ - rule: instacart
118
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-explorer
119
+ quote: 'you can receive one $10 credit in your Instacart account each month'
120
+ - rule: rideshare
121
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-explorer
122
+ quote: 'receive up to $5 back as a statement credit each month on rideshare purchases'
123
+ - rule: rideshare
124
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-explorer
125
+ quote: 'Yearly opt-in is required.'
126
+ - rule: jsx
127
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-explorer
128
+ quote: 'Get up to $100 back as a statement credit each anniversary year when you book flights directly with JSX'
@@ -81,6 +81,31 @@ milestones:
81
81
  note: 'For the primary cardmember, on tickets bought with the card. Chase says to allow 6-8 weeks for them to post; use them within 12 months.'
82
82
  todo:
83
83
  - United Card Events from Chase also earn 4x; no merchant exists for them, so they aren't modeled.
84
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
85
+ # Merchant statement credits, on top of what the purchase earns.
86
+ credits:
87
+ - id: instacart
88
+ match: { merchants: [instacart] }
89
+ amount: 15
90
+ period: month
91
+ enroll: true
92
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027. Each credit applies to one order."
93
+ - id: rideshare
94
+ match: { categories: [transit.rideshare] }
95
+ amount: 8
96
+ period: month
97
+ enroll: true
98
+ note: 'Rideshare rides. Opt in each year. December allows $12 (modeled at $8).'
99
+ - id: jsx
100
+ match: { merchants: [jsx] }
101
+ amount: 150
102
+ period: cardmember_year
103
+ note: 'Flights booked directly with JSX.'
104
+ - id: renowned-hotels-credit
105
+ match: { merchants: [renowned-hotels-chase-travel] }
106
+ amount: 150
107
+ period: cardmember_year
108
+ note: 'Hotel stays prepaid through Renowned Hotels and Resorts for United cardmembers.'
84
109
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
85
110
  evidence:
86
111
  - rule: annual_fee
@@ -140,3 +165,18 @@ evidence:
140
165
  - rule: spend-40k
141
166
  url: https://creditcards.chase.com/travel-credit-cards/united/united-quest
142
167
  quote: 'Earn 2 global Economy Plus® seat upgrades after spending $40,000 each calendar year.'
168
+ - rule: instacart
169
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-quest
170
+ quote: 'you can receive one $10 credit and one $5 credit in your Instacart account each month'
171
+ - rule: rideshare
172
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-quest
173
+ quote: 'up to $8 back as a statement credit each month from January through November'
174
+ - rule: rideshare
175
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-quest
176
+ quote: 'Yearly opt-in is required.'
177
+ - rule: jsx
178
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-quest
179
+ quote: 'Get up to $150 back as a statement credit each anniversary year when you book flights directly with JSX'
180
+ - rule: renowned-hotels-credit
181
+ url: https://creditcards.chase.com/travel-credit-cards/united/united-quest
182
+ quote: 'Receive up to $150 back in statement credits each anniversary year on hotel accommodations'
@@ -30,9 +30,22 @@ rules:
30
30
  match: { merchants: [american-airlines] }
31
31
  rate: 4
32
32
  note: Items billed by American Airlines as the merchant of record. Car rentals booked on aadvantagecars.com and hotels booked on aadvantagehotels.com don't count. Rises to 5x for the rest of the calendar year after $150,000 in total card spend that year.
33
- # Not modeled: Admirals Club membership, AA Vacations, Lyft, Avis/Budget and inflight credits, Loyalty Point bonuses.
33
+ # Not modeled: Admirals Club membership, the Lyft credit (after 3 rides a month), inflight and inKind dining credits, Loyalty Point bonuses.
34
34
  todo:
35
35
  - 5x on American Airlines after $150,000 in calendar-year spend isn't modeled; the schema can't raise a rate after a spend threshold.
36
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
37
+ # Merchant statement credits, on top of what the purchase earns.
38
+ credits:
39
+ - id: aa-vacations
40
+ match: { merchants: [american-airlines-vacations] }
41
+ amount: 250
42
+ period: half_year
43
+ note: 'American Airlines Vacations packages or experiences: up to $250 from January through June and $250 from July through December.'
44
+ - id: avis-budget
45
+ match: { merchants: [avis, budget] }
46
+ amount: 120
47
+ period: calendar_year
48
+ note: 'Prepaid car rentals booked directly on avis.com or budget.com.'
36
49
  evidence:
37
50
  - rule: base_rate
38
51
  url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
@@ -67,3 +80,15 @@ evidence:
67
80
  - rule: foreign_transaction_fee
68
81
  url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
69
82
  quote: 'Fee for Foreign Purchases - None'
83
+ - rule: aa-vacations
84
+ url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
85
+ quote: 'Earn up to $250 on purchases January through June and up to $250 July through December.'
86
+ - rule: aa-vacations
87
+ url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
88
+ quote: 'eligible American Airlines Vacations℠ travel packages or experiences'
89
+ - rule: avis-budget
90
+ url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
91
+ quote: 'Earn up to $120 in statement credits every calendar year'
92
+ - rule: avis-budget
93
+ url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
94
+ quote: 'eligible prepaid car rentals are booked directly on avis.com or budget.com'
@@ -39,9 +39,22 @@ rules:
39
39
  exclude: { merchants: [dodger-stadium, bellagio] }
40
40
  rate: 3
41
41
  note: 6x during Citi Nights (purchases authorized Friday 6 PM to Saturday 6 AM ET and Saturday 6 PM to Sunday 6 AM ET); earnrate can't see the time of a purchase, so this models the 3x rate. Includes cafes, bars, lounges, fast food, takeout and restaurant delivery services. Excludes bakeries, caterers and restaurants inside another business (hotels, stores, stadiums, grocery stores, warehouse clubs).
42
- # Not modeled: statement credits (hotel benefit, Splurge Credit, Blacklane, Global Entry/TSA PreCheck).
42
+ # Not modeled: the Splurge Credit (brands you pick) and the Global Entry/TSA PreCheck credit.
43
43
  todo:
44
44
  - Citi Nights 6x at restaurants depends on the authorization time, which the schema can't express. Modeled at 3x.
45
+ - "The issuer's terms don't say whether purchases a credit pays for earn rewards. Its credits are modeled as earning the card's rate on the whole purchase, with the credit on top."
46
+ # Merchant statement credits, on top of what the purchase earns.
47
+ credits:
48
+ - id: blacklane
49
+ match: { merchants: [blacklane] }
50
+ amount: 100
51
+ period: half_year
52
+ note: 'Blacklane chauffeur bookings: up to $100 from January through June and $100 from July through December.'
53
+ - id: hotel
54
+ match: { merchants: [citi-travel-hotels] }
55
+ amount: 300
56
+ period: calendar_year
57
+ note: 'Once a year, $300 off one hotel stay of 2 nights or more booked on cititravel.com, before taxes and fees. It applies to one stay, not split across several.'
45
58
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
46
59
  evidence:
47
60
  - rule: base_rate
@@ -83,3 +96,9 @@ evidence:
83
96
  - rule: foreign_transaction_fee
84
97
  url: https://www.citi.com/credit-cards/citi-strata-elite-credit-card
85
98
  quote: 'Fee for foreign purchases - None'
99
+ - rule: blacklane
100
+ url: https://www.citi.com/credit-cards/citi-strata-elite-credit-card
101
+ quote: 'Earn up to $100 on Blacklane purchases January through June and up to $100 July through December.'
102
+ - rule: hotel
103
+ url: https://www.citi.com/credit-cards/citi-strata-elite-credit-card
104
+ quote: 'Once per calendar year, you can enjoy $300 off a single hotel stay of 2 nights or more'
@@ -6,7 +6,7 @@ color: '#e8751a'
6
6
  issuer: discover
7
7
  network: discover
8
8
  currency: cash
9
- last_verified: 2026-11-03
9
+ last_verified: 2026-11-05
10
10
  verified_by: claude
11
11
  source_urls:
12
12
  - https://www.discover.com/credit-cards/cash-back/it-card/
@@ -18,11 +18,12 @@ source_urls:
18
18
  - https://www.discover.com/credit-cards/cash-back/cashback-bonus.html
19
19
  # The calendar page's "See our FAQs".
20
20
  - https://www.discover.com/credit-cards/card-smarts/using-cashback-bonus/
21
+ # Discover's travel-card article: the only Discover page that states the
22
+ # foreign transaction fee (the application terms' fee table has no row).
23
+ - https://www.discover.com/credit-cards/card-smarts/best-international-travel-credit-card/
21
24
  base_rate: 1
22
25
  annual_fee: 0
23
- # No page states it: the application terms' fee table lists no foreign
24
- # transaction fee row, but nothing says "None".
25
- foreign_transaction_fee: null
26
+ foreign_transaction_fee: 0
26
27
  welcome_offer:
27
28
  dollars: 200
28
29
  spend: 500
@@ -96,7 +97,6 @@ todo:
96
97
  - 'Discover has published only 2026 on its 5% calendar (Oct-Dec 2026 is the last quarter shown). Add 2027 quarters when Discover posts them.'
97
98
  - Discover's 5% activation isn't retroactive (5% applies "from 10/1/26 (or the date on which you activate 5%, whichever is later)"), and you can activate until the quarter's last day. The schema's activate_by can't say that purchases before activation earn 1%; it's set to the quarter's last day and the rule notes say so.
98
99
  - The card page's and application terms' Cashback Match terms say "through your first 365 days"; the Cashback Bonus page says "your first 12 consecutive billing periods or 365 days, whichever is longer". Modeled as 365 days, the shorter. Cash back is matched only when processed within the period, so a purchase in its last days may post too late; earnrate goes by the purchase date.
99
- - Foreign transaction fee isn't stated on any Discover page or in the application terms (their fee table has no foreign transaction row). Left null; confirm with the Cardmember Agreement or Capital One.
100
100
  - Discover says 5% purchases "must be made with merchants in the U.S." The application terms put that sentence in the general earning paragraph, so it may also apply to the 1% base and Capital One Travel; only the rotating rules are marked us_only.
101
101
  - Amusement parks, tourist attractions, aquariums, zoos, record stores, video rental, pool halls and bowling alleys earn 5% as Q4 2026 entertainment but have no earnrate category. Golf courses, country clubs and collegiate sporting events are excluded but can't be told apart from the entertainment category.
102
102
  - Third-party payment accounts and digital wallet transactions may not earn 5% if they don't carry a qualifying MCC. Not modeled.
@@ -162,6 +162,9 @@ evidence:
162
162
  - rule: annual_fee
163
163
  url: https://disclosures.capitalone.com/disclosure.42300.en-US.html
164
164
  quote: 'Annual Fee None.'
165
+ - rule: foreign_transaction_fee
166
+ url: https://www.discover.com/credit-cards/card-smarts/best-international-travel-credit-card/
167
+ quote: 'Discover® has no foreign transaction fee'
165
168
  - rule: annual_fee
166
169
  url: https://www.discover.com/credit-cards/cash-back/it-card/
167
170
  quote: 'No, there is no annual fee for the Discover it Card.'
@@ -0,0 +1,60 @@
1
+ id: fidelity-rewards-visa-signature
2
+ name: Fidelity Rewards Visa Signature Card
3
+ short_name: Fidelity Rewards Visa
4
+ color: '#2e7d32'
5
+ # Issued by Elan Financial Services; Fidelity only markets it. Rewards are
6
+ # Reward Points, and 2 points per $1 are worth 2% only when deposited into an
7
+ # eligible Fidelity account (brokerage, Cash Management, IRA, HSA, 529,
8
+ # Charitable). Other redemptions are worth less, at rates Elan doesn't publish.
9
+ issuer: elan
10
+ network: visa
11
+ currency: cash
12
+ last_verified: 2026-11-04
13
+ verified_by: claude
14
+ source_urls:
15
+ - https://www.fidelity.com/spend-save/visa-signature-card
16
+ - https://www.fidelity.com/spend-save/faqs-rewards-credit-cards
17
+ # Elan's rates-and-fees and rewards summary, linked from the card page's
18
+ # "Terms and Conditions". The query string is that link's offer; Elan may
19
+ # change it.
20
+ - https://online1.elancard.com/pdap/terms?locationCode=24193&offerId=5W8QWVRP5M&sourceCode=88155&st=y
21
+ # Units are cents per dollar when the points go into a Fidelity account: 2
22
+ # points per $1, each converted to its "equivalent dollar amount" (1¢).
23
+ base_rate: 2
24
+ annual_fee: 0
25
+ foreign_transaction_fee: 0
26
+ todo:
27
+ - "The 2% needs an open, funded Fidelity account to deposit into (opening one is free, and the card itself doesn't need one). Redeemed for travel, merchandise, gift cards or a statement credit, points are worth less, at values no readable Elan or Fidelity page states, so `cash` at 2% assumes the Fidelity deposit."
28
+ - "Up to $100 in Reward Points back for a Global Entry or TSA PreCheck application fee paid with the card isn't modeled (a fee credit, not a welcome offer)."
29
+ - "The full Rewards Program Rules come only with the card (online through the Rewards tab once you log in), so no readable page lists more exclusions than the summary in Elan's terms."
30
+ evidence:
31
+ - rule: base_rate
32
+ url: https://www.fidelity.com/spend-save/visa-signature-card
33
+ quote: 'Earn unlimited 2% cash back 1 when deposited into an eligible, Fidelity account'
34
+ - rule: base_rate
35
+ url: https://www.fidelity.com/spend-save/faqs-rewards-credit-cards
36
+ quote: 'You earn 2 Points for every $1 that you spend on eligible net purchases'
37
+ - rule: base_rate
38
+ url: https://www.fidelity.com/spend-save/faqs-rewards-credit-cards
39
+ quote: 'The 2% cash back value applies only to Points redeemed for a deposit into an eligible Fidelity account.'
40
+ - rule: base_rate
41
+ url: https://www.fidelity.com/spend-save/faqs-rewards-credit-cards
42
+ quote: 'your Points will automatically be converted to the equivalent dollar amount'
43
+ - rule: base_rate
44
+ url: https://online1.elancard.com/pdap/terms?locationCode=24193&offerId=5W8QWVRP5M&sourceCode=88155&st=y
45
+ quote: 'you will receive 2 Reward Points'
46
+ - rule: base_rate
47
+ url: https://online1.elancard.com/pdap/terms?locationCode=24193&offerId=5W8QWVRP5M&sourceCode=88155&st=y
48
+ quote: 'The number of Points that may accumulate in any monthly billing cycle is unlimited.'
49
+ - rule: annual_fee
50
+ url: https://www.fidelity.com/spend-save/visa-signature-card
51
+ quote: 'No annual fee, foreign transaction fee , caps, limits, or expirations'
52
+ - rule: annual_fee
53
+ url: https://online1.elancard.com/pdap/terms?locationCode=24193&offerId=5W8QWVRP5M&sourceCode=88155&st=y
54
+ quote: 'Annual Fee Annual Membership Fee None'
55
+ - rule: foreign_transaction_fee
56
+ url: https://online1.elancard.com/pdap/terms?locationCode=24193&offerId=5W8QWVRP5M&sourceCode=88155&st=y
57
+ quote: 'Foreign Transaction None Penalty Fees'
58
+ - rule: foreign_transaction_fee
59
+ url: https://www.fidelity.com/spend-save/visa-signature-card
60
+ quote: 'Plus no foreign transaction fees.'
@@ -0,0 +1,61 @@
1
+ id: navy-federal-cash-rewards-plus
2
+ name: Navy Federal cashRewards Plus Credit Card
3
+ short_name: NFCU cashRewards Plus
4
+ color: '#1b3a6b'
5
+ # Navy Federal takes one cashRewards application and issues this card when
6
+ # the approved credit limit is $5,000 or more, or the cashRewards
7
+ # (navy-federal-cash-rewards) under $5,000.
8
+ issuer: navy-federal
9
+ # Issued as a Visa Signature or a World Mastercard; the earn rate is the
10
+ # same on both.
11
+ network: visa
12
+ currency: cash
13
+ last_verified: 2026-11-04
14
+ verified_by: claude
15
+ source_urls:
16
+ - https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
17
+ - https://www.navyfederal.org/loans-cards/credit-cards/faqs.html
18
+ - https://www.navyfederal.org/membership/eligibility.html
19
+ base_rate: 2
20
+ annual_fee: 0
21
+ foreign_transaction_fee: 0
22
+ welcome_offer:
23
+ dollars: 250
24
+ spend: 2500
25
+ months: 3
26
+ valid_to: 2027-01-03
27
+ note: The page says within 90 days of account opening, modeled as 3 months. For accounts applied for from 07/01/2026 through 01/03/2027; one promotional offer per account opening.
28
+ requires_membership: navy-federal # eligibility-based, no yearly fee
29
+ evidence:
30
+ - rule: base_rate
31
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
32
+ quote: 'Unlimited 2% cash back on all purchases with cashRewards Plus'
33
+ - rule: base_rate
34
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
35
+ quote: 'a cashRewards Plus card with 2% cash back if it’s $5,000 or more'
36
+ - rule: annual_fee
37
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
38
+ quote: 'No annual fee'
39
+ - rule: foreign_transaction_fee
40
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
41
+ quote: 'No balance transfer fees No foreign transaction fees'
42
+ - rule: foreign_transaction_fee
43
+ url: https://www.navyfederal.org/loans-cards/credit-cards/faqs.html
44
+ quote: 'We don’t charge foreign transaction fees on any of our credit cards'
45
+ - rule: welcome_offer
46
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
47
+ quote: 'You can earn $250 bonus cash when you spend $2,500 within 90 days of account opening.'
48
+ - rule: welcome_offer
49
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
50
+ quote: 'Offer valid for accounts applied for between 07/01/2026 and 01/03/2027.'
51
+ - rule: requires_membership
52
+ url: https://www.navyfederal.org/loans-cards/credit-cards/faqs.html
53
+ quote: 'To apply for a Navy Federal credit card, you’ll need to be a Navy Federal member.'
54
+ - rule: requires_membership
55
+ url: https://www.navyfederal.org/membership/eligibility.html
56
+ quote: 'A Membership Savings Account with a $5 minimum balance is required to establish and maintain membership.'
57
+ todo:
58
+ - 'Membership is by eligibility, not a yearly fee: the armed forces, veterans, DoD civilians and contractors, and their families and household members, with a $5 minimum balance in a Membership Savings Account.'
59
+ - "Which card an applicant gets depends on the credit limit Navy Federal approves ($5,000 or more: this card at 2%; under $5,000: cashRewards at 1.5%). earnrate can't tell which one an applicant will get; the welcome offer is the same on both."
60
+ - 'The card is issued as a Visa Signature or a World Mastercard; network is set to visa. Acceptance and network benefits differ, not the earn rate.'
61
+ - 'The rates and fees table and the rewards terms are PDFs, read 2026-11-04 (navyfederal.org/content/dam/nfculibs/pdfs/credit-debit-cards/nfcu_573cash.pdf, "Annual Fees" and "Foreign Transaction" rows, and nfcu_829.pdf, the "cashRewards Card Product Earn Rate" table). Re-check them by hand when the source check flags this card.'
@@ -0,0 +1,60 @@
1
+ id: navy-federal-cash-rewards
2
+ name: Navy Federal cashRewards Credit Card
3
+ short_name: NFCU cashRewards
4
+ color: '#1b3a6b'
5
+ # Navy Federal takes one cashRewards application and issues this card when
6
+ # the approved credit limit is under $5,000, or the cashRewards Plus
7
+ # (navy-federal-cash-rewards-plus) at $5,000 or more.
8
+ issuer: navy-federal
9
+ # Issued as a Visa or a Mastercard; the earn rate is the same on both.
10
+ network: visa
11
+ currency: cash
12
+ last_verified: 2026-11-04
13
+ verified_by: claude
14
+ source_urls:
15
+ - https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
16
+ - https://www.navyfederal.org/loans-cards/credit-cards/faqs.html
17
+ - https://www.navyfederal.org/membership/eligibility.html
18
+ base_rate: 1.5
19
+ annual_fee: 0
20
+ foreign_transaction_fee: 0
21
+ welcome_offer:
22
+ dollars: 250
23
+ spend: 2500
24
+ months: 3
25
+ valid_to: 2027-01-03
26
+ note: The page says within 90 days of account opening, modeled as 3 months. For accounts applied for from 07/01/2026 through 01/03/2027; one promotional offer per account opening.
27
+ requires_membership: navy-federal # eligibility-based, no yearly fee
28
+ evidence:
29
+ - rule: base_rate
30
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
31
+ quote: 'Unlimited 1.5% cash back on all purchases with cashRewards'
32
+ - rule: base_rate
33
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
34
+ quote: 'You’ll get a cashRewards card with 1.5% cash back if your credit limit is under $5,000'
35
+ - rule: annual_fee
36
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
37
+ quote: 'No annual fee'
38
+ - rule: foreign_transaction_fee
39
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
40
+ quote: 'No balance transfer fees No foreign transaction fees'
41
+ - rule: foreign_transaction_fee
42
+ url: https://www.navyfederal.org/loans-cards/credit-cards/faqs.html
43
+ quote: 'We don’t charge foreign transaction fees on any of our credit cards'
44
+ - rule: welcome_offer
45
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
46
+ quote: 'You can earn $250 bonus cash when you spend $2,500 within 90 days of account opening.'
47
+ - rule: welcome_offer
48
+ url: https://www.navyfederal.org/loans-cards/credit-cards/cash-rewards.html
49
+ quote: 'Offer valid for accounts applied for between 07/01/2026 and 01/03/2027.'
50
+ - rule: requires_membership
51
+ url: https://www.navyfederal.org/loans-cards/credit-cards/faqs.html
52
+ quote: 'To apply for a Navy Federal credit card, you’ll need to be a Navy Federal member.'
53
+ - rule: requires_membership
54
+ url: https://www.navyfederal.org/membership/eligibility.html
55
+ quote: 'A Membership Savings Account with a $5 minimum balance is required to establish and maintain membership.'
56
+ todo:
57
+ - 'Membership is by eligibility, not a yearly fee: the armed forces, veterans, DoD civilians and contractors, and their families and household members, with a $5 minimum balance in a Membership Savings Account.'
58
+ - "Which card an applicant gets depends on the credit limit Navy Federal approves (under $5,000: this card at 1.5%; $5,000 or more: cashRewards Plus at 2%). earnrate can't tell which one an applicant will get; the welcome offer is the same on both."
59
+ - 'The card is issued as a Visa or a Mastercard; network is set to visa. Acceptance and network benefits differ, not the earn rate.'
60
+ - 'The rates and fees table and the rewards terms are PDFs, read 2026-11-04 (navyfederal.org/content/dam/nfculibs/pdfs/credit-debit-cards/nfcu_573cash.pdf, "Annual Fees" and "Foreign Transaction" rows, and nfcu_829.pdf, the "cashRewards Card Product Earn Rate" table). Re-check them by hand when the source check flags this card.'