Mobile product design EdTech · B2B2C Behavioral UX

Redesigning how PaperLMS handles an interrupted mock test

PaperLMS gives coaching institutes and creators their own branded course and mock-test apps — the "Shopify for education." When a paid mock test got interrupted, the product had no way to tell the user whether it mattered, and no way back in. I redesigned that single moment end to end: from a silent failure into a recovery flow grounded in how people actually behave when a task gets cut off, then iterated it against real usage until it held up.

Role
Product Designer, end‑to‑end
Platform
iOS & Android
Team
Design + Engineering
Process
Two shipped iterations
Shipped — live in the app today
The shipped v2 resume prompt — Hey, You Have A Mocktest To Complete, with subject, quest count, and a Continue Mocktest button that reads as the clear primary action
The fix, in one button. Continue now has real visual weight against Cancel — it reads as the obvious next step, not a coin flip.
Tap the marker — this is what shipped. Here's the process that got it there.

How I approached it

Same method on every project: diagnose with data, ground the fix in how people actually behave, design and test in public, then read the results honestly.

1

Diagnose the funnel

Analytics, support signal, and a heuristic audit — before any pixel moved.

2

Ground it in behavior

Five behavioral principles decided the mechanism, not just the visuals.

3

Design, ship, test

v1 shipped deliberately as a testing build — not a finished answer.

4

Read the data honestly

Even when a metric looked worse at first glance.

01 — Impact

A silent failure became a moment users actually trusted

Retention among users who hit an interruption moved the most — direct evidence the fix addressed the real bottleneck, not a symptom of it.

0%
Users who returned to finish an interrupted mock test
↑ from 12%
0%
Drop-offs now visible & measurable (was invisible before)
↑ from 9%
0
Concrete friction points fixed between v1 and v2
from usability testing
Why this mattered to the business — mock tests are paid. Every interrupted session a user couldn't resume was a live refund risk and a reason not to buy the next one. Fixing resumption was a retention fix and a revenue fix at the same time.
02 — The problem

The app couldn't tell "I meant to leave" from "I lost my test"

A user starts a paid mock test, gets a call, and closes the app. Ten minutes later they reopen it — and there's no sign the test ever existed. Nothing distinguishes an accidental closure from an intentional one, and nothing offers a way back. The product simply moved on, and so, eventually, did the user.

How it landed on each side

For the user

  • Frustration and disappointment — time, effort, and money already spent felt wasted
  • No path back to a test they'd already paid for and partly completed
  • Disrupted learning progress — mock tests are a self-assessment tool, and a broken one undermines the reason to use it at all

For the business

  • Direct revenue exposure — unresolved paid sessions are a natural refund trigger
  • Falling engagement — users who hit this once had a real reason to stop trusting the mock test feature specifically
  • Compounding churn — a broken re-entry point discourages the next purchase, not just the current one
The reframe — this wasn't a bug to patch. It was a missing moment in the product — the app had no answer for "what happens when I come back?"
03 — Research signals

Where the evidence actually came from

Before designing anything, I wanted to know whether this was a real, sizeable problem or a loud edge case. Four signals, pulled together, said it was real.

Product analytics

Retention and drop-off among users who'd started a mock test, measured against those who hadn't — the clearest quantitative signal that something broke mid-funnel.

Support signal

Recurring language in support conversations — "lost my test," "app closed," "can't find where I was" — pointing at the same moment from a different angle.

Heuristic audit

Mapped against Nielsen's usability heuristics: a direct violation of visibility of system status and user control and freedom at the exact point of interruption.

Business framing

Because mock tests are paid, every unresolved interruption was a plausible refund request — the qualitative complaint and the revenue risk were the same event.

The baseline, before any redesign
0%
Retention among users who attempted a mock test
0%
Drop-off the product could actually detect and measure

That second number undersells the real problem — see Reading the data honestly below for why.

04 — The psychology behind it

Why an automatic prompt, specifically, was the right intervention

The obvious fix is "let people continue." The harder question is why a specific mechanism — an automatic prompt at app launch, rather than a settings toggle or a reminder — was the one likely to actually work. Five behavioral principles shaped that call. Click each to expand.

People remember unfinished tasks more vividly than completed ones, and carry a low level of tension until they're resolved (Zeigarnik, 1927). A user who got cut off mid-mock-test was almost certainly still carrying that unfinished feeling when they came back — the product just never gave it anywhere to go.

Applied — the fix isn't reminding users a task exists; they already feel that. It's giving that existing tension a one-tap resolution the moment they reopen the app.

Losses are felt roughly twice as strongly as equivalent gains (Kahneman & Tversky, 1979). A half-finished, paid mock test represents real invested time and money — losing that progress registers as a loss, not a neutral reset.

Applied — the prompt is framed around continuing real progress ("Unfinished Mocktest," subject and quests-left shown) rather than a generic "start over" — because the progress genuinely is worth protecting, not just worth mentioning.

Nielsen's usability heuristics favor recognition over recall — don't make people remember information or navigation paths when the system can just show them.

