earnrate 0.2.11 → 0.2.13

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 (158) hide show
  1. package/README.md +37 -12
  2. package/data/CHANGELOG.md +291 -0
  3. package/data/VERSION +1 -1
  4. package/data/cards/amex-blue-business-plus.yaml +1 -0
  5. package/data/cards/amex-blue-cash-everyday.yaml +29 -2
  6. package/data/cards/amex-blue-cash-preferred.yaml +26 -0
  7. package/data/cards/amex-business-gold.yaml +169 -0
  8. package/data/cards/amex-business-platinum.yaml +184 -0
  9. package/data/cards/amex-delta-skymiles-blue.yaml +91 -0
  10. package/data/cards/amex-delta-skymiles-gold.yaml +29 -1
  11. package/data/cards/amex-delta-skymiles-platinum.yaml +35 -1
  12. package/data/cards/amex-delta-skymiles-reserve.yaml +35 -1
  13. package/data/cards/amex-gold.yaml +53 -0
  14. package/data/cards/amex-hilton-honors-aspire.yaml +25 -1
  15. package/data/cards/amex-hilton-honors-business.yaml +106 -0
  16. package/data/cards/amex-hilton-honors-surpass.yaml +16 -1
  17. package/data/cards/amex-hilton-honors.yaml +2 -0
  18. package/data/cards/amex-marriott-bonvoy-bevy.yaml +2 -0
  19. package/data/cards/amex-marriott-bonvoy-brilliant.yaml +17 -1
  20. package/data/cards/amex-marriott-bonvoy-business.yaml +116 -0
  21. package/data/cards/amex-platinum.yaml +111 -0
  22. package/data/cards/apple-card.yaml +76 -0
  23. package/data/cards/bank-of-america-atmos-rewards-ascent.yaml +1 -0
  24. package/data/cards/bank-of-america-atmos-rewards-business.yaml +2 -0
  25. package/data/cards/bank-of-america-atmos-rewards-summit.yaml +1 -0
  26. package/data/cards/bank-of-america-customized-cash-rewards.yaml +34 -1
  27. package/data/cards/bank-of-america-premium-rewards.yaml +134 -0
  28. package/data/cards/bank-of-america-travel-rewards.yaml +123 -0
  29. package/data/cards/bank-of-america-unlimited-cash-rewards.yaml +83 -0
  30. package/data/cards/barclays-jetblue-plus.yaml +86 -0
  31. package/data/cards/bilt-blue.yaml +60 -0
  32. package/data/cards/bilt-obsidian.yaml +13 -2
  33. package/data/cards/bilt-palladium.yaml +86 -0
  34. package/data/cards/caltech-efcu-platinum-mastercard.yaml +50 -0
  35. package/data/cards/capital-one-kohls-card.yaml +1 -0
  36. package/data/cards/capital-one-kohls-rewards-visa.yaml +1 -0
  37. package/data/cards/capital-one-quicksilver.yaml +2 -0
  38. package/data/cards/capital-one-rei-co-op-mastercard.yaml +62 -0
  39. package/data/cards/capital-one-savor.yaml +2 -0
  40. package/data/cards/capital-one-spark-cash-plus.yaml +80 -0
  41. package/data/cards/capital-one-venture-x-business.yaml +124 -0
  42. package/data/cards/capital-one-venture-x.yaml +32 -2
  43. package/data/cards/capital-one-venture.yaml +2 -0
  44. package/data/cards/chase-aeroplan.yaml +16 -0
  45. package/data/cards/chase-freedom-flex.yaml +1 -0
  46. package/data/cards/chase-freedom-rise.yaml +29 -0
  47. package/data/cards/chase-freedom-unlimited.yaml +1 -0
  48. package/data/cards/chase-ihg-one-rewards-business.yaml +28 -1
  49. package/data/cards/chase-ihg-one-rewards-premier-select.yaml +18 -0
  50. package/data/cards/chase-ihg-one-rewards-premier.yaml +16 -0
  51. package/data/cards/chase-ihg-one-rewards.yaml +1 -0
  52. package/data/cards/chase-ink-business-cash.yaml +14 -0
  53. package/data/cards/chase-ink-business-preferred.yaml +1 -0
  54. package/data/cards/chase-ink-business-unlimited.yaml +80 -0
  55. package/data/cards/chase-marriott-bonvoy-bold.yaml +1 -0
  56. package/data/cards/chase-marriott-bonvoy-boundless.yaml +2 -0
  57. package/data/cards/chase-prime-visa.yaml +1 -0
  58. package/data/cards/chase-sapphire-preferred.yaml +12 -0
  59. package/data/cards/chase-sapphire-reserve.yaml +45 -4
  60. package/data/cards/chase-southwest-performance-business.yaml +2 -0
  61. package/data/cards/chase-southwest-plus.yaml +2 -0
  62. package/data/cards/chase-southwest-premier-business.yaml +2 -0
  63. package/data/cards/chase-southwest-premier.yaml +2 -0
  64. package/data/cards/chase-southwest-priority.yaml +2 -0
  65. package/data/cards/chase-united-business.yaml +33 -0
  66. package/data/cards/chase-united-club-business.yaml +41 -0
  67. package/data/cards/chase-united-club.yaml +41 -0
  68. package/data/cards/chase-united-explorer.yaml +33 -0
  69. package/data/cards/chase-united-gateway.yaml +1 -0
  70. package/data/cards/chase-united-quest.yaml +41 -0
  71. package/data/cards/citi-aadvantage-business.yaml +2 -0
  72. package/data/cards/citi-aadvantage-executive.yaml +28 -1
  73. package/data/cards/citi-aadvantage-globe.yaml +2 -0
  74. package/data/cards/citi-aadvantage-mileup.yaml +2 -0
  75. package/data/cards/citi-aadvantage-platinum-select.yaml +2 -0
  76. package/data/cards/citi-costco-anywhere-visa-business.yaml +2 -0
  77. package/data/cards/citi-costco-anywhere-visa.yaml +2 -0
  78. package/data/cards/citi-custom-cash.yaml +1 -0
  79. package/data/cards/citi-double-cash.yaml +1 -0
  80. package/data/cards/citi-my-best-buy-visa.yaml +1 -0
  81. package/data/cards/citi-strata-elite.yaml +21 -1
  82. package/data/cards/citi-strata-premier.yaml +1 -0
  83. package/data/cards/citi-strata.yaml +164 -0
  84. package/data/cards/discover-it-cash-back.yaml +22 -3
  85. package/data/cards/fidelity-rewards-visa-signature.yaml +60 -0
  86. package/data/cards/navy-federal-cash-rewards-plus.yaml +61 -0
  87. package/data/cards/navy-federal-cash-rewards.yaml +60 -0
  88. package/data/cards/navy-federal-more-rewards-amex.yaml +92 -0
  89. package/data/cards/paypal-cashback-mastercard.yaml +52 -0
  90. package/data/cards/penfed-power-cash-rewards.yaml +47 -0
  91. package/data/cards/sams-club-mastercard.yaml +68 -0
  92. package/data/cards/sofi-unlimited-2.yaml +1 -0
  93. package/data/cards/td-bank-nordstrom-credit-card.yaml +1 -0
  94. package/data/cards/td-bank-nordstrom-visa.yaml +1 -0
  95. package/data/cards/td-bank-target-circle-card.yaml +1 -0
  96. package/data/cards/usbank-altitude-connect.yaml +156 -0
  97. package/data/cards/usbank-altitude-go.yaml +124 -0
  98. package/data/cards/usbank-cash-plus.yaml +1 -0
  99. package/data/cards/usbank-smartly.yaml +107 -0
  100. package/data/cards/venmo-credit-card.yaml +151 -0
  101. package/data/cards/verizon-visa-card.yaml +122 -0
  102. package/data/cards/wells-fargo-active-cash.yaml +1 -0
  103. package/data/cards/wells-fargo-autograph-journey.yaml +73 -0
  104. package/data/cards/wells-fargo-autograph.yaml +1 -0
  105. package/data/categories.yaml +3 -1
  106. package/data/currencies.yaml +48 -0
  107. package/data/issuers.yaml +44 -1
  108. package/data/memberships.yaml +45 -0
  109. package/data/merchants/overrides.yaml +947 -1
  110. package/data/merchants/seed.yaml +1916 -62
  111. package/dist/cli/args.js +18 -0
  112. package/dist/cli/explore.js +10 -1
  113. package/dist/cli/import.js +2 -2
  114. package/dist/cli/run.js +4 -1
  115. package/dist/cli/wallet.js +37 -3
  116. package/dist/data/file-store.js +5 -2
  117. package/dist/data/integrity.js +59 -0
  118. package/dist/data/store.js +4 -1
  119. package/dist/data/wallet-edit.js +28 -7
  120. package/dist/engine/cheat-sheet.js +17 -5
  121. package/dist/engine/checklist.js +38 -6
  122. package/dist/engine/credits.js +65 -0
  123. package/dist/engine/evaluate.js +57 -18
  124. package/dist/engine/explore.js +70 -7
  125. package/dist/engine/intro.js +36 -0
  126. package/dist/engine/offers.js +2 -1
  127. package/dist/engine/periods.js +10 -3
  128. package/dist/engine/recommend.js +101 -20
  129. package/dist/engine/record.js +43 -1
  130. package/dist/engine/rotation.js +3 -0
  131. package/dist/engine/rule-text.js +28 -3
  132. package/dist/engine/setup.js +20 -3
  133. package/dist/engine/simulate.js +10 -1
  134. package/dist/engine/text.js +107 -0
  135. package/dist/engine/wallet-change.js +57 -4
  136. package/dist/engine/wallet-summary.js +54 -6
  137. package/dist/format/card-art.js +21 -0
  138. package/dist/format/card-text.js +4 -3
  139. package/dist/format/cards.js +1 -0
  140. package/dist/format/cheat-sheet.js +2 -0
  141. package/dist/format/explore.js +20 -4
  142. package/dist/format/recommendation.js +6 -2
  143. package/dist/format/wallet-yaml.js +1 -0
  144. package/dist/format/wallet.js +15 -5
  145. package/dist/import/analyze.js +8 -2
  146. package/dist/mcp/inputs.js +13 -0
  147. package/dist/mcp/prompts.js +9 -1
  148. package/dist/mcp/schemas.js +87 -1
  149. package/dist/mcp/tools/account.js +3 -1
  150. package/dist/mcp/tools/answers.js +9 -4
  151. package/dist/mcp/tools/wallet.js +20 -8
  152. package/dist/merchants/resolve.js +8 -0
  153. package/dist/schema/card.js +60 -3
  154. package/dist/schema/common.js +1 -1
  155. package/dist/schema/issuer.js +4 -0
  156. package/dist/schema/merchant.js +3 -0
  157. package/dist/schema/wallet.js +11 -0
  158. package/package.json +12 -3
