earnrate 0.2.17 → 0.2.18

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 (59) hide show
  1. package/README.md +9 -3
  2. package/data/CHANGELOG.md +19 -1
  3. package/data/VERSION +1 -1
  4. package/data/cards/amex-business-gold.yaml +1 -0
  5. package/data/cards/amex-platinum.yaml +1 -1
  6. package/data/cards/chase-freedom-flex.yaml +3 -6
  7. package/data/cards/chase-ihg-one-rewards-premier.yaml +2 -0
  8. package/data/cards/chase-united-business.yaml +3 -0
  9. package/data/cards/chase-united-club-business.yaml +5 -0
  10. package/data/cards/citi-aadvantage-business.yaml +5 -0
  11. package/data/cards/citi-aadvantage-executive.yaml +2 -0
  12. package/data/cards/citi-aadvantage-globe.yaml +2 -0
  13. package/data/cards/citi-aadvantage-mileup.yaml +4 -0
  14. package/data/cards/citi-aadvantage-platinum-select.yaml +4 -0
  15. package/data/cards/citi-costco-anywhere-visa-business.yaml +2 -0
  16. package/data/cards/citi-costco-anywhere-visa.yaml +2 -0
  17. package/data/cards/citi-custom-cash.yaml +8 -10
  18. package/data/cards/citi-double-cash.yaml +1 -0
  19. package/data/cards/citi-my-best-buy-visa.yaml +1 -0
  20. package/data/cards/citi-strata-elite.yaml +2 -0
  21. package/data/cards/citi-strata-premier.yaml +2 -0
  22. package/data/cards/td-bank-nordstrom-credit-card.yaml +1 -0
  23. package/data/cards/td-bank-nordstrom-visa.yaml +1 -0
  24. package/data/changes.yaml +2840 -0
  25. package/dist/cli/offers.js +21 -5
  26. package/dist/cli/run.js +14 -3
  27. package/dist/cli/wallet.js +28 -3
  28. package/dist/data/change-integrity.js +105 -0
  29. package/dist/data/file-store.js +5 -2
  30. package/dist/data/integrity.js +7 -0
  31. package/dist/data/load.js +5 -0
  32. package/dist/data/store.js +4 -1
  33. package/dist/data/wallet-edit.js +16 -5
  34. package/dist/engine/changes.js +124 -0
  35. package/dist/engine/checklist.js +18 -3
  36. package/dist/engine/explore.js +28 -9
  37. package/dist/engine/offers.js +52 -3
  38. package/dist/engine/periods.js +7 -0
  39. package/dist/engine/renewal.js +101 -0
  40. package/dist/engine/rule-text.js +2 -7
  41. package/dist/engine/setup.js +6 -3
  42. package/dist/engine/simulate.js +14 -7
  43. package/dist/engine/text.js +64 -0
  44. package/dist/engine/wallet-change.js +16 -8
  45. package/dist/engine/wallet-summary.js +4 -0
  46. package/dist/format/card-text.js +9 -2
  47. package/dist/format/offers.js +5 -3
  48. package/dist/format/wallet-yaml.js +3 -0
  49. package/dist/format/wallet.js +6 -1
  50. package/dist/mcp/context.js +11 -3
  51. package/dist/mcp/inputs.js +3 -1
  52. package/dist/mcp/prompts.js +3 -3
  53. package/dist/mcp/schemas.js +24 -0
  54. package/dist/mcp/tools/answers.js +42 -24
  55. package/dist/mcp/tools/wallet.js +28 -8
  56. package/dist/schema/card.js +7 -0
  57. package/dist/schema/changes.js +73 -0
  58. package/dist/schema/wallet.js +5 -1
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -62,7 +62,9 @@ Options: `--online` or `--in-store`, `--paying card|apple-pay|google-pay|paypal`
62
62
 
