← November 2026
App Idea Cards 2026-11-03

LinkLedger

An OfferStack tracker for card-linked offers (Amex Offers, Chase Offers, Citi Merchant Offers and the rest) that knows each issuer's posting window, matches the credits on your statement export, and…

LinkLedger

LinkLedger

An OfferStack tracker for card-linked offers (Amex Offers, Chase Offers, Citi Merchant Offers and the rest) that knows each issuer's posting window, matches the credits on your statement export, and tells you which credit is overdue and when to chase it.

Problem

You added "spend $250, get $50 back" to your Amex Gold in August, made the purchase, and moved on. Amex's terms let the credit take up to 90 days after the offer ends. Chase says 30 business days, Capital One about 45, and Bank of America up to 75 for some deals. Nobody keeps that calendar in their head across five issuers and 20 offers. Credits that never post are only recovered if someone notices. A FlyerTalk poster in January 2026 bought before an offer's deadline, the charge posted after it, and Amex chat told them to wait another 90 days. Each missing credit is $20 to $100, and nobody adds up how many they've lost in a year.

Target user

The Active Optimizer from OfferStack's STRATEGY.md. They have 5 to 15 cards, and they add Amex and Chase offers by the dozen because adding them costs nothing. They have no system for confirming the money arrived. The issuer apps show which offers you've added. I haven't found a tool that checks that list against what actually posted, and STRATEGY.md puts MaxRewards and AwardWallet on the tracking side, not the reconciliation side. Today the reconciliation happens in a spreadsheet, or it doesn't happen.

MVP scope

  • A "linked offer" entry with card, issuer, merchant, spend threshold, credit amount, offer end date and purchase date. Users enter it in about 15 seconds or paste it from the offer's share link. It's stored in a new user_linked_offers table, because these offers are targeted per user and don't exist in the shared offers catalog.
  • A per-issuer posting-window table (Amex: 90 days from offer end; Chase: 30 business days; Capital One: ~45 days; BofA: 60 days, 75 for affiliate deals; Citi: unknown until we observe it). It gives every entry an "expected by" date and a "chase after" date. The table is admin-editable through the existing LIF-049 review queue.
  • Statement CSV import for the big five issuers. It matches credits to open entries by amount, a fuzzy merchant name and the date window. Matches are marked posted. The user confirms anything ambiguous instead of the app guessing.
  • When a credit is matched, user_offer_activations.realized_value gets the real number. The LIF-030 trend chart then shows money received, not money hoped for.
  • An "overdue" state, shown on /alerts and as one new Next Best Action type ("Chase the $50 Home Depot credit on Amex Gold, 12 days overdue"). It comes with a copy-paste chat message that already has the offer details, purchase date and amount filled in.
  • A yearly "recovered vs. lost" total per card, to feed into keep-or-cancel decisions.

Monetization

Freemium inside OfferStack's existing tiers. Free users get manual entries and expected-by dates for up to five open offers. Pro ($5–8/mo, as already set out in STRATEGY.md §5) unlocks CSV matching, unlimited entries, overdue alerts and the yearly total. The pitch to upgrade is simple. Recover one missed $50 credit and the year of Pro has paid for itself. No new SKU.

Why now

Card-linked offers have become the substitute for benefits the issuers are cutting. Amex ended the Platinum Saks credit on 2026-07-01 and said it would replace it with exclusive Amex Offers. Doctor of Credit has also reported Amex Offers aimed only at new cardmembers. The Points Party's 2026-10-23 comparison of all five issuers lists five different posting windows and five different enrollment rules, so the calendar problem is real. On OfferStack's side, the PRD's own "Why this project exists" names "tracks in-flight actions and deadlines to prevent value leakage" as a core job. user_offer_activations already has a realized_value column, but nothing in the backlog ever fills it with a confirmed number. STRATEGY.md §4.4 calls deadline alerts the retention engine. This is a deadline alert about money the user is already owed.

Risks & open questions

  • Demand: many Active Optimizers eyeball their statements and assume the credit came. The product only matters if missed credits are common enough to add up. Before building, ask 10 r/churning regulars to check the last six months of offers by hand and count what never posted.
  • Build: entering offers by hand is friction, and the PRD rules out direct bank API integrations (§13). If people won't log offers when they add them, CSV matching has nothing to match against. A browser extension that captures the "Add to card" click would fix that, but it's a separate product with its own Chrome Web Store review.
  • Statement merchant names are messy ("HOMEDEPOT.COM 4521" vs. "The Home Depot"), and credit descriptions differ by issuer. Expect fuzzy matching to need a human confirm step for a long time.
  • Posting windows come from issuer terms and blog summaries, not from an API. Citi publishes no timeline at all. If a window in the table is wrong, a credit shows as overdue when it isn't, and the user calls Amex for nothing. Show the source for every window.
  • Schema: user_offer_activations.offer_id assumes a catalog offer. Linked offers need either a nullable FK or their own table joined in for the trend chart. Small, but it touches a completed LIF item.

Next step

Run the by-hand audit with 10 Active Optimizers. If the median person finds at least one missing credit worth $25 or more, promote LinkLedger to the weekly prototype with the CSV matcher built first.

Sources

More from App Idea Cards