@@ -1,5 +1,6 @@
1
1
  id: bilt-obsidian
2
2
  name: Bilt Obsidian Card
3
+ color: '#1a1a1a'
3
4
  # Issued by Column N.A. and serviced by Cardless; Bilt runs the rewards.
4
5
  # Full earning terms: https://www.bilt.com/terms/bilt-card-offer-terms (PDF,
5
6
  # not in source_urls because the source checker can't read PDFs).
@@ -55,8 +56,7 @@ rules:
55
56
  }
56
57
  rate: 2
57
58
  note: Booked directly with airlines, hotels, motels, resorts, cruise lines and car rental agencies, by Mastercard merchant code. Travel agencies and transit don't count.
58
- # Not modeled on purpose: the $100 Bilt Travel Hotel credit and the $200 Bilt
59
- # Cash welcome bonus.
59
+ # Not modeled on purpose: the $200 Bilt Cash welcome bonus.
60
60
  todo:
61
61
  - Rent and mortgage paid through Bilt earn 0X-1.25X depending on the cycle's everyday spend as a share of the housing payment (25%/50%/75%/100% tiers give 0.5X/0.75X/1X/1.25X; below 25% a flat 250 points). earnrate has no housing category or spend-ratio rule.
62
62
  - The Flexible Bilt Cash option earns 4% Bilt Cash on everyday spend on top of points, but drops the housing multiplier (housing points must be bought with Bilt Cash, $3 per 100 points). Bilt Cash is a second currency; not modeled.
