The idea
An extension that watches for the moment you subscribe to something — a checkout page, a "your trial has started" confirmation, a plan upgrade screen — and quietly files it: merchant, price, billing interval, trial end date, and the URL of the cancellation page. Everything is stored locally in the browser. A week before each charge, it tells you, with a one-click link straight back to the page where you can cancel.
The point is capture at the moment of signup. Every other approach — reading bank statements, forwarding emails, filling in a spreadsheet — happens after the money has already moved or requires you to do the work manually.
Why build this
The average person now runs a dozen small recurring charges and can name maybe seven of them. The ones that hurt are the trials: you sign up on a Tuesday to read one article, and eleven months later you notice a monthly line item you never used. Bank apps flag the charge, but only after it clears, and their merchant names ("SP * NORTHFIELD LTD") often don't map to anything you recognise.
The signup page, on the other hand, knows everything: the real product name, the exact price, the trial length, and the account you used. It just throws that information away the moment you navigate off. Extensions are the only place that data is reachable without asking anyone for banking credentials or inbox access, which is also the whole privacy argument for building this as an extension rather than a service.
Stack sketch
- Chrome/Firefox extension, Manifest V3, written in TypeScript with
wxtfor the build and cross-browser packaging. - Detection in a content script, three layers: parse
schema.orgJSON-LDOffer/Subscriptionblocks when present; a small set of hand-written adapters for the top ~50 subscription merchants; and a generic heuristic that looks for a currency amount adjacent to interval words ("per month", "/yr", "after your trial"). - Confirmation step in the popup — never file a subscription silently. The extension proposes what it found; you confirm, correct, or dismiss.
- Storage in IndexedDB via Dexie, with
chrome.storage.syncholding only settings. - Reminders via
chrome.alarmsand notifications; plus an.icsexport (generated withical-generator) so upcoming charges show up in a normal calendar. - Optional CSV import of a bank export, matched against filed subscriptions by amount and date window, to catch what detection missed.
Scope for v1
In: - Detection and confirm-to-file on checkout and confirmation pages. - A list view: what you pay, monthly total, next charge date, sorted by what's about to hit. - Reminders at trial end minus seven days and minus one day. - Manual add, for the subscriptions you set up before installing. - Local-only storage and a JSON export.
Out: - Any bank connection or Plaid-style aggregation. - Automatic cancellation. Deep-link to the cancel page and stop there. - Mobile. Signups happen on desktop more often than you'd guess, and mobile browsers barely support extensions. - Accounts, sync, and a backend of any kind.
Where it could go
The merchant adapters are the moat, and they compound. Once you have a few hundred users confirming or correcting detections, you have a labelled corpus of subscription pages; corrections tell you exactly which adapters are drifting. That same corpus supports a "cancellation route" database — the actual click path to cancel each service, which is deliberately hard to find and rarely changes.
From there, two directions. A family or household mode, where one person sees the shared subscription surface across several browsers, is the consumer path and the first thing anyone will ask for. The other is B2B: the same detection running on a work profile catches shadow SaaS — the analytics tool someone expensed on a card, the design seat nobody cancelled — which finance teams currently reconstruct by hand once a quarter.
Watch out for
Detection accuracy is the whole product, and false positives are worse than misses — an extension that files three phantom subscriptions gets uninstalled, while one that misses a few still saves money. Keep the confirm step, and never let the heuristic layer file anything on its own.