Resume.io · B2C SaaS · Subscription & Retention
Transforming a cancellation flow into a retention system
ROLE
Product Designer
DATE
2024
PLATFORM
Web
Cancellation was one transactional screen — the product lost the user and learned nothing. I rebuilt it into a system that routes each person by intent and captures why they leave.
Resume.io is a subscription resume builder with the post-conversion churn typical of B2C SaaS. The old flow confirmed the exit and moved on. I redesigned it into a segmented system: each leaving user is routed to a cohort-specific path, their reason is captured as structured data, and every path is built to be tested. The concept was validated with users before any build.

Context
Every cancellation is a revenue event, but the flow treated all of them the same.
Resume.io runs on recurring subscriptions, so each cancel is a direct revenue loss. The old flow was a checkout in reverse — one confirmation, the same exit for everyone, no reason captured. Around 5% of full subscribers dropped off here, and the business couldn't tell why any of them left.
I owned the segmentation model, the four scenarios, and how cancellation reasons were sorted and routed. The lead set the brief and reviewed for brand consistency — the behavioral and structural decisions were mine.

The original flow: confirm and exit, with no reason capture and no segmentation.
Discovery
The instinct is to stop the user. But cancellation is a rare moment of high intent and unguarded feedback, and the old flow threw all of it away. I reframed the goal:
from "prevent the user from leaving" to "understand why they're leaving — and offer the alternative that fits."
Design
The same cancellation reason means different things from a power user and a dormant one — so I segmented before responding.
Three signals place each user into a behavioral segment: engagement level, subscription history, and stated reason. The flow stops treating every exit identically and starts responding to context.

Three signals resolve each user into a behavioral segment.
Design
Each segment gets the path that fits its reason — pause, discount, reminders, or reinforcement.
Three signals place a user into a cohort, and each cohort sees a different Step 2:
Goal achieved → Pause, a flexible off-ramp instead of a hard exit
High engagement → value reinforcement and progress framing
Low engagement → feature reminders and contextual guidance
Users who don't match a cohort see a neutral "what you'll lose" summary — no manipulation, just the facts.

The "goal achieved" path — a pause option replaces the hard exit. The "cost concern" path — a targeted offer with transparent terms.
Design
A discount inside the flow trains people to cancel — so I moved it to a post-lapse email for one cohort.
Offering money the moment someone hesitates teaches users to cancel for a coupon. Instead, the discount lives in an email sent after the trial lapses, to a small cohort only. The timing does three jobs at once:
Filters out discount-gamers — people who exploit cancel-flows for offers don't get one here.
Reads as sincere, not desperate — "you're one of a small group we want to hear from" only works if it's true.
Barters fairly — feedback for a discount, a trade both sides see clearly.

Two framings of the same win-back offer, built to be A/B tested — one softer, one an explicit "you give, we give" trade.
Design
Cancellation stopped being a single screen and became a branching system: capture the reason, sort it, route it.
Each path is an independent lever the team could later test and tune. The screen became the front door to a system, not the whole interaction.

One entry point routing into four independently testable paths.
System
The old flow produced one fact — who left; the new one is built to capture why.
Every exit now produces structured input: a reason, a segment, a path taken. I designed each path to run as a controlled experiment once live — so churn could move from a blind loss to something the team could read and act on.

Each exit is designed to generate structured, segmentable churn input.
Constraints
A retention flow is one bad decision from a dark pattern — so I designed against my own incentives.
The brief explicitly required preserving trust. The lines I held:
Cancel is always one step away — no buried buttons, no detours.
Discounts with honest terms — no fake countdowns, no hidden renewal traps.
Pause is a real off-ramp — a genuine option, not a trap.
No guilt-tripping copy — the flow asks, it doesn't shame.

Validation
Not shipped — so instead of inventing metrics, I tested the concept with real users.
With no production data, I tested with colleagues and resume-building community volunteers: could users find the path that fit their reason, and did their reasons map cleanly onto the four segments?
Directional signals — small sample, not production metrics:
14 of testers routed into a path matching their stated reason
churn reasons captured in testing for the first time, vs. zero in the old flow
testers read the pause and discount options as fair, not pushy
Reflection
The real shift was treating cancellation as a decision system, not a UI screen.
Instrument before launch. The value is the data the system produces — analytics should ship with the flow, not after.
Validate against real churn, not a test group. The sample proved the model is legible; only production data proves how large each segment is. "Goal achieved → pause" is the biggest assumption.
Shipping this is organizational, not visual. Next round I'd propose a phased rollout — one path live first — to de-risk the build and get real numbers fast.