@@ -65,6 +65,14 @@ todo:
65
65
  - Walgreens in-store (+1X, and +2X on Walgreens-brand items until December 11, 2026, per the Bilt Rewards Points Earning Terms PDF at bilt.com/terms/earn), Metropolis parking, fitness classes and Bilt Home Delivery add Bilt bonuses not stated on an HTML page; not modeled.
66
66
  - The Bilt Card Offer Terms PDF counts bakeries (MCC 5462) in the 3X dining pick, but a choice option can only list categories and earnrate's dining category doesn't include bakeries, so bakery purchases get 1X here.
67
67
  - 'Welcome offer not modeled: the page offers $200 in Bilt Cash upon approval with no spend required. Bilt Cash is a second currency (not BILT points or cash), and this file already skips it on purpose.'
68
+ - "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."
69
+ # Merchant statement credits, on top of what the purchase earns.
70
+ credits:
71
+ - id: hotel-credit
72
+ match: { merchants: [bilt-travel-hotels] }
73
+ amount: 50
74
+ period: half_year
75
+ note: 'Hotel stays of 2 nights or more booked through Bilt Travel: $50 from January through June and $50 from July through December, no rollover.'
68
76
  # Program text backing each rule; `yarn check-sources` checks it weekly.
69
77
  evidence:
70
78
  - rule: base_rate
@@ -94,3 +102,6 @@ evidence:
94
102
  - rule: foreign_transaction_fee
95
103
  url: https://www.bilt.com/card/obsidian
96
104
  quote: 'Enjoy no foreign transaction fees when traveling internationally'
