earnrate 0.2.16 → 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 (81) hide show
  1. package/README.md +22 -10
  2. package/data/CHANGELOG.md +33 -1
  3. package/data/VERSION +1 -1
  4. package/data/cards/amex-business-gold.yaml +1 -0
  5. package/data/cards/amex-business-platinum.yaml +15 -1
  6. package/data/cards/amex-platinum.yaml +1 -1
  7. package/data/cards/barclays-jetblue-plus.yaml +19 -1
  8. package/data/cards/chase-freedom-flex.yaml +9 -12
  9. package/data/cards/chase-ihg-one-rewards-business.yaml +19 -3
  10. package/data/cards/chase-ihg-one-rewards-premier-select.yaml +5 -1
  11. package/data/cards/chase-ihg-one-rewards-premier.yaml +7 -1
  12. package/data/cards/chase-ihg-one-rewards.yaml +13 -2
  13. package/data/cards/chase-ink-business-cash.yaml +5 -1
  14. package/data/cards/chase-ink-business-unlimited.yaml +5 -1
  15. package/data/cards/chase-prime-visa.yaml +3 -3
  16. package/data/cards/chase-sapphire-reserve.yaml +12 -3
  17. package/data/cards/chase-united-business.yaml +8 -1
  18. package/data/cards/chase-united-club-business.yaml +10 -1
  19. package/data/cards/chase-united-club.yaml +5 -1
  20. package/data/cards/chase-united-explorer.yaml +5 -1
  21. package/data/cards/chase-united-quest.yaml +5 -1
  22. package/data/cards/citi-aadvantage-business.yaml +5 -0
  23. package/data/cards/citi-aadvantage-executive.yaml +2 -0
  24. package/data/cards/citi-aadvantage-globe.yaml +2 -0
  25. package/data/cards/citi-aadvantage-mileup.yaml +4 -0
  26. package/data/cards/citi-aadvantage-platinum-select.yaml +4 -0
  27. package/data/cards/citi-costco-anywhere-visa-business.yaml +2 -0
  28. package/data/cards/citi-costco-anywhere-visa.yaml +2 -0
  29. package/data/cards/citi-custom-cash.yaml +8 -10
  30. package/data/cards/citi-double-cash.yaml +1 -0
  31. package/data/cards/citi-my-best-buy-visa.yaml +1 -0
  32. package/data/cards/citi-strata-elite.yaml +2 -0
  33. package/data/cards/citi-strata-premier.yaml +16 -1
  34. package/data/cards/td-bank-nordstrom-credit-card.yaml +1 -0
  35. package/data/cards/td-bank-nordstrom-visa.yaml +1 -0
  36. package/data/cards/wells-fargo-autograph-journey.yaml +16 -1
  37. package/data/changes.yaml +2840 -0
  38. package/data/merchants/overrides.yaml +3 -3
  39. package/dist/cli/args.js +13 -7
  40. package/dist/cli/offers.js +21 -5
  41. package/dist/cli/run.js +18 -3
  42. package/dist/cli/wallet.js +46 -11
  43. package/dist/data/change-integrity.js +105 -0
  44. package/dist/data/file-store.js +5 -2
  45. package/dist/data/integrity.js +20 -0
  46. package/dist/data/load.js +5 -0
  47. package/dist/data/store.js +4 -1
  48. package/dist/data/wallet-edit.js +21 -5
  49. package/dist/engine/changes.js +124 -0
  50. package/dist/engine/checklist.js +42 -7
  51. package/dist/engine/credits.js +56 -7
  52. package/dist/engine/evaluate.js +21 -1
  53. package/dist/engine/explore.js +52 -15
  54. package/dist/engine/memberships.js +21 -9
  55. package/dist/engine/milestones.js +11 -3
  56. package/dist/engine/offers.js +60 -6
  57. package/dist/engine/periods.js +7 -0
  58. package/dist/engine/recommend.js +21 -2
  59. package/dist/engine/renewal.js +101 -0
  60. package/dist/engine/rule-text.js +21 -13
  61. package/dist/engine/setup.js +12 -8
  62. package/dist/engine/simulate.js +57 -17
  63. package/dist/engine/text.js +110 -5
  64. package/dist/engine/wallet-change.js +34 -15
  65. package/dist/engine/wallet-summary.js +29 -10
  66. package/dist/format/card-text.js +10 -11
  67. package/dist/format/explore.js +12 -8
  68. package/dist/format/offers.js +5 -3
  69. package/dist/format/wallet-yaml.js +3 -0
  70. package/dist/format/wallet.js +8 -1
  71. package/dist/mcp/context.js +11 -3
  72. package/dist/mcp/inputs.js +12 -2
  73. package/dist/mcp/prompts.js +3 -3
  74. package/dist/mcp/schemas.js +47 -0
  75. package/dist/mcp/tools/account.js +1 -1
  76. package/dist/mcp/tools/answers.js +42 -24
  77. package/dist/mcp/tools/wallet.js +33 -9
  78. package/dist/schema/card.js +18 -0
  79. package/dist/schema/changes.js +73 -0
  80. package/dist/schema/wallet.js +11 -3
  81. package/package.json +1 -1