63
63
  `earnrate cheatsheet` prints the card to use for each everyday kind of purchase this quarter (groceries, dining, gas, Amazon, Costco, travel, streaming, drugstores, everything else), with your caps, picks and activations as they are now. `--cards` uses cards you name instead, and `--every-card` picks from every card to show what's worth getting. It's also in the My wallet tab on [earnrate.dev](https://earnrate.dev).
64
64
 
65
- `earnrate todo` lists what your saved cards need this quarter, soonest first: bonuses to activate (with Chase's deadline), categories to pick, caps running low, welcome bonuses to finish, spend bonuses you're close to, statement credits to enroll in or use, and first-year rates ending. `--ics earnrate.ics` also writes the dates as a calendar file with reminders. My wallet on earnrate.dev shows the same list as "To do now", with an "Add the dates to your calendar" button.
65
+ `earnrate todo` lists what your saved cards need this quarter, soonest first: bonuses to activate (with Chase's deadline), categories to pick, caps running low, welcome bonuses to finish, spend bonuses you're close to, statement credits to enroll in or use, first-year rates ending, and a renewal check for each fee card in the month before its anniversary. `--ics earnrate.ics` also writes the dates as a calendar file with reminders. My wallet on earnrate.dev shows the same list as "To do now", with an "Add the dates to your calendar" button.
66
+
67
+ The renewal check weighs your wallet with the card against your wallet without it, where your other cards pick up its spending: "Amex Gold renews around Nov 20 ($325 fee). At typical spending, it earns about $30 a year more than your other cards would, plus $184 in credits you use: about $111 a year short of the fee." A card that's well ahead gets one short line. It uses your My spending amounts on earnrate.dev and typical amounts elsewhere, and needs the card's anniversary (`earnrate update amex-gold --anniversary 11-20`) or its opening date. It gives the math, not a downgrade recommendation: issuers don't publish downgrade paths or retention offers.
66
68
 
67
69
  `earnrate missed` lists the stores earnrate didn't recognize when you asked here, most asked about first. They're kept only on your computer; [open an issue](https://github.com/cwasley/earnrate/issues) to suggest one for the data.
68
70
 
@@ -187,7 +189,11 @@ earnrate simulate groceries=600 other=1000 --wallet # what a new card would ad
187
189
  earnrate offers --cash
188
190
  ```
189
191
 
190
- Ranks the welcome offers on cards you don't have by first-year value: the bonus at your point values minus the first year's annual fee (and a membership the card needs, if you don't have it). An offer the issuer rules out because of a card in your wallet (or one you name with `--cards`) is marked "likely not eligible" and listed last. `--points`, `--no-fee` and `--business` narrow it down. Each offer is the public one on the issuer's page, checked weekly like the earning rules, with the issuer's eligibility rules in its note. Offers can differ by person and by how you apply, and it covers only the cards earnrate knows. There are no affiliate or apply links.
192
+ Ranks the cards you don't have by their first two years together, to answer "which card next?": what each adds to your cards at typical spending (it takes the purchases where it earns more than they do), plus its welcome bonus at your point values in year one if the minimum spend fits in the window with all your spending on it, less each year's annual fee and any membership it needs. Each card shows year one, year two, how many weeks of spending the minimum takes, and the bonus alone. Year one counts the card at its standard rates.
193
+
194
+ If you can't or won't get cards from an issuer (Chase, over its 5/24 rule), `earnrate skip-issuers chase` saves that, and next-card answers here, in "would another card help?" and in Claude leave its cards out; `--skip-issuer chase` does it for one answer, and `--none` clears the list. earnrate never assumes an issuer's application rules, since they aren't published as terms it can quote.
195
+
196
+ An offer the issuer rules out because of a card in your wallet (or one you name with `--cards`) is marked "likely not eligible" and listed last. `--points`, `--no-fee` and `--business` narrow it down. Each offer is the public one on the issuer's page, checked weekly like the earning rules, with the issuer's eligibility rules in its note. Offers can differ by person and by how you apply, and it covers only the cards earnrate knows. There are no affiliate or apply links.
191
197
 
192
198
  ### Import a statement
193
199
 
@@ -321,7 +327,7 @@ earnrate needs no account. The local version has no telemetry; the hosted server
321
327
  - **What it stores locally:** your wallet, a YAML file on your computer (`~/.earnrate/wallet.yaml` unless you set `EARNRATE_WALLET`). It lists cards by product ID, like `amex-gold`, plus your category picks, activations and how much you've spent toward caps. earnrate never asks for or stores card numbers, expiry dates, security codes or bank logins. When you ask about a store earnrate doesn't recognize, its name goes in `~/.earnrate/missed-merchants.json` (`earnrate missed` lists them; `EARNRATE_MISSED_MERCHANTS=off` keeps no list).
322
328
  - **What the local version sends:** nothing, by default. The optional merchant lookup (off unless you turn it on with your own Anthropic API key) sends only the name of a store earnrate doesn't recognize to Anthropic's API, and saves the answer in `~/.earnrate/merchant-cache.json`.
323
329
  - **AI assistants:** when you use earnrate through Claude or another assistant, that assistant's provider sees the conversation, including earnrate's answers, under its own privacy policy.
324
- - **earnrate.dev:** everything you enter on the site stays in your browser, except when you add the cheat sheet to Apple Wallet: then pass.earnrate.dev receives what the pass needs (card IDs, picks, activations, checkout names, memberships and the date) and keeps none of it. If you turn on syncing with Claude, the wallet (cards, picks, activations, memberships, point values, cap and spending totals, credits used and not used, opening dates) goes to mcp.earnrate.dev and is stored encrypted, like the connector's; a purchase you record is sent so its totals can be updated, and only the totals are kept. Searches, stores and amounts you ask about still never leave the browser. The sign-in stays in a cookie the page's scripts can't read. The site counts which of its parts get used, by name only, and counts visits with Cloudflare Web Analytics, without cookies.
330
+ - **earnrate.dev:** everything you enter on the site stays in your browser, except when you add the cheat sheet to Apple Wallet: then pass.earnrate.dev receives what the pass needs (card IDs, picks, activations, checkout names, memberships and the date) and keeps none of it. If you turn on syncing with Claude, the wallet (cards, picks, activations, memberships, point values, cap and spending totals, credits used and not used, opening dates, issuers left out of next-card answers) goes to mcp.earnrate.dev and is stored encrypted, like the connector's; a purchase you record is sent so its totals can be updated, and only the totals are kept. Searches, stores and amounts you ask about still never leave the browser. The sign-in stays in a cookie the page's scripts can't read. The site counts which of its parts get used, by name only, and counts visits with Cloudflare Web Analytics, without cookies.
325
331
  - **Retention:** locally, your data lives only in files you control, for as long as you keep them. Delete the wallet file, or clear the site's data in your browser, to remove it. A saved wallet on mcp.earnrate.dev lasts until you delete it or leave it unused for 13 months (a week, if it's never used); the record that an app is connected goes after 90 days unused.
326
332
  - **Terms:** [earnrate.dev/terms](https://earnrate.dev/terms).
327
333
  - **Contact:** [hello@earnrate.dev](mailto:hello@earnrate.dev).
package/data/CHANGELOG.md CHANGED
@@ -1,6 +1,22 @@
1
1
  # Data changelog
2
2
 
3
- Every change to card rules, merchants, categories or currencies under `data/`. Bump `data/VERSION` (`YYYY.MM.DD`, plus `.N` for a second release on the same day) and add a section here in the same commit. Each row cites the issuer page the new value came from.
3
+ Every change to card rules, merchants, categories or currencies under `data/`. Bump `data/VERSION` (`YYYY.MM.DD`, plus `.N` for a second release on the same day) and add a section here in the same commit, with the same release's entries in `data/changes.yaml` (the structured record, each change tagged by cause). Each row cites the issuer page the new value came from.
4
+
5
+ ## 2026.11.07.3
6
+
7
+ - `chase-freedom-flex`: the limited-time $250 welcome offer has ended; it's $200 after $500 in purchases in the first 3 months again. A card-page quote that ran two category names together ("Dining American Red Cross") is removed; the Q4 dining rule keeps its quotes from Chase's learn-more page. Source: [Chase](https://creditcards.chase.com/cash-back-credit-cards/freedom/flex).
8
+ - `amex-platinum`: the Equinox credit quotes Amex's new wording (still up to $300 each calendar year). Source: [Amex terms](https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/platinum-card/25330-10-0).
9
+
10
+ ## 2026.11.07.2
11
+
12
+ - `citi-custom-cash` and `amex-business-gold`: their bonus categories are marked `automatic: true`, since the issuer applies the bonus to the categories with the most spending each billing period; the cardholder doesn't pick. Answers and pages now say "the category you spend the most in each month" instead of "the category you pick". No rate changes. Sources: [Citi ThankYou terms](https://www.thankyou.com/ccterms), [Amex offer terms](https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/businessgold-card/64573-9-0#offer-terms).
13
+
14
+ ## 2026.11.07.1
15
+
16
+ Evidence quotes only; no rates, fees, offers or credits changed. No issuer changes.
17
+
18
+ - 39 quotes on 16 cards live in popups the page builds from its embedded data only when opened. Each now has `in_popup: true`, after the quote was seen in the open popup: Chase's benefit popups (`chase-ihg-one-rewards-premier`, `chase-united-business`, `chase-united-club-business`), Citi's "Additional Information" panel (`citi-aadvantage-business`, `citi-aadvantage-executive`, `citi-aadvantage-globe`, `citi-aadvantage-mileup`, `citi-aadvantage-platinum-select`, `citi-costco-anywhere-visa`, `citi-costco-anywhere-visa-business`, `citi-double-cash`, `citi-my-best-buy-visa`, `citi-strata-elite`, `citi-strata-premier`) and Nordstrom's "Terms Apply" popup (`td-bank-nordstrom-credit-card`, `td-bank-nordstrom-visa`).
19
+ - `citi-custom-cash`: the card page shows only that applications closed on May 28, 2026, so its 1% base rate and 5% top-category quotes now come from the card's ThankYou terms ("1 ThankYou Point for each $1 you spend on purchases", "5 ThankYou Points for each $1 You spend in Your highest eligible spend category each billing cycle"), and the Citi Travel rule keeps only its ThankYou terms quote. Same rates. Source: [ThankYou terms](https://www.thankyou.com/ccterms).
4
20
 
5
21
  ## 2026.11.07
6
22
 
@@ -663,6 +679,8 @@ Cards can name a paid membership they need (`requires_membership`). Costco Anywh
663
679
  | citi-costco-anywhere-visa, citi-costco-anywhere-visa-business | requires_membership | Costco membership, $65 a year | [Citi card page](https://www.citi.com/credit-cards/citi-costco-anywhere-visa-credit-card), [Costco membership page](https://www.costco.com/join-costco.html) |
664
680
  | citi-aadvantage-globe | evidence | quotes follow Citi's new wording (same rates) | [card page](https://www.citi.com/credit-cards/citi-aadvantage-globe-mastercard) |
665
681
 
682
+ Recorded late: changes made on 2026-10-31 without a section of their own, first shipped in this release. New public welcome offers: Atmos Rewards Ascent 70,000 points after $2,500 (was 50,000 after $1,500) and Summit 80,000 after $4,000 (was 70,000 after $3,000); Southwest Plus 80,000 (was 50,000), Premier 85,000 after $2,000 (was 55,000 after $1,500) and Priority 90,000 after $3,000 (was 60,000 after $2,000), all limited-time; Southwest Premier Business back to 60,000 (was a limited-time 80,000); AAdvantage Business 75,000 after $5,000 in 5 months (was 65,000 after $4,000 in 4); AAdvantage Platinum Select 50,000 after $2,500 in 3 months (was a limited-time 80,000 after $3,500 in 4). Each card was re-checked against its issuer's page. The five Amex "as high as" offers take `varies: true`; Blue Cash Preferred, Blue Cash Everyday and Costco Anywhere Business quotes follow their pages' new wording; Freedom Flex's Q4 dining note says the stacking with 3% is unstated; Costco.com takes Visa and Mastercard. Sources: each card's `welcome_offer` evidence.
683
+
666
684
  ## 2026.10.30.3
667
685
 
668
686
  More everyday words find categories, for questions asked without a store name ("coffee shop", "dinner", "train"). Each maps to the category those purchases already fall under. No rates changed.
package/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2026.11.07
1
+ 2026.11.07.3
@@ -25,6 +25,7 @@ choices:
25
25
  - id: top-two
26
26
  pick: 2
27
27
  period: month
28
+ automatic: true
28
29
  options:
29
30
  us-advertising: [online_advertising]
30
31
  us-electronics-software-cloud: [electronics]
@@ -202,7 +202,7 @@ evidence:
202
202
  quote: 'The Wall Street Journal, YouTube Premium, and YouTube TV.'
203
203
  - rule: equinox
204
204
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/platinum-card/25330-10-0#offer-terms
205
- quote: 'up to a total of $300 in statement credits each calendar year across all Cards on the Platinum Account'
205
+ quote: 'Enrolled Basic Card Members can earn up to $300 in statement credits each calendar year'
206
206
  - rule: oura
207
207
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/platinum-card/25330-10-0#offer-terms
208
208
  quote: 'Enrolled Basic Card Members can receive up to $200 in statement credits each calendar year'
@@ -16,10 +16,10 @@ base_rate: 1
16
16
  annual_fee: 0
17
17
  foreign_transaction_fee: 0
18
18
  welcome_offer:
19
- dollars: 250
19
+ dollars: 200
20
20
  spend: 500
21
21
  months: 3
22
- note: 'Limited-time: the page says "Offer ending soon" (no end date given) and shows the usual $200 struck through. Chase: "available to you if you do not have this card and have not received a new cardmember bonus for this card in the past 24 months."'
22
+ note: 'Chase: "available to you if you do not have this card and have not received a new cardmember bonus for this card in the past 24 months."'
23
23
  # Its cash back is earned as points, which Chase lets you move to another
24
24
  # Ultimate Rewards card on your account.
25
25
  pools_into:
@@ -152,9 +152,6 @@ evidence:
152
152
  - rule: q4-2026-dining
153
153
  url: https://www.chase.com/personal/credit-cards/freedom/flex-learnmore
154
154
  quote: 'For Dining purchases, you will earn 7% cash back (3% Dining cash back + 4% bonus category cash back)'
155
- - rule: q4-2026-dining
156
- url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
157
- quote: 'Dining American Red Cross'
158
155
  - rule: q4-2026-dining
159
156
  url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
160
157
  quote: '5% Cash Back rewards total for each $1 spent until $1,500 is spent'
@@ -187,7 +184,7 @@ evidence:
187
184
  quote: 'Annual Membership Fee None'
188
185
  - rule: welcome_offer
189
186
  url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
190
- quote: 'Earn a $250 bonus after you spend $500 on purchases in the first 3 months from account opening'
187
+ quote: 'Earn a $200 bonus after you spend $500 on purchases in the first 3 months from account opening'
191
188
  - rule: foreign_transaction_fee
192
189
  url: https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65280.html
193
190
  quote: 'Foreign Transactions None Penalty Fees'
@@ -113,6 +113,7 @@ evidence:
113
113
  - rule: spend-15k
114
114
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
115
115
  quote: 'Earn 15,000 bonus points after you spend $15,000 on purchases each calendar year.'
116
+ in_popup: true
116
117
  - rule: spend-15k
117
118
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
118
119
  quote: 'will qualify for Platinum Elite Status, 5 Elite Night credits and 15,000 bonus points'
@@ -128,6 +129,7 @@ evidence:
128
129
  - rule: instacart
129
130
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
130
131
  quote: 'Active Instacart+ membership is required to receive your $10 monthly credit.'
132
+ in_popup: true
131
133
  todo:
132
134
  - The $100 airline statement credit (after $250 on flights bought directly each calendar year, through 12/31/27) isn't modeled.
133
135
  - "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."
@@ -129,9 +129,12 @@ evidence:
129
129
  - rule: rideshare
130
130
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
131
131
  quote: 'up to $8 back as a statement credit each month from January through November'
132
+ in_popup: true
132
133
  - rule: rideshare
133
134
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
134
135
  quote: 'Yearly opt-in is required.'
136
+ in_popup: true
135
137
  - rule: jsx
136
138
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
137
139
  quote: 'Get up to $100 back as a statement credit each anniversary year when you book flights directly with JSX'
140
+ in_popup: true
@@ -106,18 +106,23 @@ evidence:
106
106
  - rule: spend-50k
107
107
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
108
108
  quote: 'Receive United Club All Access Membership after spending $50,000 in a calendar year'
109
+ in_popup: true
109
110
  - rule: instacart
110
111
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
111
112
  quote: 'you can receive two (2) $10 credits in your Instacart account each month'
112
113
  - rule: rideshare
113
114
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
114
115
  quote: 'up to $12 back as a statement credit each month from January through November'
116
+ in_popup: true
115
117
  - rule: rideshare
116
118
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
117
119
  quote: 'Yearly opt-in is required.'
120
+ in_popup: true
118
121
  - rule: jsx
119
122
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
120
123
  quote: 'Get up to $200 back as a statement credit each anniversary year when you book flights directly with JSX'
124
+ in_popup: true
121
125
  - rule: renowned-hotels-credit
122
126
  url: https://creditcards.chase.com/business-credit-cards/united/united-club-business
123
127
  quote: 'Receive up to $200 back in statement credits each anniversary year on hotel accommodations'
128
+ in_popup: true
@@ -60,27 +60,32 @@ evidence:
60
60
  - rule: american-airlines
61
61
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
62
62
  quote: 'Eligible American Airlines purchases are items billed by American Airlines as the merchant of record.'
63
+ in_popup: true
63
64
  - rule: american-airlines
64
65
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
65
66
  quote: 'Products or services that do not qualify are car rentals booked through aadvantagecars.com'
67
+ in_popup: true
66
68
  - rule: car-rentals
67
69
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
68
70
  quote: 'Earn 2 AAdvantage® miles for your business on every $1 spent at car rental merchants and gas stations'
69
71
  - rule: car-rentals
70
72
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
71
73
  quote: 'purchases made through travel agencies, tour operators, and online third party travel sites'
74
+ in_popup: true
72
75
  - rule: gas-stations
73
76
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
74
77
  quote: 'Earn 2 AAdvantage® miles for your business on every $1 spent at car rental merchants and gas stations'
75
78
  - rule: gas-stations
76
79
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
77
80
  quote: 'purchases made at warehouse clubs that do not code gas station purchases under a gas station code'
81
+ in_popup: true
78
82
  - rule: telecom-cable-satellite
79
83
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
80
84
  quote: 'Earn 2 AAdvantage® miles for your business on every $1 spent at telecommunications merchants and cable and satellite providers'
81
85
  - rule: telecom-cable-satellite
82
86
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
83
87
  quote: 'Cable and satellite providers are classified as merchants that provide the connection and ongoing delivery of television'
88
+ in_popup: true
84
89
  - rule: annual_fee
85
90
  url: https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card
86
91
  quote: 'The annual fee is $99. However, this fee is waived for the first 12 months.'
@@ -59,12 +59,14 @@ evidence:
59
59
  - rule: aadvantage-cars
60
60
  url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
61
61
  quote: 'Payless car rentals will not qualify.'
62
+ in_popup: true
62
63
  - rule: american-airlines
63
64
  url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
64
65
  quote: 'Earn 4 AAdvantage® miles for every $1 spent on eligible American Airlines purchases'
65
66
  - rule: american-airlines
66
67
  url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
67
68
  quote: 'Eligible American Airlines purchases are items billed by American Airlines as the merchant of record.'
69
+ in_popup: true
68
70
  - rule: american-airlines
69
71
  url: https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard
70
72
  quote: 'After you spend $150,000 in purchases in a calendar year, earn a total of 5 AAdvantage® miles'
@@ -48,6 +48,7 @@ evidence:
48
48
  - rule: american-airlines
49
49
  url: https://www.citi.com/credit-cards/citi-aadvantage-globe-mastercard
50
50
  quote: 'Eligible American Airlines purchases are items billed by American Airlines as the merchant of record.'
51
+ in_popup: true
51
52
  - rule: restaurants
52
53
  url: https://www.citi.com/credit-cards/citi-aadvantage-globe-mastercard
53
54
  quote: 'Earn 2 AAdvantage® miles for every $1 spent at restaurants, including takeout and delivery'
@@ -57,6 +58,7 @@ evidence:
57
58
  - rule: rides-and-rails
58
59
  url: https://www.citi.com/credit-cards/citi-aadvantage-globe-mastercard
59
60
  quote: 'passenger railways, bridge and road tolls, parking lots'
61
+ in_popup: true
60
62
  - rule: annual_fee
61
63
  url: https://www.citi.com/credit-cards/citi-aadvantage-globe-mastercard
62
64
  quote: 'Annual fee: $350. Minimum interest charge $0.50.'
@@ -40,18 +40,22 @@ evidence:
40
40
  - rule: american-airlines
41
41
  url: https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card
42
42
  quote: 'Eligible American Airlines purchases are items billed by American Airlines as the merchant of record.'
43
+ in_popup: true
43
44
  - rule: grocery-stores
44
45
  url: https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card
45
46
  quote: 'Earn 2 AAdvantage® miles for each $1 spent at grocery stores, including grocery delivery services'
46
47
  - rule: grocery-stores
47
48
  url: https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card
48
49
  quote: 'convenience stores, markets, specialty vendors, and bakeries'
50
+ in_popup: true
49
51
  - rule: grocery-stores
50
52
  url: https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card
51
53
  quote: 'discount superstores, wholesale'
54
+ in_popup: true
52
55
  - rule: grocery-stores
53
56
  url: https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card
54
57
  quote: 'confectionery stores, cafes, bars, lounges, and fast food restaurants'
58
+ in_popup: true
55
59
  - rule: annual_fee
56
60
  url: https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card
57
61
  quote: 'Annual Fee - None. Fee for Foreign Purchases - 3%'
@@ -53,18 +53,21 @@ evidence:
53
53
  - rule: american-airlines
54
54
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
55
55
  quote: 'Eligible American Airlines purchases are items billed by American Airlines as the merchant of record.'
56
+ in_popup: true
56
57
  - rule: restaurants
57
58
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
58
59
  quote: 'Earn 2 AAdvantage® miles for every $1 spent at restaurants, including takeout'
59
60
  - rule: restaurants
60
61
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
61
62
  quote: 'restaurants (including cafes, bars, lounges, and fast food restaurants) and at gas stations'
63
+ in_popup: true
62
64
  - rule: gas-stations
63
65
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
64
66
  quote: 'Earn 2 AAdvantage® miles for every $1 spent at gas stations'
65
67
  - rule: gas-stations
66
68
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
67
69
  quote: 'purchases made at warehouse clubs that do not code gas station purchases under a gas station code'
70
+ in_popup: true
68
71
  - rule: annual_fee
69
72
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
70
73
  quote: 'Annual fee - $99, waived for the first 12 months.'
@@ -86,3 +89,4 @@ evidence:
86
89
  - rule: spend-20k
87
90
  url: https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card
88
91
  quote: 'Earn a $125 American Airlines Flight Discount certificate (the “Flight Discount”) after you spend $20,000 or more in purchases'
92
+ in_popup: true
@@ -69,6 +69,7 @@ evidence:
69
69
  - rule: gas-and-ev-charging
70
70
  url: https://www.citi.com/credit-cards/costco-anywhere-visa-business-card
71
71
  quote: 'for gas or EV charging purchased at some superstores, supermarkets and warehouse clubs other than Costco'
72
+ in_popup: true
72
73
  - rule: restaurants
73
74
  url: https://www.citi.com/credit-cards/costco-anywhere-visa-business-card
74
75
  quote: '3% cash back on restaurant purchases (including cafes, bars, lounges, and fast food restaurants)'
@@ -84,6 +85,7 @@ evidence:
84
85
  - rule: restaurants
85
86
  url: https://www.citi.com/credit-cards/costco-anywhere-visa-business-card
86
87
  quote: 'for purchases made at bakeries and certain restaurants'
88
+ in_popup: true
87
89
  - rule: costco
88
90
  url: https://www.citi.com/credit-cards/costco-anywhere-visa-business-card
89
91
  quote: '2% cash back on all other purchases from Costco and Costco.com'
@@ -68,6 +68,7 @@ evidence:
68
68
  - rule: gas-and-ev-charging
69
69
  url: https://www.citi.com/credit-cards/citi-costco-anywhere-visa-credit-card
70
70
  quote: 'for gas or EV charging purchased at some superstores, supermarkets and warehouse clubs other than Costco'
71
+ in_popup: true
71
72
  - rule: restaurants
72
73
  url: https://www.citi.com/credit-cards/citi-costco-anywhere-visa-credit-card
73
74
  quote: '3% cash back on restaurant purchases (including cafes, bars, lounges, and fast food restaurants)'
@@ -83,6 +84,7 @@ evidence:
83
84
  - rule: restaurants
84
85
  url: https://www.citi.com/credit-cards/citi-costco-anywhere-visa-credit-card
85
86
  quote: 'for purchases made at bakeries and certain restaurants'
87
+ in_popup: true
86
88
  - rule: costco
87
89
  url: https://www.citi.com/credit-cards/citi-costco-anywhere-visa-credit-card
88
90
  quote: '2% cash back on all other purchases from Costco and Costco.com'
@@ -4,12 +4,12 @@ color: '#3a7d8c'
4
4
  issuer: citi
5
5
  network: mastercard
6
6
  currency: cash
7
- last_verified: 2026-11-01
7
+ last_verified: 2026-11-07
8
8
  verified_by: claude
9
9
  applications_closed: 2026-05-28
10
10
  # Existing cardmembers keep the card and its rewards. The card page no longer
11
- # lists the categories, so the definitions come from the card's current
12
- # ThankYou terms (Sept 2026).
11
+ # states any earning terms, so the rates and definitions come from the card's
12
+ # current ThankYou terms (Sept 2026).
13
13
  source_urls:
14
14
  - https://www.citi.com/credit-cards/citi-custom-cash-credit-card
15
15
  - https://www.thankyou.com/ccterms
@@ -28,6 +28,7 @@ choices:
28
28
  - id: top-category
29
29
  pick: 1
30
30
  period: month
31
+ automatic: true
31
32
  options:
32
33
  restaurants: [dining]
33
34
  gas-stations: [gas]
@@ -107,14 +108,14 @@ todo:
107
108
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
108
109
  evidence:
109
110
  - rule: base_rate
110
- url: https://www.citi.com/credit-cards/citi-custom-cash-credit-card
111
- quote: 'Earn 1% cash back thereafter on all other purchases.'
111
+ url: https://www.thankyou.com/ccterms
112
+ quote: '1 ThankYou Point for each $1 you spend on purchases'
112
113
  - rule: base_rate
113
114
  url: https://www.thankyou.com/ccterms
114
115
  quote: 'You can combine them into one ThankYou Account'
115
116
  - rule: top-category
116
- url: https://www.citi.com/credit-cards/citi-custom-cash-credit-card
117
- quote: 'Earn 5% cash back on your top eligible spend category each billing cycle up to $500 spent'
117
+ url: https://www.thankyou.com/ccterms
118
+ quote: '5 ThankYou Points for each $1 You spend in Your highest eligible spend category each billing cycle'
118
119
  - rule: top-category
119
120
  url: https://www.thankyou.com/ccterms
120
121
  quote: 'After the first $500 spent in that category during the billing cycle'
@@ -148,9 +149,6 @@ evidence:
148
149
  - rule: citi-travel-hotels-cars-attractions
149
150
  url: https://www.thankyou.com/ccterms
150
151
  quote: 'only the portion paid with your card will earn points'
151
- - rule: citi-travel-hotels-cars-attractions
152
- url: https://www.citi.com/credit-cards/citi-custom-cash-credit-card
153
- quote: 'additional 4% cash back on hotels, car rentals, and attractions booked with Citi Travel'
154
152
  - rule: citi-travel-hotels-cars-attractions
155
153
  url: https://www.thankyou.com/ccterms
156
154
  quote: '4 additional ThankYou Points for each $1 spent on hotels, car rentals, and attractions'
@@ -56,6 +56,7 @@ evidence:
56
56
  - rule: citi-travel-hotels-cars-attractions
57
57
  url: https://www.citi.com/credit-cards/citi-double-cash-credit-card
58
58
  quote: 'this totals 5 ThankYou Points per dollar'
59
+ in_popup: true
59
60
  - rule: citi-travel-hotels-cars-attractions
60
61
  url: https://www.thankyou.com/dcterms
61
62
  quote: '3 additional ThankYou Points for each $1 spent on hotels, car rentals and attractions booked with Citi Travel'
@@ -43,6 +43,7 @@ evidence:
43
43
  - rule: best-buy
44
44
  url: https://www.citi.com/credit-cards/citi-best-buy-credit-cards
45
45
  quote: 'are only awarded when you select Standard Credit'
46
+ in_popup: true
46
47
  - rule: gas
47
48
  url: https://www.citi.com/credit-cards/citi-best-buy-credit-cards
48
49
  quote: 'per $1 spent at gas stations (3% back in rewards)'
@@ -66,6 +66,7 @@ evidence:
66
66
  - rule: citi-travel-hotels-cars-attractions
67
67
  url: https://www.citi.com/credit-cards/citi-strata-elite-credit-card
68
68
  quote: 'only the portion paid with your card will earn points'
69
+ in_popup: true
69
70
  - rule: citi-travel-air
70
71
  url: https://www.citi.com/credit-cards/citi-strata-elite-credit-card
71
72
  quote: '6 points per dollar spent on Air Travel booked on cititravel.com'
@@ -78,6 +79,7 @@ evidence:
78
79
  - rule: restaurants
79
80
  url: https://www.citi.com/credit-cards/citi-strata-elite-credit-card
80
81
  quote: 'Excludes purchases at bakeries, caterers, and restaurants located inside another business'
82
+ in_popup: true
81
83
  - rule: restaurants
82
84
  url: https://www.thankyou.com/terms
83
85
  quote: '3 ThankYou Points for each $1 spent at restaurants, including restaurant delivery services'
@@ -85,9 +85,11 @@ evidence:
85
85
  - rule: travel-agencies
86
86
  url: https://www.citi.com/credit-cards/citi-strata-premier-credit-card
87
87
  quote: 'Includes purchases at airlines, hotels (not booked through the Citi Travel site via'
88
+ in_popup: true
88
89
  - rule: travel-agencies
89
90
  url: https://www.citi.com/credit-cards/citi-strata-premier-credit-card
90
91
  quote: '), and travel agencies.'
92
+ in_popup: true
91
93
  - rule: restaurants
92
94
  url: https://www.citi.com/credit-cards/citi-strata-premier-credit-card
93
95
  quote: '3 points per dollar spent at Restaurants'
@@ -74,6 +74,7 @@ evidence:
74
74
  - rule: not_with
75
75
  url: https://www.nordstrom.com/becomecardmember
76
76
  quote: 'Current and previous Nordstrom credit cardmembers and Nordstrom employees are not eligible for this offer'
77
+ in_popup: true
77
78
  - rule: nordstrom
78
79
  url: https://www.nordstrom.com/browse/nordy-club/faq
79
80
  quote: "If you use your Nordstrom card via Google Pay or Apple Pay, you'll earn your standard Nordy Club base points"
@@ -114,6 +114,7 @@ evidence:
114
114
  - rule: not_with
115
115
  url: https://www.nordstrom.com/becomecardmember
116
116
  quote: 'Current and previous Nordstrom credit cardmembers and Nordstrom employees are not eligible for this offer'
117
+ in_popup: true
117
118
  - rule: nordstrom
118
119
  url: https://www.nordstrom.com/browse/nordy-club/faq
119
120
  quote: "If you use your Nordstrom card via Google Pay or Apple Pay, you'll earn your standard Nordy Club base points"