105
+ - rule: hotel-credit
106
+ url: https://www.bilt.com/card/obsidian
107
+ quote: '$100 Bilt Travel Hotel credit distributed as $50 semi-annually (2-night minimum stay at Bilt Travel Portal properties)'
@@ -0,0 +1,86 @@
1
+ id: bilt-palladium
2
+ name: Bilt Palladium Card
3
+ color: '#8a8d91'
4
+ # Issued by Column N.A. and serviced by Cardless; Bilt runs the rewards.
5
+ # Full earning terms are in the Bilt Card Offer Terms PDF, which the source
6
+ # checker can't read, so they're not in source_urls.
7
+ issuer: column
8
+ network: mastercard # World Legend Mastercard, per the card page's FAQ
9
+ currency: BILT
10
+ last_verified: 2026-11-04
11
+ verified_by: claude
12
+ source_urls:
13
+ - https://www.bilt.com/card/palladium
14
+ - https://www.bilt.com/card
15
+ base_rate: 2
16
+ annual_fee: 495
17
+ foreign_transaction_fee: 0
18
+ welcome_offer:
19
+ points: 50000
20
+ spend: 4000
21
+ months: 3
22
+ note: 'Within 90 days of account opening, on purchases other than rent or mortgage. Also Bilt Gold status and $300 in Bilt Cash on approval, which earnrate does not value. For new Bilt Card 2.0 cardholders.'
23
+ rules:
24
+ - id: bilt-travel-hotels
25
+ match: { merchants: [bilt-travel-hotels] }
26
+ rate: 4
27
+ note: 2X card earn plus 2 Bilt Travel Portal bonus points on hotels booked at biltrewards.com/travel.
28
+ - id: bilt-travel-flights
29
+ match: { merchants: [bilt-travel-flights] }
30
+ rate: 3
31
+ note: 2X card earn plus 1 Bilt Travel Portal bonus point on flights booked at biltrewards.com/travel.
32
+ - id: lyft
33
+ match: { merchants: [lyft] }
34
+ rate: 4
35
+ requires: { activation: true }
36
+ note: 2X card earn plus 2X Bilt bonus on eligible rides after linking Bilt and Lyft accounts in the Bilt app. Uncapped.
37
+ # Not modeled on purpose: $200 annual Bilt Cash and Priority Pass.
38
+ todo:
39
+ - Rent and mortgage paid through Bilt earn 0.5X-1.25X depending on the cycle's everyday spend as a share of the housing payment (25%/50%/75%/100% give 0.5X/0.75X/1X/1.25X; below 25% a flat 250 points). earnrate has no housing category or spend-ratio rule.
40
+ - Bilt Neighborhood Dining restaurants add a per-restaurant bonus (usually +2-3X, up to 5X total). It varies by restaurant, so it isn't modeled.
41
+ - Point Accelerator (spend $200 Bilt Cash for +1X on the next $5,000, up to five times a year) isn't modeled.
42
+ - "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."
43
+ # Merchant statement credits, on top of what the purchase earns.
44
+ credits:
45
+ - id: hotel-credit
46
+ match: { merchants: [bilt-travel-hotels] }
47
+ amount: 200
48
+ period: half_year
49
+ note: 'Hotel stays of 2 nights or more booked through Bilt Travel: $200 from January through June and $200 from July through December.'
50
+ evidence:
51
+ - rule: base_rate
52
+ url: https://www.bilt.com/card/palladium
53
+ quote: '4X on Lyft, 2X points on all everyday purchases'
54
+ - rule: bilt-travel-hotels
55
+ url: https://www.bilt.com/card/palladium
56
+ quote: 'the Palladium Card earns +2X on hotels and +1X on flights stacked on top of its 2X base rate.'
57
+ - rule: bilt-travel-hotels
58
+ url: https://www.bilt.com/card/palladium
59
+ quote: 'That delivers 4X total on hotels and 3X total on flights booked at biltrewards.com/travel.'
60
+ - rule: bilt-travel-flights
61
+ url: https://www.bilt.com/card/palladium
62
+ quote: 'That delivers 4X total on hotels and 3X total on flights booked at biltrewards.com/travel.'
63
+ - rule: lyft
64
+ url: https://www.bilt.com/card/palladium
65
+ quote: 'you earn 4X total Bilt Points per dollar on Lyft'
66
+ - rule: lyft
67
+ url: https://www.bilt.com/card/palladium
68
+ quote: 'On Lyft, link your Bilt and Lyft accounts to earn an additional 2X per dollar'
69
+ - rule: annual_fee
70
+ url: https://www.bilt.com/card/palladium
71
+ quote: '$495 annual fee'
72
+ - rule: annual_fee
73
+ url: https://www.bilt.com/card
74
+ quote: 'Annual fee $0 $95 $495'
75
+ - rule: welcome_offer
76
+ url: https://www.bilt.com/card/palladium
77
+ quote: 'After you spend $4,000 on purchases (excluding rent or mortgage) in your first 90 days.'
78
+ - rule: welcome_offer
79
+ url: https://www.bilt.com/card/palladium
80
+ quote: '50,000 Bilt Points and Bilt Gold elite status are earned after spending $4,000'
81
+ - rule: foreign_transaction_fee
82
+ url: https://www.bilt.com/card/palladium
83
+ quote: 'No foreign transaction fees'
84
+ - rule: hotel-credit
85
+ url: https://www.bilt.com/card/palladium
86
+ quote: '$400 Bilt Travel Hotel credit distributed as $200 semi-annually (applicable to 2-night minimum stay'
@@ -0,0 +1,50 @@
1
+ id: caltech-efcu-platinum-mastercard
2
+ name: Caltech EFCU Platinum Mastercard
3
+ short_name: Caltech EFCU Platinum
4
+ color: '#1c2541'
5
+ # Caltech Employees Federal Credit Union's only credit card. It earns no
6
+ # rewards: none of the credit union's pages about it mentions points or cash
7
+ # back, and its benefits list names none. The Student Platinum Mastercard is
8
+ # the same card for full-time students.
9
+ issuer: caltech-efcu
10
+ network: mastercard
11
+ currency: cash
12
+ last_verified: 2026-11-04
13
+ verified_by: claude
14
+ source_urls:
15
+ - https://www.caltechefcu.org/home/products/lending/mastercard
16
+ - https://www.caltechefcu.org/home/products/lending/mastercard/disclosure
17
+ - https://www.caltechefcu.org/home/products/lending/mastercard/mastercard_faqs
18
+ - https://www.caltechefcu.org/home/products/lending/mastercard/student_mastercard
19
+ - https://www.caltechefcu.org/home/resources/fees
20
+ - https://www.caltechefcu.org/home/membership/eligibility
21
+ base_rate: 0
22
+ annual_fee: 0
23
+ foreign_transaction_fee: 0
24
+ requires_membership: caltech-efcu
25
+ evidence:
26
+ - rule: base_rate
27
+ url: https://www.caltechefcu.org/home/products/lending/mastercard
28
+ quote: 'Cardholder Benefits Manage your account online Easy payment methods Mastercard ATM access'
29
+ - rule: annual_fee
30
+ url: https://www.caltechefcu.org/home/products/lending/mastercard/disclosure
31
+ quote: 'Annual Fee NONE'
32
+ - rule: annual_fee
33
+ url: https://www.caltechefcu.org/home/products/lending/mastercard
34
+ quote: 'No annual fee'
35
+ - rule: foreign_transaction_fee
36
+ url: https://www.caltechefcu.org/home/products/lending/mastercard/disclosure
37
+ quote: 'Foreign Transaction NONE'
38
+ - rule: foreign_transaction_fee
39
+ url: https://www.caltechefcu.org/home/products/lending/mastercard
40
+ quote: 'No foreign transaction fee'
41
+ - rule: requires_membership
42
+ url: https://www.caltechefcu.org/home/products/lending/mastercard
43
+ quote: 'Log in to eBranch and select ‘Apply for a Loan’ to get started.'
44
+ - rule: requires_membership
45
+ url: https://www.caltechefcu.org/home/membership/eligibility
46
+ quote: 'serves an exclusive field of membership'
47
+ todo:
48
+ - "Membership is by eligibility, not a yearly fee: Caltech, JPL and affiliate employees, Caltech students and alumni association members, and their immediate family, with a $5 minimum deposit and a one-time $5 membership fee. No Caltech EFCU page says in so many words that the card needs membership; the card page sends applicants to eBranch, the members' online banking."
49
+ - "caltechefcu.org sits behind Cloudflare and refuses plain curl, so the source check may list its pages as unreachable. The membership eligibility page's quote was read 2026-11-04 with an ordinary web fetch, not machine-checked."
50
+ - "For California borrowers the disclosure says the card is secured by goods bought with it and by shares held at the credit union. That doesn't change what it earns."
@@ -1,5 +1,6 @@
1
1
  id: capital-one-kohls-card
2
2
  name: Kohl's Credit Card
3
+ color: '#444a55'
3
4
  issuer: capital-one
4
5
  network: store
5
6
  only_at: [kohls]
@@ -1,5 +1,6 @@
1
1
  id: capital-one-kohls-rewards-visa
2
2
  name: Kohl's Rewards Visa
3
+ color: '#3b4048'
3
4
  issuer: capital-one
4
5
  network: visa
5
6
  currency: kohls-rewards
@@ -1,5 +1,7 @@
1
1
  id: capital-one-quicksilver
2
2
  name: Capital One Quicksilver Cash Rewards Credit Card
3
+ short_name: Capital One Quicksilver
4
+ color: '#b8bcc2'
3
5
  issuer: capital-one
4
6
  # The card page never names the network in visible text; its embedded
5
7
  # product data says MasterCard.