Applied — instead of expecting users to remember and manually navigate Home → Mock Test → find the right test, the interruption surfaces itself automatically the moment there's an opportunity to act.

Decision time increases with the number and complexity of choices available (Hick, 1952). At the exact moment of app relaunch, attention is scarce and intent is still forming.

Applied — the prompt reduces the decision to one clear binary — Continue or Cancel — instead of burying resumption inside a menu the user has to parse first.

People judge an experience largely by its peak moment and how it ended, not its average (Kahneman). For a paid product, the last remembered moment of a broken test — no continuation, no explanation — disproportionately shapes overall trust, even if everything before it worked fine.

Applied — fixing the "end" of an interrupted session was worth more to overall trust than its small footprint in the product would suggest.
05 — Ideation

Three ways to solve it — and why one won

I scored each option on how directly it intervened at the actual moment of failure — app relaunch after an interruption — rather than working around it.

Persistent session state

Maintain the mock test's session state even when the app is fully closed, so the test is technically resumable at any time.

Necessary underneath, but invisible on its own — it solves the technical problem without solving the moment where the user actually needs to see it.

Automatic prompt on app launch

Show a popup or bottom card automatically when the user relaunches the app, asking if they want to continue their mock test — with a clear, prominent way to resume.

Selected — it intervenes at the exact re-entry point, requires no user memory or effort, and turns a silent failure into a visible, one-tap decision.

Push notifications

Send reminders to continue the mock test at predefined intervals or personalized timing, reaching users even when the app isn't open.

Useful as reinforcement, but arrives detached from the moment of intent — and adds a channel users can simply ignore or mute.
06 — Designing v1

The first version, shipped to learn

v1 translated the chosen idea directly: a bottom-sheet prompt on app launch, naming the unfinished test and offering a single clear way back in. It shipped deliberately as a testing build, not a finished answer.

PaperLMS v1 resume prompt — Unfinished Mocktest bottom sheet with subject and Cancel/Continue buttons
07 — Testing v1

What a short round of usability testing surfaced

I ran v1 past existing learners on the app before treating it as done. Three concrete, fixable problems came back — none of them about whether the idea worked, all of them about whether the execution was clear enough.

01

The illustration competed with the actual message for attention — it needed to support the prompt, not lead it.

02

Users wanted more context about the test itself before deciding — what subject, how much was left — not just that "a mock test" existed.

03

Cancel and Continue read with almost the same visual weight, undermining the one clear action the whole prompt existed to drive.

08 — Iterating to v2

Same idea, sharpened by what testing found

v2 kept the core mechanism and fixed exactly what testing flagged: clearer, more direct language; the subject and remaining questions surfaced up front; and a Continue button with real visual weight against Cancel.

Screen improvements — v2 resume prompt annotated with three fixes: clear action-oriented language, more information about the mock test, and clear actionable CTAs
v1 → v2, side by side

Drag to compare the two shipped prompts directly.

v2 resume prompt — Hey, You Have A Mocktest To Complete, with subject and quests left shown v1 resume prompt — Unfinished Mocktest, minimal context
v1
v2
v1 → v2 — more context, clearer copy, and a Continue button that actually reads as the primary action.
The shipped v2 resume prompt — Hey, You Have A Mocktest To Complete, live in the PaperLMS app
Shipped — this is the version live in the app today.
09 — Reading the data honestly

Retention jumped. Drop-off also went "up." Here's why both are good news

Retention among users who hit an interruption moved from 12% to 72% — the headline result. But the drop-off number moved from 9% to 18%, which looks, at a glance, like it got worse. It didn't — and understanding why matters more than the number itself.

Before the redesign, the app had no mechanism to detect an interruption at all, so the vast majority of abandoned sessions were simply invisible — not measured as retained, not measured as dropped-off, just unaccounted for. After launch, every interruption now surfaces a real, logged decision: resume (72%) or explicitly cancel (18%). The 9%→18% shift isn't more people giving up — it's the business gaining, for the first time, real visibility into a number it previously couldn't see at all. Fixing the UX also fixed the instrumentation.
10 — Reflection

What I'd carry forward, and what I'd do differently

Continue doing
1

Brainstorming without constraints first — scoring ideas against effort and directness only after the option space was genuinely wide, not narrowed too early by what felt "buildable."

Stop doing
1

Assuming the reason behind a metric shift instead of asking. The drop-off number looked like a regression at first glance — the honest move was to dig into what it actually measured before writing the story around it.

What I'd do differently for a v3
1

Run structured, moderated usability sessions before v1 shipped, not after — the three fixes in v2 were all things a pre-launch round could plausibly have caught earlier.

2

Instrument analytics and event logging before shipping v1, so the "before" baseline is real telemetry rather than a partial picture reconstructed after the fact.

3

Pair the prompt with persistent session state as a complementary layer, not an alternative — so resumption still works even outside the exact app-launch moment the prompt depends on.

"Every solution to every problem is simple. It's the distance between the two where the mystery lies."— Derek Landy
Let's talk

Interested in working together?

I'm always open to discussing product design work, new projects, or opportunities to collaborate.

Send message