Unsub
PrototypeSignature capability
The real asset is hand-curated UK cancellation playbooks (13 merchants like Sky, David Lloyd, PureGym) that encode each retailer's dark patterns and exact cancel steps, something no API sells you.
What it is
Unsub connects to a bank via Plaid, pulls the recurring outflow streams from Plaid's transactionsRecurringGet endpoint, and normalizes each one into a subscription with a monthly and annualized figure regardless of billing cadence (weekly through yearly). It flags price increases when the latest charge exceeds a stream's own average by more than 5%, sorts by biggest drain first, and matches each merchant against a hand-curated library of UK cancellation playbooks. Each playbook carries a difficulty rating, the cancellation method, the documented dark patterns, and step-by-step instructions. It's a Next.js 16 / React 19 app running against Plaid sandbox, and Jordan is deliberately honest that it's a clickable demo, not production: no auth or encryption-at-rest yet.
Highlights
- Money math is fully unit-tested: 8 node:test cases (all passing) cover annualization across every Plaid frequency, monthly normalization, price-increase flagging, and burn summing
- Playbook matching uses word-boundary regex, not loose substring, with an explicit test that 'SKY DIGITAL' matches Sky but 'Skyscanner' does not
- 13 curated UK merchant playbooks (Sky, Virgin, PureGym, The Gym Group, David Lloyd, Audible, Lyca Mobile...) each with difficulty rating, dark-pattern notes, and cancel steps
- Handles Plaid's async reality: warms transactionsSync, then returns HTTP 202 with a pending flag on PRODUCT_NOT_READY so the client retries instead of erroring
- Modern stack, Next.js 16.2 App Router on React 19.2 with the API split into link-token, token-exchange, and subscriptions routes
- Honest scoping in the README: auth, encryption, trial-conversion alerts, and production Plaid are explicitly deferred to the 'decide it's a business' phase
Tech · TypeScript, Next.js 16.2 (App Router), React 19.2, Plaid SDK (transactionsRecurringGet), Tailwind CSS v4, node:test