@@ -0,0 +1,62 @@
1
+ id: capital-one-rei-co-op-mastercard
2
+ name: REI Co-op Mastercard
3
+ color: '#2d5a45'
4
+ issuer: capital-one
5
+ # The FAQ says cardmembers get World Elite Mastercard benefits.
6
+ network: mastercard
7
+ currency: rei-rewards
8
+ last_verified: 2026-11-04
9
+ verified_by: claude
10
+ source_urls:
11
+ - https://www.capitalone.com/credit-cards/rei/
12
+ # Units are cents of REI Co-op Mastercard Rewards per dollar, so 5 is 5%.
13
+ base_rate: 1.5
14
+ annual_fee: 0
15
+ foreign_transaction_fee: 0
16
+ # REI's membership fee isn't on file (see todo).
17
+ requires_membership: rei-co-op
18
+ welcome_offer:
19
+ dollars: 100
20
+ spend: 0
21
+ months: 2
22
+ note: A $100 REI gift card, not cash back, after the first purchase outside REI within 60 days of account opening (modeled as 2 months; any non-REI purchase qualifies, so spend 0). Existing or previous REI Co-op Mastercard cardmembers aren't eligible.
23
+ rules:
24
+ - id: rei
25
+ match: { merchants: [rei] }
26
+ rate: 5
27
+ note: REI stores and REI.com, including full-price and discounted items, REI gift cards, paid REI classes and events, services and fees, and donations to the REI Cooperative Action Fund. On top of the co-op's own yearly member reward (typically 10% of eligible full-price REI purchases, however you pay), which earnrate doesn't count.
28
+ # Issuer text backing each rule; `yarn check-sources` checks it weekly.
29
+ evidence:
30
+ - rule: base_rate
31
+ url: https://www.capitalone.com/credit-cards/rei/
32
+ quote: 'You will earn 1.5% in REI Co-op Mastercard Rewards on all other purchases made outside of REI.'
33
+ - rule: rei
34
+ url: https://www.capitalone.com/credit-cards/rei/
35
+ quote: 'net purchases (purchases minus any credits or returns) made at REI retail locations or REI.com'
36
+ - rule: rei
37
+ url: https://www.capitalone.com/credit-cards/rei/
38
+ quote: 'Purchases include full-price and discount-price items, REI gift cards, paid REI classes and events, services and fees.'
39
+ - rule: rei
40
+ url: https://www.capitalone.com/credit-cards/rei/
41
+ quote: 'on top of your annual 10% Co-op Member Reward'
42
+ - rule: annual_fee
43
+ url: https://www.capitalone.com/credit-cards/rei/
44
+ quote: 'There is no annual fee associated with this card.'
45
+ - rule: foreign_transaction_fee
46
+ url: https://www.capitalone.com/credit-cards/rei/
47
+ quote: 'No foreign transaction fees Avoid additional charges or fees while abroad or with foreign currency.'
48
+ - rule: requires_membership
49
+ url: https://www.capitalone.com/credit-cards/rei/
50
+ quote: 'Choose outside every day with the REI Co-op® Mastercard®—just for REI Co-op members.'
51
+ - rule: welcome_offer
52
+ url: https://www.capitalone.com/credit-cards/rei/
53
+ quote: 'Earn a $100 REI gift card after your first non-REI purchase outside of REI within 60 days from account opening.'
54
+ - rule: welcome_offer
55
+ url: https://www.capitalone.com/credit-cards/rei/
56
+ quote: 'Existing or previous REI Co-op Mastercard cardmembers will not be eligible for this one-time gift card.'
57
+ todo:
58
+ - 'The foreign transaction fee and annual fee are quoted from the card page''s benefit tiles and FAQ. The page''s "View important rates and disclosures" link opens a modal that needs JavaScript, so its disclosures.capitalone.com address isn''t known; add it to source_urls and quote its fee rows once read in a browser.'
59
+ - "Requires an REI Co-op membership (Capital One validates it before the application). No readable page states the membership's price (rei.com refuses plain fetches, and Capital One's page doesn't say), so the rei-co-op membership has annual_fee 0 as a placeholder and nothing is counted against the card for it. Check the price and whether it's one-time or yearly on rei.com/membership by hand."
60
+ - "Rewards are spendable only at REI (REI.com, REI Outlet, REI stores and the REI app), not as cash or check; they post 1-2 business days after the purchase posts and don't expire for the life of the account."
61
+ - "Cardmember Double Rewards event: once a year, an extra 5% (10% total) on REI purchases. Capital One doesn't publish the dates, so it isn't modeled; add it as a dated rule (valid_from/valid_to) when the event is announced."
62
+ - 'The welcome offer counts only a purchase outside REI; earnrate counts any purchase toward it.'
@@ -1,5 +1,7 @@
1
1
  id: capital-one-savor
2
2
  name: Capital One Savor Rewards Credit Card
3
+ short_name: Capital One Savor
4
+ color: '#7a4a32'
3
5
  issuer: capital-one
4
6
  # The card page never names the network in visible text; its embedded
5
7
  # product data says MasterCard.
