{
 "_README": [
  "CARD-LINKED OFFERS FEED \u2014 PLACEHOLDER.",
  "Amex Offers / Chase Offers / Citi Merchant Offers / BankAmerideals.",
  "",
  "There is no public API for any of these. Real options, roughly in order of effort:",
  "  1. Issuer portal scrape behind the user's own authenticated session.",
  "  2. Card-linked-offer networks (Cardlytics, Figg, Fidel/Enigma, Dosh) \u2014 commercial deals.",
  "  3. User-forwarded offer emails, parsed.",
  "  4. Manual entry \u2014 worth supporting regardless, since coverage will never be complete.",
  "",
  "Load via Settings -> 'Load offers feed'. Shape below; `activated` is the user's state,",
  "so persist it separately from the feed if you refresh the feed on a schedule.",
  "",
  "type:  statement_credit  -> spend `spendReq`, get `value` back",
  "       percent_back      -> get `percent`% back, capped at `maxCredit`",
  "       bonus_points      -> earn `value` extra points (valued via the card's currency)",
  "",
  "cardIds must match ids in card-benefits.master.json. An offer on a card the user",
  "does not hold is ignored. `category` should use the app's category vocabulary so",
  "the app can tell whether the user actually spends there.",
  "cardIds must match ids in card-benefits.master.json (e.g. amex_gold, chase_sapphire_preferred).",
  "Dates in this sample are rolled forward when they expire (npm run offers-check reports them): an expired sample offer teaches a reader nothing and shows a deadline nobody can act on. The offers themselves are illustrative, not live."
 ],
 "schemaVersion": "1.0",
 "generatedAt": "PLACEHOLDER",
 "source": "PLACEHOLDER \u2014 sample offers, not live",
 "offers": [
  {
   "id": "amx-united-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_platinum",
    "amex_gold"
   ],
   "merchant": "United Airlines",
   "title": "Spend $500+, get $100 back",
   "type": "statement_credit",
   "value": 100,
   "spendReq": 500,
   "category": "flights",
   "added": "2026-07-14",
   "expires": "2026-09-30",
   "activated": false
  },
  {
   "id": "amx-marriott-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_platinum"
   ],
   "merchant": "Marriott Hotels",
   "title": "Spend $300+, get $60 back",
   "type": "statement_credit",
   "value": 60,
   "spendReq": 300,
   "category": "hotels",
   "added": "2026-08-01",
   "expires": "2026-10-15",
   "activated": false
  },
  {
   "id": "amx-wholefoods-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_gold"
   ],
   "merchant": "Whole Foods Market",
   "title": "Spend $75+, get $15 back",
   "type": "statement_credit",
   "value": 15,
   "spendReq": 75,
   "category": "groceries",
   "added": "2026-08-31",
   "expires": "2026-10-26",
   "activated": true
  },
  {
   "id": "chase-instacart-1",
   "issuer": "Chase",
   "cardIds": [
    "chase_sapphire_preferred",
    "chase_freedom_unlimited"
   ],
   "merchant": "Instacart",
   "title": "$10 back on $50+",
   "type": "statement_credit",
   "value": 10,
   "spendReq": 50,
   "category": "grocery_online",
   "added": "2026-08-10",
   "expires": "2026-11-30",
   "activated": false
  },
  {
   "id": "amx-equinox-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_platinum",
    "amex_gold"
   ],
   "merchant": "Equinox",
   "title": "Spend $250+, get 5,000 points",
   "type": "bonus_points",
   "value": 5000,
   "spendReq": 250,
   "category": "fitness",
   "added": "2026-08-31",
   "expires": "2026-10-26",
   "activated": false
  },
  {
   "id": "citi-homedepot-1",
   "issuer": "Citi",
   "cardIds": [
    "citi_double_cash",
    "citi_custom_cash"
   ],
   "merchant": "Home Depot",
   "title": "Spend $200+, get $30 back",
   "type": "statement_credit",
   "value": 30,
   "spendReq": 200,
   "category": "home_improvement",
   "added": "2026-08-02",
   "expires": "2026-09-20",
   "activated": false
  },
  {
   "id": "amx-hertz-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_platinum"
   ],
   "merchant": "Hertz Rent A Car",
   "title": "Spend $150+, get $30 back",
   "type": "statement_credit",
   "value": 30,
   "spendReq": 150,
   "category": "car_rental",
   "added": "2026-08-31",
   "expires": "2026-10-26",
   "activated": false
  },
  {
   "id": "chase-amc-1",
   "issuer": "Chase",
   "cardIds": [
    "chase_sapphire_preferred",
    "chase_freedom_flex"
   ],
   "merchant": "AMC Theatres",
   "title": "15% back, up to $12",
   "type": "percent_back",
   "percent": 15,
   "maxCredit": 12,
   "category": "entertainment",
   "added": "2026-08-08",
   "expires": "2026-10-31",
   "activated": false
  },
  {
   "id": "amx-nordstrom-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_platinum",
    "amex_gold"
   ],
   "merchant": "Nordstrom",
   "title": "Spend $175+, get $35 back",
   "type": "statement_credit",
   "value": 35,
   "spendReq": 175,
   "category": "department_store",
   "added": "2026-08-31",
   "expires": "2026-10-26",
   "activated": false
  },
  {
   "id": "wf-costco-1",
   "issuer": "Capital One",
   "cardIds": [
    "capone_savor"
   ],
   "merchant": "Costco Wholesale",
   "title": "Spend $250+, get $25 back",
   "type": "statement_credit",
   "value": 25,
   "spendReq": 250,
   "category": "wholesale_club",
   "added": "2026-08-14",
   "expires": "2026-10-01",
   "activated": false
  },
  {
   "id": "amx-delta-1",
   "issuer": "American Express",
   "cardIds": [
    "amex_platinum"
   ],
   "merchant": "Delta Air Lines",
   "title": "Spend $400+, get $80 back",
   "type": "statement_credit",
   "value": 80,
   "spendReq": 400,
   "category": "flights",
   "added": "2026-08-16",
   "expires": "2026-12-31",
   "activated": false
  }
 ]
}