package/README.md CHANGED
@@ -9,14 +9,14 @@ I wanted a ghost card: one card that always charges the best of my cards. The ca
9
9
 
10
10
  **earnrate is the best-card decision layer for people and AI agents.** Give it a merchant, and it tells you which credit card earns the most there, from your own cards or from every card it knows, and why. Save your cards and it tracks your caps and chosen categories. It's valuation-aware and transparent about its assumptions. It never sees a card number.
11
11
 
12
- - Runs on your machine, in your browser at [earnrate.dev](https://earnrate.dev) (which you can add to your phone's Home Screen and use offline), or in Claude as a connector at `https://mcp.earnrate.dev`, with nothing to install. No account and no affiliate links; the hosted server counts requests by tool name, nothing about what you ask. See the [privacy page](https://earnrate.dev/privacy).
12
+ - Runs on your machine, in your browser at [earnrate.dev](https://earnrate.dev) (which you can add to your phone's Home Screen and use offline), or in Claude as a connector at `https://mcp.earnrate.dev`, with nothing to install. earnrate.dev and Claude can share one wallet. No account and no affiliate links; the hosted server counts requests by tool name, nothing about what you ask. See the [privacy page](https://earnrate.dev/privacy).
13
13
  - U.S. cards and U.S. merchants, for now.
14
14
 
15
15
  > **Status:** early, and it works: the engine, CLI, optional Claude merchant lookup, MCP server and the hosted Claude connector. See [the benchmark](docs/benchmark.md) (run 2026-11-03) for how it compares to an existing card-picking MCP server.
16
16
 
17
17
  ## Try it
18
18
 
19
- Needs Node 22 or later.
19
+ Needs Node 22 or later (the published package is compiled JavaScript).
20
20
 
21
21
  ```sh
22
22
  npm install -g earnrate
@@ -55,14 +55,16 @@ Use Blue Cash Preferred: 6% back, about $4.80. High confidence.
55
55
  Amex Gold beats Blue Cash Preferred here if Amex Membership Rewards (MR) points are worth more than 1.5¢ (you value them at 1¢).
56
56
 
57
57
  Assumes Whole Foods Market codes as supermarkets (MCC 5411).
58
- Values points at: Amex Membership Rewards (MR) at 1¢, SoFi Member Rewards at 1¢, Chase Ultimate Rewards (UR) at 1¢.
58
+ Point values: Amex Membership Rewards (MR) at 1¢, SoFi Member Rewards at 1¢ and Chase Ultimate Rewards (UR) at 1¢.
59
59
  ```
60
60
 
61
61
  Options: `--online` or `--in-store`, `--paying card|apple-pay|google-pay|paypal`, `--valuation flat|points-heavy`, `--cards`, `--member`, `--category`, `--all`, `--json`, `--date`, `--country`. Run `earnrate --help` for details. To keep the wallet somewhere else, set `EARNRATE_WALLET` to its path.
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
 
@@ -157,13 +159,19 @@ Every purchase on the card counts. Once earnrate knows how much you've spent on
157
159
 
158
160
  Some cards give dollars back for spending at a named store, up to a limit each period: Amex Platinum's $75 a quarter at lululemon, Amex Gold's $7 a month at Dunkin', Blue Cash Preferred's $10 a month on Disney+, Hulu or ESPN subscriptions. The purchase still earns the card's rate; the credit comes on top. Asking about the store with no cards saved lists the cards with a credit there first, "With a statement credit", in dollars ("$75 back each quarter, then 1x Amex Membership Rewards"), then the usual ranking by rate. A search for a kind of purchase ("clothing") doesn't.
159
161
 
160
- With a saved wallet, a credit counts only once you mark it enrolled (these all need enrolling with the issuer), and only while some is left this period. Given an amount, its dollars count toward that card's return and can make it the pick; without one, the answer shows what's left. Recording a purchase from an AI assistant uses it up, and `earnrate todo` reminds you to enroll and to use what's left before the period ends:
162
+ With a saved wallet, a credit that needs enrolling with the issuer counts only once you mark it enrolled, one that doesn't (like Amex Gold's Uber Cash) counts right away, and either only while some is left this period. Given an amount, its dollars count toward that card's return and can make it the pick; without one, the answer shows what's left. Recording a purchase from an AI assistant uses it up, and `earnrate todo` reminds you to enroll and to use what's left before the period ends:
161
163
 
162
164
  ```sh
163
165
  earnrate update amex-platinum --enrolled lululemon --credit-used lululemon=40
164
166
  ```
165
167
 
166
- In the wallet file that's `enrolled: [lululemon]` and `credit_usage: { lululemon: { period: 2026-Q4, used: 40 } }` on the card. On earnrate.dev it's in the card's settings. The cheat sheet, simulations and welcome-offer comparisons leave credits out.
168
+ In the wallet file that's `enrolled: [lululemon]` and `credit_usage: { lululemon: { period: 2026-Q4, used: 40 } }` on the card. On earnrate.dev it's in the card's settings, where each credit is "Enrolled", "Not yet" or "I don't use this" (or "Using it" for one that needs no enrolling).
169
+
170
+ A credit you don't use can be marked so: `earnrate update amex-gold --skipped-credits dunkin`, `skipped_credits: [dunkin]` in the file. It then counts nowhere: not toward a pick, not against the fee, and not on the to-do list. For cards named with `--cards`, `--enrolled amex-platinum=lululemon` and `--skipped-credits amex-gold=dunkin` do the same for one answer.
171
+
172
+ Some credits pay only on a purchase of a certain size (Citi Strata Premier's $100 off a Citi Travel hotel stay of $500 or more), and some end on a date the issuer sets (Sapphire Reserve's Lyft credit, through Sep 30, 2027). Card listings say so; a purchase too small earns no credit, and after the end date the credit counts nowhere. Rules work the same way: Amex Business Platinum's 2x on a purchase of $5,000 or more applies only when the amount is given, and an answer without one says what it would earn.
173
+
174
+ Annual-fee math counts the credits you use on cards you hold, a full period's worth each period: simulating spending with your own cards says "Amex Gold's fee counts $204 a year of credits you use: Dunkin' and Uber." For a card you don't hold, the ranking leaves its credits out, since they're worth it only if you'd spend at those places anyway, and shows what it would net if you used them all beside it: in `simulate`, `offers`, the annual-fee math on each card's page and the site's spending tab. The cheat sheet picks by rate alone and leaves credits out.
167
175
 
168
176
  ### Which new card?
169
177
 
@@ -181,7 +189,11 @@ earnrate simulate groceries=600 other=1000 --wallet # what a new card would ad
181
189
  earnrate offers --cash
182
190
  ```
183
191
 
184
- 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.
185
197
 
186
198
  ### Import a statement
187
199
 
@@ -225,7 +237,7 @@ Spotted a wrong rate, or want a card added? [Open an issue](https://github.com/c
225
237
 
226
238
  ## Use it in an AI assistant (MCP)
227
239
 
228
- **In Claude, nothing to install:** add a custom connector (Settings → Connectors) with the address `https://mcp.earnrate.dev`. It works in Claude on the web, desktop and phone. When you add it, an earnrate page opens once, where you start an anonymous wallet: no email, just a recovery code you keep. Then ask anything: with no cards saved it answers from every card. Name your cards for answers about yours, and save them to track caps and welcome bonuses across your Claude apps. From the chat you can export the wallet for the command line, switch to another one, or delete it. In Claude Code:
240
+ **In Claude, nothing to install:** add a custom connector (Settings → Connectors) with the address `https://mcp.earnrate.dev`. It works in Claude on the web, desktop and phone. When you add it, an earnrate page opens once, where you start an anonymous wallet: no email, just a recovery code you keep. Then ask anything: with no cards saved it answers from every card. Name your cards for answers about yours, and save them to track caps and welcome bonuses across your Claude apps. From the chat you can export the wallet for the command line, switch to another one, or delete it. To use the same wallet on earnrate.dev, choose "Use the same wallet as Claude" in My wallet there. In Claude Code:
229
241
 
230
242
  ```sh
231
243
  claude mcp add --transport http earnrate https://mcp.earnrate.dev
@@ -315,14 +327,14 @@ earnrate needs no account. The local version has no telemetry; the hosted server
315
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).
316
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`.
317
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.
318
- - **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, 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.
319
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.
320
332
  - **Terms:** [earnrate.dev/terms](https://earnrate.dev/terms).
321
333
  - **Contact:** [hello@earnrate.dev](mailto:hello@earnrate.dev).
322
334
 
323
335
  ## Working on earnrate
324
336
 
325
- Development needs Node 24 or later.
337
+ Development needs Node 24 or later: the repo runs its TypeScript directly, with no build step. The published package is compiled and runs on Node 22 or later.
326
338
 
327
339
  ```sh
328
340
  git clone https://github.com/cwasley/earnrate.git && cd earnrate
package/data/CHANGELOG.md CHANGED
@@ -1,6 +1,36 @@
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).
20
+
21
+ ## 2026.11.07
22
+
23
+ New terms the engine can now express, each quoted from the issuer:
24
+
25
+ - `amex-business-platinum`: 2X on any single eligible purchase of $5,000 or more (`large-purchases`, `min_amount: 5000`), inside the $2 million yearly cap shared with its 2X categories. Sources: [Amex](https://www.americanexpress.com/us/credit-cards/business/business-credit-cards/american-express-business-platinum-credit-card-amex/), [offer terms](https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/business-platinum-charge-card/64281-9-0#offer-terms).
26
+ - New statement credits with a minimum purchase: `citi-strata-premier`'s $100 Annual Hotel Benefit (a Citi Travel hotel stay of $500 or more, once a calendar year), `wells-fargo-autograph-journey`'s $50 airline credit (an airline purchase of $50 or more, once a year) and `barclays-jetblue-plus`'s $100 JetBlue Vacations credit (a package of $100 or more, once a calendar year). Sources: [Citi](https://www.citi.com/credit-cards/citi-strata-premier-credit-card), [Wells Fargo](https://creditcards.wellsfargo.com/autograph-journey-visa-credit-card/), [Barclays terms](https://www.barclaycardus.com/applycontent/TnCs.jsp?tc48255).
27
+ - Credits that end on a date take `valid_to`, quoted from each card's page: the Instacart credits on 10 Chase cards and `chase-sapphire-reserve`'s StubHub and Peloton credits (through 2027-12-31) and Lyft credit (through 2027-09-30). They stop counting after that day.
28
+ - Spend milestones that start later take `valid_from`: `chase-ihg-one-rewards`'s 4th Reward Night free after $5,000 a calendar year and `chase-ihg-one-rewards-business`'s Diamond Elite status after $50,000, both from 2027-01-01. Source: [Chase](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/one-rewards), [Chase business](https://creditcards.chase.com/business-credit-cards/IHG/business).
29
+ - `chase-prime-visa`'s welcome offer is a $200 Amazon Gift Card for Prime members (was $150), labeled limited-time with no end date. Source: [Chase](https://creditcards.chase.com/cash-back-credit-cards/amazon-prime-rewards).
30
+
31
+ ## 2026.11.06.2
32
+
33
+ Wording only; no rates changed. `chase-freedom-flex`'s Q4 2026 dining, grocery and American Red Cross rules list their explanatory quote first ("For Dining purchases, you will earn 7% cash back…"), so answers show it rather than a run-together category list. The notes for O'Reilly Auto Parts, Advance Auto Parts and NAPA Auto Parts say "An auto parts store" (was "A auto parts store").
4
34
 
5
35
  ## 2026.11.06.1
6
36
 
@@ -649,6 +679,8 @@ Cards can name a paid membership they need (`requires_membership`). Costco Anywh
649
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) |
650
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) |
651
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
+
652
684
  ## 2026.10.30.3
653
685
 
654
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.06.1
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]
@@ -56,6 +56,12 @@ rules:
56
56
  geography: us_only
57
57
  cap: key-business-categories
58
58
  note: U.S. shipping providers. Shares the $2 million yearly cap.
59
+ - id: large-purchases
60
+ match: { any: true }
61
+ rate: 2
62
+ min_amount: 5000
63
+ cap: key-business-categories
64
+ note: A single eligible purchase of $5,000 or more, anywhere. It doesn't count if the merchant splits a purchase into charges under $5,000. A large purchase in a 2X category earns 2X once, and 5X travel wins over it. Shares the $2 million yearly cap.
59
65
  # Not modeled: the hotel and Airbnb credits (only some Amex Travel bookings),
60
66
  # the airline fee credit (an airline you pick), Adobe and the extra Dell
61
67
  # credit (after a spending total), the 35% Pay with Points airline bonus and
@@ -99,6 +105,15 @@ credits:
99
105
  note: "Bought directly from Dell Technologies in the U.S. The extra $1,000 after $5,000 of Dell purchases in a year isn't modeled."
100
106
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
101
107
  evidence:
108
+ - rule: large-purchases
109
+ url: https://www.americanexpress.com/us/credit-cards/business/business-credit-cards/american-express-business-platinum-credit-card-amex/
110
+ quote: 'Earn 2X points on eligible purchases in key business categories, or on single purchases of $5K or more.'
111
+ - rule: large-purchases
112
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/business-platinum-charge-card/64281-9-0#offer-terms
113
+ quote: 'or (4) eligible purchases of $5,000 or more'
114
+ - rule: large-purchases
115
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/business-platinum-charge-card/64281-9-0#offer-terms
116
+ quote: 'a purchase transaction of $5,000 or more will not qualify if the merchant divides the purchase'
102
117
  - rule: base_rate
103
118
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/business-platinum-charge-card/64281-9-0#offer-terms
104
119
  quote: 'Basic Card Members will get 1 Membership Rewards® point for each dollar charged for eligible purchases'
@@ -178,7 +193,6 @@ evidence:
178
193
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/business-platinum-charge-card/64281-9-0#offer-terms
179
194
  quote: 'Each Card Account can receive up to $150 in statement credits for eligible purchases with Dell Technologies'
180
195
  todo:
181
- - "Any eligible purchase of $5,000 or more earns 2X (inside the same $2 million yearly cap). earnrate has no rule condition on purchase size, so this isn't modeled."
182
196
  - "Software and cloud system providers count toward the electronics category, but earnrate has no software or cloud category, so only electronics stores are modeled. Construction material and hardware suppliers are modeled as earnrate's home improvement category."
183
197
  - 'From February 17, 2027, U.S. shipping providers count only when bought directly from UPS, FedEx, USPS, Auctane, DHL, Worldwide Express and Old Dominion Freight Line. Not modeled yet.'
184
198
  - 'Amex''s rewards terms count eligible purchases as "purchases for goods and services minus returns and other credits" and don''t say whether that takes out benefit statement credits. Its credits are modeled as earning the card''s rate on the whole purchase, with the credit on top.'
@@ -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'
@@ -32,7 +32,24 @@ rules:
32
32
  exclude: { categories: [superstore, warehouse_club] }
33
33
  rate: 2
34
34
  note: Grocery stores and supermarkets, by merchant category code. Warehouse-type stores like Target and Walmart generally don't count.
35
+ # Merchant statement credits, on top of what the purchase earns.
36
+ credits:
37
+ - id: jetblue-vacations
38
+ match: { merchants: [jetblue-vacations] }
39
+ amount: 100
40
+ period: calendar_year
41
+ min_amount: 100
42
+ note: One $100 credit a calendar year on a JetBlue Vacations package of $100 or more (after returns and credits), booked at jetbluevacations.com or 844-JB-VACAY. It posts 6-8 weeks after the purchase.
35
43
  evidence:
44
+ - rule: jetblue-vacations
45
+ url: https://www.barclaycardus.com/applycontent/TnCs.jsp?tc48255
46
+ quote: 'For each calendar year that you purchase a JetBlue Vacations package of $100 or more with your Card Account'
47
+ - rule: jetblue-vacations
48
+ url: https://www.barclaycardus.com/applycontent/TnCs.jsp?tc48255
49
+ quote: 'Limit of one $100 statement credit per calendar year per Card Account.'
50
+ - rule: jetblue-vacations
51
+ url: https://cards.barclaycardus.com/banking/cards/jetblue-plus-card/
52
+ quote: 'after you purchase a JetBlue Vacations package of $100 or more with your JetBlue Plus Card.'
36
53
  - rule: base_rate
37
54
  url: https://www.barclaycardus.com/applycontent/TnCs.jsp?tc48255
38
55
  quote: 'You earn 1 TrueBlue point for every $1 spent on all other Net Purchases'
@@ -82,5 +99,6 @@ evidence:
82
99
  url: https://www.barclaycardus.com/applycontent/TnCs.jsp?tc48255
83
100
  quote: 'Foreign Transaction 0% of each transaction in U.S. dollars.'
84
101
  todo:
85
- - Not modeled (perks, not points per dollar) the 5,000-point anniversary bonus, 10% of points back on JetBlue Award Flights, 50% off inflight food and drink, the free first checked bag and the yearly $100 JetBlue Vacations statement credit.
102
+ - Not modeled (perks, not points per dollar) the 5,000-point anniversary bonus, 10% of points back on JetBlue Award Flights, 50% off inflight food and drink and the free first checked bag.
86
103
  - Card spending earns Mosaic tiles toward JetBlue elite status, which isn't modeled.
104
+ - "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."
@@ -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:
@@ -139,10 +139,10 @@ evidence:
139
139
  quote: 'Earn 2% total cash back on Lyft rides with your Freedom Flex card through September 30, 2027'
140
140
  - rule: q4-2026-grocery
141
141
  url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
142
- quote: 'CURRENT QUARTER Grocery Stores'
142
+ quote: 'Activate each quarter to earn 5% cash back on up to $1,500 in combined purchases'
143
143
  - rule: q4-2026-grocery
144
144
  url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
145
- quote: 'Activate each quarter to earn 5% cash back on up to $1,500 in combined purchases'
145
+ quote: 'CURRENT QUARTER Grocery Stores'
146
146
  - rule: q4-2026-grocery
147
147
  url: https://www.chase.com/personal/credit-cards/rewards-category-faq
148
148
  quote: 'Purchases made at gas stations from merchants who also operate grocery stores are not included'
@@ -150,20 +150,17 @@ evidence:
150
150
  url: https://www.chase.com/personal/credit-cards/freedom/flex-learnmore
151
151
  quote: 'This quarter, the deadline for activation is December 14, 2026'
152
152
  - rule: q4-2026-dining
153
- url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
154
- quote: 'Dining American Red Cross'
153
+ url: https://www.chase.com/personal/credit-cards/freedom/flex-learnmore
154
+ quote: 'For Dining purchases, you will earn 7% cash back (3% Dining cash back + 4% bonus category cash back)'
155
155
  - rule: q4-2026-dining
156
156
  url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
157
157
  quote: '5% Cash Back rewards total for each $1 spent until $1,500 is spent'
158
- - rule: q4-2026-dining
158
+ - rule: q4-2026-american-red-cross
159
159
  url: https://www.chase.com/personal/credit-cards/freedom/flex-learnmore
160
- quote: 'For Dining purchases, you will earn 7% cash back (3% Dining cash back + 4% bonus category cash back)'
160
+ quote: 'To ensure your charitable donation is eligible for the 5% total Cash Back reward'
161
161
  - rule: q4-2026-american-red-cross
162
162
  url: https://creditcards.chase.com/cash-back-credit-cards/freedom/flex
163
163
  quote: 'American Red Cross'
164
- - rule: q4-2026-american-red-cross
165
- url: https://www.chase.com/personal/credit-cards/freedom/flex-learnmore
166
- quote: 'To ensure your charitable donation is eligible for the 5% total Cash Back reward'
167
164
  - rule: q4-2026-american-red-cross
168
165
  url: https://www.chase.com/personal/credit-cards/freedom/flex-learnmore
169
166
  quote: 'Local chapters may not be eligible due to transaction processing procedures'
@@ -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'
@@ -56,20 +56,37 @@ milestones:
56
56
  rewards:
57
57
  - a free night at IHG hotels (up to 50,000 points)
58
58
  note: 'Use it within 12 months.'
59
- # Merchant statement credits, on top of what the purchase earns.
59
+ # Merchant statement credits, on top of what the purchase earns.
60
+ - id: diamond-status
61
+ spend: 50000
62
+ period: calendar_year
63
+ rewards:
64
+ - Diamond Elite status
65
+ valid_from: 2027-01-01
66
+ note: For the primary cardmember only. Status lasts the rest of the calendar year you qualify and the next.
60
67
  credits:
61
68
  - id: instacart
62
69
  match: { merchants: [instacart] }
63
70
  amount: 10
64
71
  period: month
65
72
  enroll: true
66
- note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027."
73
+ valid_to: 2027-12-31
74
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card."
67
75
  - id: expensify
68
76
  match: { merchants: [expensify] }
69
77
  amount: 100
70
78
  period: calendar_year
71
79
  note: 'Bought directly from Expensify on expensify.com or in its app, applied automatically.'
72
80
  evidence:
81
+ - rule: diamond-status
82
+ url: https://creditcards.chase.com/business-credit-cards/IHG/business
83
+ quote: 'Starting January 1, 2027, after spending $50,000 with your IHG One Rewards Business Credit Card'
84
+ - rule: diamond-status
85
+ url: https://creditcards.chase.com/business-credit-cards/IHG/business
86
+ quote: 'will qualify for IHG One Rewards Diamond Elite Status for the remainder of the calendar year'
87
+ - rule: instacart
88
+ url: https://creditcards.chase.com/business-credit-cards/IHG/business
89
+ quote: 'from 5/1/2025 through 12/31/2027'
73
90
  - rule: base_rate
74
91
  url: https://creditcards.chase.com/business-credit-cards/IHG/business
75
92
  quote: 'Earn 3X points per $1 spent on all other purchases.'
@@ -143,6 +160,5 @@ evidence:
143
160
  url: https://creditcards.chase.com/business-credit-cards/IHG/business
144
161
  quote: 'Enjoy up to $100 in statement credits towards Expensify purchases each calendar year.'
145
162
  todo:
146
- - "Starting January 1, 2027, $50,000 of purchases in a calendar year earns Diamond Elite status. It isn't listed as a milestone yet, because a milestone has no start date."
147
163
  - The $100 airline statement credit (after $250 on flights bought directly each calendar year) isn't modeled.
148
164
  - "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."
@@ -55,10 +55,14 @@ credits:
55
55
  amount: 10
56
56
  period: month
57
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."
58
+ valid_to: 2027-12-31
59
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card."
59
60
  todo:
60
61
  - "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."
61
62
  evidence:
63
+ - rule: instacart
64
+ url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier-select
65
+ quote: 'from 5/1/2025 through 12/31/2027'
62
66
  - rule: base_rate
63
67
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier-select
64
68
  quote: 'Earn 3X points per $1 spent on all other purchases.'
@@ -59,8 +59,12 @@ credits:
59
59
  amount: 10
60
60
  period: month
61
61
  enroll: true
62
- note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027."
62
+ valid_to: 2027-12-31
63
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card."
63
64
  evidence:
65
+ - rule: instacart
66
+ url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
67
+ quote: 'from 5/1/2025 through 12/31/2027'
64
68
  - rule: base_rate
65
69
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
66
70
  quote: 'Earn 3X points per $1 spent on all other purchases.'
@@ -109,6 +113,7 @@ evidence:
109
113
  - rule: spend-15k
110
114
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
111
115
  quote: 'Earn 15,000 bonus points after you spend $15,000 on purchases each calendar year.'
116
+ in_popup: true
112
117
  - rule: spend-15k
113
118
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
114
119
  quote: 'will qualify for Platinum Elite Status, 5 Elite Night credits and 15,000 bonus points'
@@ -124,6 +129,7 @@ evidence:
124
129
  - rule: instacart
125
130
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier
126
131
  quote: 'Active Instacart+ membership is required to receive your $10 monthly credit.'
132
+ in_popup: true
127
133
  todo:
128
134
  - The $100 airline statement credit (after $250 on flights bought directly each calendar year, through 12/31/27) isn't modeled.
129
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."
@@ -70,7 +70,20 @@ milestones:
70
70
  rewards:
71
71
  - Gold Elite status
72
72
  note: "Every purchase on the card counts, by transaction date; balance transfers, cash advances and cash-like transactions don't. Status lasts through the end of the next calendar year. Chase says to allow 6-8 weeks for it to post."
73
+ - id: fourth-night-free
74
+ spend: 5000
75
+ period: calendar_year
76
+ rewards:
77
+ - a 4th Reward Night free on four-night award stays
78
+ valid_from: 2027-01-01
79
+ note: 'From 2027 the benefit needs this spending; through 2026 it comes with the card. It lasts the rest of the year you qualify and the next, on consecutive four-night standard-room Reward Night stays at one hotel (not paid or Points & Cash stays). Chase says to allow 6-8 weeks for it to be turned on.'
73
80
  evidence:
81
+ - rule: fourth-night-free
82
+ url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/one-rewards
83
+ quote: 'Starting in 2027, spend $5,000 on purchases in a calendar year and unlock a 4th Reward Night free'
84
+ - rule: fourth-night-free
85
+ url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/one-rewards
86
+ quote: 'After December 31, 2026: You will have to meet an annual spend requirement to enjoy this benefit.'
74
87
  - rule: base_rate
75
88
  url: https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/one-rewards
76
89
  quote: 'Earn 2X points per $1 spent on all other purchases.'
@@ -122,5 +135,3 @@ evidence:
122
135
  - rule: foreign_transaction_fee
123
136
  url: https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65295.html
124
137
  quote: 'Foreign Transactions None Penalty Fees'
125
- todo:
126
- - "Starting in 2027, $5,000 of purchases in a calendar year unlocks a 4th Reward Night free on four-night award stays. It isn't listed as a milestone yet, because a milestone has no start date."
@@ -70,11 +70,15 @@ credits:
70
70
  amount: 20
71
71
  period: month
72
72
  enroll: true
73
- note: "Instacart credits in an Instacart Business account, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027."
73
+ valid_to: 2027-12-31
74
+ note: "Instacart credits in an Instacart Business account, which need an active Instacart+ membership: activate Chase's complimentary one with the card."
74
75
  todo:
75
76
  - "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."
76
77
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
77
78
  evidence:
79
+ - rule: instacart
80
+ url: https://creditcards.chase.com/business-credit-cards/ink/cash
81
+ quote: 'from 5/1/2025 through 12/31/2027'
78
82
  - rule: base_rate
79
83
  url: https://creditcards.chase.com/business-credit-cards/ink/cash
80
84
  quote: 'Earn 1% cash back on all other purchases'
@@ -43,11 +43,15 @@ credits:
43
43
  amount: 20
44
44
  period: month
45
45
  enroll: true
46
- note: "Instacart credits in an Instacart Business account, which need an active Instacart+ membership: activate Chase's complimentary one with the card. Through December 31, 2027."
46
+ valid_to: 2027-12-31
47
+ note: "Instacart credits in an Instacart Business account, which need an active Instacart+ membership: activate Chase's complimentary one with the card."
47
48
  todo:
48
49
  - "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."
49
50
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
50
51
  evidence:
52
+ - rule: instacart
53
+ url: https://creditcards.chase.com/business-credit-cards/ink/unlimited
54
+ quote: 'from 5/1/2025 through 12/31/2027'
51
55
  - rule: base_rate
52
56
  url: https://creditcards.chase.com/business-credit-cards/ink/unlimited
53
57
  quote: 'Earn unlimited 1.5% Cash Back rewards on every purchase made for your business.'
@@ -14,10 +14,10 @@ base_rate: 1
14
14
  annual_fee: 0
15
15
  foreign_transaction_fee: 0
16
16
  welcome_offer:
17
- dollars: 150
17
+ dollars: 200
18
18
  spend: 0
19
19
  months: 1
20
- note: 'A $150 Amazon Gift Card loaded into your Amazon account on approval, not cash back; there''s no spend requirement, so spend 0 and months 1 stand in for "on approval". For Prime members. Chase: available "if you do not currently have an Amazon Visa or Prime Visa credit card", and the gift card "is only awarded to new cardmembers and at the time of card approval."'
20
+ note: 'Labeled a limited-time offer (up from $150), with no end date given. A $200 Amazon Gift Card loaded into your Amazon account on approval, not cash back; there''s no spend requirement, so spend 0 and months 1 stand in for "on approval". For Prime members; without Prime it''s $60. Chase: available "if you do not currently have an Amazon Visa or Prime Visa credit card", and the gift card "is only awarded to new cardmembers and at the time of card approval."'
21
21
  rules:
22
22
  - id: amazon
23
23
  match: { merchants: [amazon] }
@@ -132,7 +132,7 @@ evidence:
132
132
  quote: 'Annual Membership Fee None'
133
133
  - rule: welcome_offer
134
134
  url: https://creditcards.chase.com/cash-back-credit-cards/amazon-prime-rewards
135
- quote: "Prime members, get a $150 Amazon Gift Card instantly loaded into your Amazon account's Gift Card Balance"
135
+ quote: "Prime members, get a $200 Amazon Gift Card instantly loaded into your Amazon account's Gift Card Balance"
136
136
  - rule: foreign_transaction_fee
137
137
  url: https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC59329.html
138
138
  quote: 'Foreign Transactions None Penalty Fees'
@@ -70,20 +70,29 @@ credits:
70
70
  amount: 150
71
71
  period: half_year
72
72
  enroll: true
73
- note: 'StubHub and viagogo, through December 31, 2027. Activate once on chase.com.'
73
+ valid_to: 2027-12-31
74
+ note: 'StubHub and viagogo. Activate once on chase.com.'
74
75
  - id: lyft-credit
75
76
  match: { merchants: [lyft] }
76
77
  amount: 10
77
78
  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
+ valid_to: 2027-09-30
80
+ note: 'A $10 Lyft credit in the app each month, once the card is added to Lyft. Rides only, not memberships, fees, tips or taxes.'
79
81
  - id: peloton-credit
80
82
  match: { merchants: [peloton-membership] }
81
83
  amount: 10
82
84
  period: month
83
85
  enroll: true
84
- note: 'Peloton memberships (All-Access, Rental, App+, Guide, App One, Strength+), through December 31, 2027. Activate once on chase.com.'
86
+ valid_to: 2027-12-31
87
+ note: 'Peloton memberships (All-Access, Rental, App+, Guide, App One, Strength+). Activate once on chase.com.'
85
88
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
86
89
  evidence:
90
+ - rule: stubhub
91
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
92
+ quote: 'for a maximum of $300 annually for StubHub and viagogo purchases through 12/31/2027'
93
+ - rule: peloton-credit
94
+ url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
95
+ quote: 'Get $10 in statement credits per month on eligible Peloton memberships through 12/31/2027'
87
96
  - rule: base_rate
88
97
  url: https://creditcards.chase.com/rewards-credit-cards/sapphire/reserve
89
98
  quote: "You'll earn 1 point for each $1 spent on all other purchases"
@@ -57,7 +57,8 @@ credits:
57
57
  amount: 10
58
58
  period: month
59
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."
60
+ valid_to: 2027-12-31
61
+ note: "Instacart credits, which need an active Instacart+ membership: activate Chase's complimentary one with the card."
61
62
  - id: rideshare
62
63
  match: { categories: [transit.rideshare] }
63
64
  amount: 8
@@ -71,6 +72,9 @@ credits:
71
72
  note: 'Flights booked directly with JSX.'
72
73
  # Issuer text backing each rule; `yarn check-sources` checks it weekly.
73
74
  evidence:
75
+ - rule: instacart
76
+ url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
77
+ quote: 'from 3/23/2025 through 12/31/2027'
74
78
  - rule: annual_fee
75
79
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
76
80
  quote: '$150 Annual Fee'
@@ -125,9 +129,12 @@ evidence:
125
129
  - rule: rideshare
126
130
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
127
131
  quote: 'up to $8 back as a statement credit each month from January through November'
132
+ in_popup: true
128
133
  - rule: rideshare
129
134
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
130
135
  quote: 'Yearly opt-in is required.'
136
+ in_popup: true
131
137
  - rule: jsx
132
138
  url: https://creditcards.chase.com/business-credit-cards/united/united-business-card
133
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