@@ -0,0 +1,80 @@
1
+ id: capital-one-spark-cash-plus
2
+ name: Capital One Spark Cash Plus
3
+ short_name: Spark Cash Plus
4
+ color: '#3a3d42'
5
+ issuer: capital-one
6
+ network: mastercard # World Elite Mastercard for Business (Spark), per capitalone.com/credit-cards/benefits-guide
7
+ currency: cash
8
+ business: true
9
+ last_verified: 2026-11-04
10
+ verified_by: claude
11
+ source_urls:
12
+ - https://www.capitalone.com/small-business/credit-cards/spark-cash-plus/
13
+ # The card page's "View important rates and disclosures" (pricing and
14
+ # rewards FAQ); the number is the page's offer id and changes with it.
15
+ - https://disclosures.capitalone.com/disclosure.41737.en-US.html
16
+ base_rate: 2
17
+ annual_fee: 150
18
+ foreign_transaction_fee: 0
19
+ welcome_offer:
20
+ dollars: 2000
21
+ spend: 30000
22
+ months: 3
23
+ note: Only through the card page; existing or previous account holders may not be eligible. A separate first-year bonus pays another $2,000 for every $500,000 spent in the first 12 months, which isn't counted here.
24
+ rules:
25
+ - id: business-travel
26
+ match:
27
+ {
28
+ merchants:
29
+ [
30
+ capital-one-business-travel-hotels,
31
+ capital-one-business-travel-vacation-rentals,
32
+ capital-one-business-travel-car-rentals,
33
+ ],
34
+ }
35
+ rate: 5
36
+ note: Only when booked through Capital One Business Travel. Hotel incidentals, upgrades and other purchases outside Capital One Business Travel earn the base 2%.
37
+ milestones:
38
+ - id: fee-refund-150k
39
+ spend: 150000
40
+ period: cardmember_year
41
+ rewards:
42
+ - $150 annual fee refunded as a statement credit
43
+ note: Net purchases by the membership anniversary date; the credit posts within two billing cycles after it.
44
+ evidence:
45
+ - rule: base_rate
46
+ url: https://www.capitalone.com/small-business/credit-cards/spark-cash-plus/
47
+ quote: 'Earn unlimited 2% cash back for your business on every purchase, everywhere'
48
+ - rule: base_rate
49
+ url: https://disclosures.capitalone.com/disclosure.41737.en-US.html
50
+ quote: 'and 2% cash back on all other purchases'
51
+ - rule: business-travel
52
+ url: https://www.capitalone.com/small-business/credit-cards/spark-cash-plus/
53
+ quote: 'Earn unlimited 5% cash back on hotels, vacation rentals and rental cars booked through Capital One Business Travel.'
54
+ - rule: business-travel
55
+ url: https://disclosures.capitalone.com/disclosure.41737.en-US.html
56
+ quote: 'You will earn 5% cash back on hotels, vacation rentals and rental cars'
57
+ - rule: business-travel
58
+ url: https://disclosures.capitalone.com/disclosure.41737.en-US.html
59
+ quote: 'such as hotel incidentals, upgrades or other expenses, will not earn the enhanced earn rate'
60
+ - rule: fee-refund-150k
61
+ url: https://www.capitalone.com/small-business/credit-cards/spark-cash-plus/
62
+ quote: 'Get your $150 annual fee refunded every year you spend at least $150,000.'
63
+ - rule: fee-refund-150k
64
+ url: https://disclosures.capitalone.com/disclosure.41737.en-US.html
65
+ quote: 'when you spend at least $150,000 in net purchases by your membership anniversary date'
66
+ - rule: annual_fee
67
+ url: https://disclosures.capitalone.com/disclosure.41737.en-US.html
68
+ quote: 'Annual Fee $150.'
69
+ - rule: welcome_offer
70
+ url: https://www.capitalone.com/small-business/credit-cards/spark-cash-plus/
71
+ quote: 'Earn a $2,000 cash bonus when you spend $30,000 in the first 3 months.'
72
+ - rule: welcome_offer
73
+ url: https://disclosures.capitalone.com/disclosure.41737.en-US.html
74
+ quote: 'You will earn a $2,000 bonus if you spend at least $30,000 within 3 months'
75
+ - rule: foreign_transaction_fee
76
+ url: https://www.capitalone.com/small-business/credit-cards/spark-cash-plus/
77
+ quote: 'Pay zero foreign transaction fees on purchases made outside of the United States'
78
+ todo:
79
+ - "The first-year bonus of $2,000 for every $500,000 spent within 12 months of enrollment isn't modeled: a milestone pays once a period, not once per multiple of a spend total."
80
+ - The rates disclosure lists no foreign transaction fee in its fee table; the 0 comes from the card page's "Pay zero foreign transaction fees".
@@ -0,0 +1,124 @@
1
+ id: capital-one-venture-x-business
2
+ name: Capital One Venture X Business
3
+ short_name: Venture X Business
4
+ color: '#2b2d31'
5
+ issuer: capital-one
6
+ network: mastercard # World Elite Mastercard for Business, per capitalone.com/credit-cards/benefits-guide
7
+ currency: C1
8
+ business: true
9
+ last_verified: 2026-11-04
10
+ verified_by: claude
11
+ source_urls:
12
+ - https://www.capitalone.com/small-business/credit-cards/venture-x-business/
13
+ # The card page's "View important rates and disclosures" (pricing and
14
+ # rewards FAQ); the number is the page's offer id and changes with it.
15
+ - https://disclosures.capitalone.com/disclosure.42243.en-US.html
16
+ base_rate: 2
17
+ annual_fee: 395
18
+ foreign_transaction_fee: 0
19
+ welcome_offer:
20
+ points: 150000
21
+ spend: 40000
22
+ months: 4
23
+ note: 'The first tier of a limited-time two-tier offer: 150,000 miles after $40,000 in the first 4 months, plus another 150,000 miles and a $1,000 Capital One Business Travel credit after $120,000 in the same 4 months. Only through the card page; it may not be available to existing or previous Capital One Business cardholders.'
24
+ rules:
25
+ - id: business-travel-hotels-and-car-rentals
26
+ match:
27
+ {
28
+ merchants:
29
+ [
30
+ capital-one-business-travel-hotels,
31
+ capital-one-business-travel-car-rentals,
32
+ ],
33
+ }
34
+ rate: 10
35
+ note: Only when booked through Capital One Business Travel. Purchases paid with the travel credits earn no miles, and hotel incidentals or upgrades paid outside Capital One Business Travel earn the base 2X.
36
+ - id: business-travel-flights-and-vacation-rentals
37
+ match:
38
+ {
39
+ merchants:
40
+ [
41
+ capital-one-business-travel-flights,
42
+ capital-one-business-travel-vacation-rentals,
43
+ ],
44
+ }
45
+ rate: 5
46
+ note: Only when booked through Capital One Business Travel.
47
+ - id: capital-one-entertainment
48
+ match: { merchants: [capital-one-entertainment] }
49
+ rate: 5
50
+ note: Tickets bought on the Capital One Entertainment ticketing platform only. Cardholder-exclusive pre-sales and tickets bought directly from Capital One Hall or Capital One Arena are excluded.
51
+ # Merchant statement credits, on top of what the purchase earns.
52
+ credits:
53
+ - id: capital-one-business-travel
54
+ match:
55
+ {
56
+ merchants:
57
+ [
58
+ capital-one-business-travel,
59
+ capital-one-business-travel-hotels,
60
+ capital-one-business-travel-vacation-rentals,
61
+ capital-one-business-travel-car-rentals,
62
+ capital-one-business-travel-flights,
63
+ ],
64
+ }
65
+ amount: 300
66
+ period: cardmember_year
67
+ note: 'A credit in Capital One Business Travel, used at checkout and good until the next account anniversary. The part it pays for earns no miles.'
68
+ evidence:
69
+ - rule: base_rate
70
+ url: https://www.capitalone.com/small-business/credit-cards/venture-x-business/
71
+ quote: 'Earn unlimited 2X miles on every purchase, everywhere, no limits or category restrictions.'
72
+ - rule: base_rate
73
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
74
+ quote: 'and 2 miles per dollar on all other purchases'
75
+ - rule: business-travel-hotels-and-car-rentals
76
+ url: https://www.capitalone.com/small-business/credit-cards/venture-x-business/
77
+ quote: 'Book through Capital One Business Travel to earn 10X miles on hotels and rental cars'
78
+ - rule: business-travel-hotels-and-car-rentals
79
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
80
+ quote: 'You will earn 10 miles per dollar on hotels and rental cars'
81
+ - rule: business-travel-hotels-and-car-rentals
82
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
83
+ quote: 'such as hotel incidentals, upgrades or other expenses, will not earn the enhanced earn rate'
84
+ - rule: business-travel-flights-and-vacation-rentals
85
+ url: https://www.capitalone.com/small-business/credit-cards/venture-x-business/
86
+ quote: 'and 5X miles on flights and vacation rentals.'
87
+ - rule: business-travel-flights-and-vacation-rentals
88
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
89
+ quote: '5 miles per dollar on flights and vacation rentals booked through Capital One Business Travel'
90
+ - rule: capital-one-entertainment
91
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
92
+ quote: 'You will earn 5 miles per dollar spent on Capital One Entertainment purchases.'
93
+ - rule: capital-one-entertainment
94
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
95
+ quote: 'Tickets purchased through the Capital One cardholder exclusive pre-sales'
96
+ - rule: annual_fee
97
+ url: https://www.capitalone.com/small-business/credit-cards/venture-x-business/
98
+ quote: '$395 annual fee'
99
+ - rule: annual_fee
100
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
101
+ quote: 'Annual Fee $395.'
102
+ - rule: welcome_offer
103
+ url: https://www.capitalone.com/small-business/credit-cards/venture-x-business/
104
+ quote: 'Spend $40,000 in the first four months and earn 150,000 miles.'
105
+ - rule: welcome_offer
106
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
107
+ quote: 'You will earn 150,000 bonus miles when you spend $40,000'
108
+ - rule: foreign_transaction_fee
109
+ url: https://www.capitalone.com/small-business/credit-cards/venture-x-business/
110
+ quote: 'Pay zero foreign transaction fees on purchases made outside of the United States'
111
+ - rule: capital-one-business-travel
112
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
113
+ quote: 'will receive a $300 Capital One Business Travel credit'
114
+ - rule: capital-one-business-travel
115
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
116
+ quote: 'Each annual Credit will expire on the next account open date anniversary.'
117
+ - rule: capital-one-business-travel
118
+ url: https://disclosures.capitalone.com/disclosure.42243.en-US.html
119
+ quote: 'Rewards will not be earned on the Credit.'
120
+ todo:
121
+ - "The welcome offer's second tier (another 150,000 miles and a $1,000 Capital One Business Travel credit after $120,000 in the first 4 months) isn't modeled: a welcome offer has one spend threshold."
122
+ - Not modeled (credits and perks, not miles per dollar) the 10,000-mile anniversary bonus, the $120 Global Entry/TSA PreCheck credit and lounge access.
123
+ - The rates disclosure lists no foreign transaction fee in its fee table; the 0 comes from the card page's "Pay zero foreign transaction fees".
124
+ - "Capital One's terms say rewards aren't earned on the part of a purchase the travel credit pays for, but earnrate counts the card's rate on the whole purchase with the credit on top (an engine gap)."
@@ -1,5 +1,7 @@
1
1
  id: capital-one-venture-x
