Rebuilding the parent app around the six questions parents actually open it to answer.
BrightCHAMPS runs live one-on-one classes in coding, financial literacy, robotics and math for 6–16 year olds. The Learner App is where a parent manages all of it. Through mid-2023 it was losing the people it was built for — so we rebuilt it around what a parent opens their phone to find out.
The app wasn’t broken. It was thin.
Between June and August 2023, monthly active users fell from 23k to 17k and time in the app dropped from nearly ten minutes to under six. Fourteen negative reviews landed on the Play Store in two months. Nothing had broken — people simply stopped finding a reason to open it.
The web dashboard held the full picture of a child’s course. The app held a fragment of it. Every real task — moving a class, checking whether the last one happened, seeing if a quiz was done — ended somewhere that wasn’t the app. A parent opened it, learned nothing new, and left.
It was called the Learner App and it was designed like a student’s classroom. The people actually holding the phone were parents checking in between other things — and they weren’t there to learn. They were there to verify.
A learner app used almost entirely by adults.
Support call logs told us the account holder was almost always the one on the phone. That changed what the app owed them: not encouragement, not classroom energy — evidence. Two primary parents drove the structure; two edge cases decided its limits.
Nine weeks, and a line drawn early about what the release would not do.
The student dashboard was still evolving underneath us, so the release had to be scoped to survive that. Deciding what to leave out took as long as deciding what to build.
Four rules that settled most of the arguments.
With five sections, nine pop-ups and more than thirty edge cases in scope, the useful thing wasn’t more opinions — it was a small set of rules everyone could apply without me in the room.
What shipped
Fourteen moments, and the decision inside each one.
The screens are the easy part to show. What matters is why each one is shaped the way it is — and what happens when it goes wrong.
The next six upcoming classes in ascending order, each with its lesson image, course tag, teacher, class number, topic, date, time and timezone. Nothing above them but the greeting and the profile control.
The smallest rule in the product decided the most screens.
A class can’t be moved or cancelled inside two hours of its start. One sentence in the brief — and every class card, every empty state and half the messaging in the app had to account for it.
// Class card — which actions the parent gets, and why startsIn > 2h → reschedule ✓ cancel ✓ startsIn ≤ 2h → both disabled, reason shown inline instalmentPending → upcoming locked · history stays open classesRemaining = 0 → upcoming list becomes the upgrade route status = incomplete → labelled incomplete, never counted as done // disabled, not hidden — a rule you can't see is a rule you // learn by being refused
And the messages that carry it
Nine pop-ups shipped with the release. Each one had to survive being read in four seconds, at a school gate, by someone who didn’t ask for it.
What we said we’d move, what moved, and what I’d change next time.
A parent doesn’t open an app to be delighted. They open it to find out whether something they paid for actually happened. Design that well and the rest of the product gets a chance.