A subscription-tracking app built around a cancellation flow that refuses to promise what it can’t verify.

Internship Capstone at FlyRank AI
Sub-Track
Role
Product Designer - 10-Week Capstone
Timeline
July - August 2026

  1. The Problem

    76% of 642 subscription apps use dark patterns to block cancellation (FTC / ICPEN / GPEN, 2024). "Cancel anytime" is a promise users have learned not to trust.

  2. The Move

    Built a subscription manager that refuses to claim what it can't prove. Three steps to add. Three steps to leave. Symmetric by design.

  3. The Mechanism

    Every cancellation redirects to the subscription's own site rather than being processed in-app. A post-redirect check-in confirms the handoff, the product never claims a completion it can't verify.

  4. The Outcome

    5.4× modeled user value versus a competitive premium tier's own cost. $1,796 modeled annual recurring revenue per 1,000 free users at $4.99 and 3% conversion.

SubTrack subscription manager collage: billing detail, dashboard, calendar, and analytics screens layered on a dark ground with the "Subscription made every easy" tagline

A joint FTC, ICPEN, and GPEN study found that seventy-six percent of 642 subscription apps used at least one dark pattern to block cancellation. The FTC is currently suing Uber over claims that Uber One subscribers could face up to twenty-three screens and thirty-two actions just to cancel. Subscription services have no incentive to make leaving as easy as joining, and nothing forces symmetry between the two.

The person this was built for holds three to five active subscriptions, has forgotten at least one exists, and has no reason to trust a "cancel anytime" promise. These decisions were also made against a legal bar still in motion: the prior Click-to-Cancel Rule was struck down in 2025, and a replacement was still in review.

The core constraint was set before a single screen existed: the product could not claim a symmetry it could not prove. Management had already decided the app would track and redirect rather than take payment details or process cancellations directly, so adding a subscription became three steps, and so did starting a cancellation.

That is a real trade-off. A redirect-only model can never guarantee a cancellation actually completed, only that the handoff happened and the user was asked to confirm afterward. Processing cancellations directly would have allowed a cleaner metric, at the cost of storing financial data the product does not need and overselling what it can verify, the exact failure this project set out to avoid.

Redirect, Not Process

Every action hands the user to the subscription’s own site instead of processing it in-app. The product can only confirm it asked, not that a cancellation went through.

Three Steps To Leave, Three To Join

Comparing a full signup to a full cancellation stopped being fair once the app stopped owning either end. What survived: three steps to add a subscription, three to cancel one.

AI Logs Changes As Fact

Price and plan changes are detected automatically and logged with no confirmation step. A false positive can reach the user stated as fact, a trade-off named rather than hidden.

  1. 01Business Goals

    The goal was a cancellation flow that could not quietly hide anything, including from itself, backed by a case for real revenue rather than a portfolio piece alone.

  2. 02Research Synthesis

    Grounded the problem in FTC, ICPEN, and GPEN regulatory data instead of the competitive audit originally planned, a real gap named directly rather than hidden.

  3. 03User Flow & IA

    Rebuilt the sitemap around one constraint, track and redirect, not process; screen count grew from fifteen to eighteen, and the symmetry metric was redefined to three steps each way.

  4. 04Wireframes

    Early Calendar exploration used AI ideation for a fast first pass; the output felt generic and needed manual rework to match the system once one existed.

  5. 05Edge Cases & Error States

    The redirect model’s real edge case is an unconfirmed cancellation, handled with a post-redirect check-in rather than a false guarantee. A second edge case, AI-detected changes that could be wrong, was named as a trade-off rather than solved.

  6. 06Design System

    Built a color system verified AA in light and dark mode by script, not by eye; four pairs failed the first pass and were iterated until they passed, plus seven components with full state specs.

  7. 07High-Fidelity UI

    Eight screens built to spec: Dashboard, Subscription Detail, Calendar, Change Log, Add Subscription, Account Settings, Edit Profile, and Analytics.

  8. 08Prototyping

    Every real, editable screen was assembled by hand in Figma; AI tools produced layout ideas and HTML drafts, but nothing usable as a native screen without rebuilding.

  9. 09Usability Testing

    Ran a five-user cancellation task; five of five completed it with no reported problems. A token-level contrast audit caught two real accessibility issues and fixed both at the source.

  10. 10Dev Handoff

    Handed off to FlyRank AI’s engineering team with every component carrying full state specs, built to be picked up and built, not just looked at.

  • FigmaEvery editable screen and component; hand-assembled
  • ClaudeDesign-system spec, verification script, layout discussion
  • Google StitchCalendar-screen ideation (rebuilt by hand)
  • MobbinPattern reference for dashboards and detail views
  • DribbbleVisual reference for calendar and analytics treatments

The Outcome

This was a 10-week internship capstone at FlyRank AI, handed off to the engineering team for build, so there is no live production data yet beyond a clean five-of-five test pass. Modeled at a $4.99 price and a conservative 3% conversion, 1,000 free users project to roughly $1,796 in annual revenue. That number is illustrative, not measured; confirming it would need real usage data and testing.


5.4x
User value delivered vs. Premium’s own cost
$1,796 ARR
Modeled per 1,000 free users, 3% conversion

Need a product problem solved?

A subscription-tracking app built around a cancellation flow that refuses to promise what it can’t verify. · SaribPXL