2
2
  name: Capital One Venture X Rewards Credit Card
3
+ short_name: Capital One Venture X
4
+ color: '#2b2d31'
3
5
  issuer: capital-one
4
6
  network: visa # Visa Infinite, per the card page's footnotes
5
7
  currency: C1
@@ -36,10 +38,29 @@ rules:
36
38
  match: { merchants: [capital-one-entertainment] }
37
39
  rate: 5
38
40
  note: Tickets bought on the Capital One Entertainment ticketing platform only. Cardholder-exclusive pre-sales and tickets bought directly from Capital One Hall or Capital One Arena are excluded.
39
- # Not modeled on purpose: the $300 annual Capital One Travel credit, the
40
- # 10,000-mile anniversary bonus and the $120 Global Entry/TSA PreCheck credit.
41
+ # Not modeled on purpose: the 10,000-mile anniversary bonus and the $120
42
+ # Global Entry/TSA PreCheck credit.
41
43
  todo:
42
44
  - Neither the card page nor the rewards FAQ says whether Premier Collection and Lifestyle Collection hotel bookings earn the 10X Capital One Travel rate. Modeled as regular Capital One Travel hotels.
45
+ - "Capital One's terms say rewards aren't earned on the part of a purchase the travel credit pays for, but earnrate counts the card's rate on the whole purchase with the credit on top (an engine gap)."
46
+ # Merchant statement credits, on top of what the purchase earns.
47
+ credits:
48
+ - id: capital-one-travel
49
+ match:
50
+ {
51
+ merchants:
52
+ [
53
+ capital-one-travel,
54
+ capital-one-travel-hotels,
55
+ capital-one-travel-vacation-rentals,
56
+ capital-one-travel-car-rentals,
57
+ capital-one-travel-activities,
58
+ capital-one-travel-flights,
59
+ ],
60
+ }
61
+ amount: 300
62
+ period: cardmember_year
63
+ note: 'A credit in Capital One Travel, used at checkout and good until the next account anniversary. The part it pays for earns no miles.'
43
64
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
44
65
  evidence:
