Result Page redesign: turning the end of a lesson into the start of the next one
Every SpeakX user finishes an exercise and lands on a Result Page. The old one was a numeric scorecard with a "Continue" button: a dead end, not a continuation. I redesigned it as the engagement-and-monetisation hinge of the lesson loop, and we shipped it as four layered A/B tests across 2024-25. Practice went up. Orders went up. Payment success went up.
The Result Page was the highest-leverage screen in the product, and it was being treated like a receipt.
SpeakX's core loop is simple: the user starts an exercise, completes it, and lands on a Result Page that tells them how they did. Every single active user hits this screen, multiple times a session. It is the most viewed surface in the app after the home feed.
The pre-redesign Result Page was utilitarian. A numeric score, an accuracy percentage, basic per-question feedback, and a "Continue" CTA that returned the user to the lesson list. There was no motivating moment, no continuation logic, and no acknowledgement that this was also the moment the user was most likely to either keep going or convert to paid. It was a screen that ended things.
Two funnels converged on one screen, and we were optimising neither.
On the engagement side, next-lesson start rate was sitting well below where the funnel above it suggested it should. Users were finishing an exercise and bouncing back to the feed instead of continuing. The Result Page was acting as a hard stop in a loop that was supposed to compound.
On the monetisation side, premium upgrade nudges were buried in settings and the home page, far from any moment of actual value. The Result Page was the one screen where the user had just experienced the product working, and we were not using it. Two funnels, one surface, both leaking.
One screen had to do two competing jobs without breaking either.
- Engagement and monetisation share the surface. The Result Page had to push users into the next lesson and nudge upgrade. Over-indexing on either kills the other. Every iteration had to be measured on both axes.
- No new screens, no new flows. We could redesign the existing surface but could not add intermediate screens between exercise completion and next-lesson start. Latency to the next loop was sacred.
- Free-tier users see this multiple times per session. A premium nudge that is pleasant on impression one is fatigue by impression six. The hook had to be contextual, not constant.
- iOS and Android parity. Both platforms had to ship the same hierarchy, with Android picking up cashback bottom sheet behaviour first because of payments-stack readiness.
The user's question on this screen is "what now?", not "how did I do?".
I watched session recordings of users completing exercises and read through completion-state survey responses. The numeric score got a glance. What users actually scanned for was the next thing: was there another lesson, was it harder, was their streak intact, did they earn anything. The score answered a question they had mostly already answered for themselves while doing the exercise.
The behaviour the data was describing was a momentum problem. Users finished an exercise warm and the screen cooled them down. By the time they decided what to do next, the moment had passed and the home feed was a distraction surface, not a continuation one.
"I know I got it right. I just want to do the next one before I have to put the phone down."
Free-tier user, beginner track, observed in a moderated sessionThe reframe. Stop designing the Result Page as a summary of what just happened. Design it as the on-ramp to what happens next. Score becomes the smallest motivating frame at the top, the upgrade hook sits in the contextual middle when relevant, and a single dominant continuation CTA carries the user into the next lesson before momentum dies.
Continuation wins the screen. The hook earns its place.
The shipped hierarchy was deliberate and small:
- Top: motivating frame. Score, accuracy, and streak in a compact celebratory block. Enough to feel the win, not enough to dwell.
- Middle: contextual upgrade hook. The "Result Page Hook" only renders for free users at relevant moments, with copy tied to what the user just did. A locked-feature framing, not a generic price pitch.
- Bottom: one dominant continuation CTA. "Next lesson" is the primary action and visually dwarfs everything else on the screen, including the back button and the hook.
- Cashback bottom sheet: a later iteration that surfaces a contextual cashback offer at the right point in the flow for users who tap into the upgrade path.
The trade-off I accepted explicitly: when the engagement and monetisation funnels compete on this screen, engagement wins. The Next lesson CTA is the largest, highest-contrast element, even when the upgrade hook is showing. The hook had to be good enough to convert without needing to dominate. Every iteration was tested on both funnels, and any variant that lifted orders while dropping practice was killed regardless of the order lift.
Four shipped iterations, each layered on the last.
Iteration 1: Exercise Result (the new Result Page itself). The headline release. New hierarchy, motivating frame, single continuation CTA. Test scaled with Practice +19.5%, Order Created +9%, Payment Done +30.8%. The payment number is the one I trust most because it sits furthest down the funnel and is hardest to game.
Iteration 2: Result Page Hook. The contextual upgrade nudge in the middle of the screen, gated to relevant moments for free users. Test scaled with Order +36.7% and Payment +5.2%. The Order number was the biggest single lift across the program and earned the hook its permanent slot.
Iteration 3: Result Page Back button A/B. A smaller test on how the back button was framed and weighted on the new screen, to make sure it was not silently competing with Next lesson. Test scaled with Practice +11 (likely points), Order +7%, Payment +3%. A modest lift, but one that confirmed the hierarchy was right and the back button had been quietly costing us continuation.
Iteration 4: Cashback Bottom Sheet. A companion sheet on the upgrade path with a contextual cashback offer. Test scaled with Order +14.8% and Payment +32.8%. The Payment lift here was the second-best in the program and reinforced that the warm moment extended past the Result Page itself if we kept the handoff tight.
What didn't ship. A streak-recovery variant of the hook (for users who broke their streak that day) was prototyped but descoped: the audience segmentation was not clean enough to ship without false positives. It is queued for a future iteration.
Numbers across four scaled A/B tests on SpeakX's internal tracker.
"The Result Page used to be the screen we under-thought because every user hit it. Treating it as the start of the next lesson, not the end of the last one, changed both the engagement curve and the monetisation curve in the same quarter. That almost never happens."
Ayush Badukal · Product Manager, SpeakXWhat each iteration earned, and what it carried.
What I'd do differently. I would have shipped the Result Page Hook and the Back button A/B inside the headline release rather than as follow-ups. The hierarchy work in iteration 1 made both of them obvious in retrospect, and splitting them into separate tests cost us weeks of compounded lift. The honest reason they were separate was risk management on the headline release. In hindsight, the headline was robust enough to carry them.
What I underestimated. How much of the win came from the back button work. Iteration 3 looks small on the dashboard, but it was the one that proved the hierarchy was the lever, not the celebration. Removing weight from the back button without removing the button itself moved practice without costing anything else. That is the cleanest kind of design win, and I almost did not run the test.
What I'll carry forward. When two funnels share a screen, name which one wins ties before you start. We did, and it survived four iterations of pressure to flip it. Every time an upgrade-side variant beat a continuation-side variant on orders but cost us practice, the rule made the call easy. Without that rule, the Result Page would have drifted into a paywall, and the engagement loop would have paid for it.