45
66
  - rule: base_rate
@@ -75,3 +96,12 @@ evidence:
75
96
  - rule: foreign_transaction_fee
76
97
  url: https://www.capitalone.com/credit-cards/venture-x/
77
98
  quote: 'No Foreign Transaction Fees'
99
+ - rule: capital-one-travel
100
+ url: https://disclosures.capitalone.com/disclosure.42201.en-US.html
101
+ quote: 'will receive a $300 Capital One Travel credit'
102
+ - rule: capital-one-travel
103
+ url: https://disclosures.capitalone.com/disclosure.42201.en-US.html
104
+ quote: 'Each annual Credit will expire on the next account open date anniversary.'
105
+ - rule: capital-one-travel
106
+ url: https://disclosures.capitalone.com/disclosure.42201.en-US.html
107
+ quote: 'Rewards will not be earned on the Credit.'
@@ -1,5 +1,7 @@
1
1
  id: capital-one-venture
2
2
  name: Capital One Venture Rewards Credit Card
3
+ short_name: Capital One Venture
4
+ color: '#1d3c6e'
3
5
  issuer: capital-one
4
6
  # The card page never names the network in visible text. Its embedded product
5
7
  # data says MasterCard; older Venture accounts may be on Visa.
@@ -1,5 +1,7 @@
1
1
  id: chase-aeroplan
2
2
  name: Chase Air Canada Aeroplan Card
3
+ short_name: Chase Aeroplan
4
+ color: '#1e1e1e'
3
5
  issuer: chase
4
6
  network: mastercard
5
7
  currency: aeroplan
@@ -76,6 +78,14 @@ milestones:
76
78
  note: 'For the primary cardmember, for the rest of that calendar year and all of the next.'
77
79
  todo:
78
80
  - 'Through December 31, 2026, the cardmember page creditcards.chase.com/aircanada lists 500 bonus points for each $2,000 spent per calendar month, up to 1,500 a month (+0.25x on the first $6,000). It is not on the product page, and the engine picks one rule rather than stacking, so it is not modeled.'
81
+ - "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."
82
+ # Merchant statement credits, on top of what the purchase earns.
83
+ credits:
84
+ - id: air-canada-credit
85
+ match: { merchants: [air-canada] }
86
+ amount: 50
87
+ period: half_year
88
+ note: 'Air Canada purchases, applied automatically: up to $50 from January through June and $50 from July through December.'
79
89
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
80
90
  evidence:
81
91
  - rule: base_rate
@@ -144,3 +154,9 @@ evidence:
144
154
  - rule: spend-75k
145
155
  url: https://creditcards.chase.com/travel-credit-cards/aircanada/aeroplan
146
156
  quote: 'Each calendar year you spend at least $75,000 in purchases on your Chase Air Canada Aeroplan Card account'
157
+ - rule: air-canada-credit
158
+ url: https://creditcards.chase.com/travel-credit-cards/aircanada/aeroplan
159
+ quote: 'up to a maximum accumulation of $50 in statement credits from January 1 through June 30'
160
+ - rule: air-canada-credit
161
+ url: https://creditcards.chase.com/travel-credit-cards/aircanada/aeroplan
162
+ quote: 'for qualifying Air Canada purchases made using your Chase Air Canada Aeroplan credit card'
@@ -1,5 +1,6 @@
1
1
  id: chase-freedom-flex
2
2
  name: Chase Freedom Flex
3
+ color: '#22314f'
3
4
  issuer: chase
4
5
  network: mastercard
5
6
  currency: cash
@@ -0,0 +1,29 @@
1
+ id: chase-freedom-rise
2
+ name: Chase Freedom Rise
3
+ color: '#2f6db5'
4
+ issuer: chase
5
+ network: visa
6
+ currency: cash
7
+ last_verified: 2026-11-04
8
+ verified_by: claude
9
+ source_urls:
10
+ - https://creditcards.chase.com/cash-back-credit-cards/freedom/rise
11
+ - https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65397.html
12
+ base_rate: 1.5
13
+ annual_fee: 0
14
+ foreign_transaction_fee: 3
15
+ # No welcome offer: the $25 statement credit for enrolling in automatic
16
+ # payments needs no spending, so it isn't a welcome offer earnrate can value.
17
+ # Issuer text backing each rule; `yarn check-sources` checks it weekly.
18
+ evidence:
19
+ - rule: base_rate
20
+ url: https://creditcards.chase.com/cash-back-credit-cards/freedom/rise
21
+ quote: 'establish credit and earn 1.5% cash back on all purchases'
22
+ - rule: annual_fee
23
+ url: https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65397.html
24
+ quote: 'Annual Membership Fee None'
25
+ - rule: foreign_transaction_fee
26
+ url: https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65397.html
27
+ quote: 'Foreign Transactions 3% of the amount of each transaction in U.S. dollars'
28
+ todo:
29
+ - "Chase doesn't say on these pages whether Freedom Rise's cash back can be moved to a Sapphire or Ink Preferred card as Ultimate Rewards points, so pools_into isn't set."
@@ -1,5 +1,6 @@
1
1
  id: chase-freedom-unlimited
2
2
  name: Chase Freedom Unlimited
3
+ color: '#2a5fa8'
3
4
  issuer: chase
4
5
  network: visa
5
6
  currency: cash