Brian Gita / Work / NextChapter

Hackathon MVP · Team project · Fictional data

NextChapter

Lessons over USSD and voice for learners whose schooling is interrupted, and a way back to school, on a basic phone and without giving up their privacy.

Role
Top contributor
My commits
125 of 240
Channels
USSD, voice, SMS
Tests (team)
384

The problem

Pregnancy and early motherhood can cut a girl's schooling short in Uganda. Learners in this position may share a phone, have no data, carry heavy responsibilities and face stigma. When they try to return, schools need evidence of what they've learned, but not the reason they left.

Adolescent mothers are the first group. The same platform is designed to extend to learners kept out of school by money, caregiving, illness or displacement, once each group has been researched separately.

How it works

One learning engine is shared by every learner, with optional support pathways on top. Learners can study without ever saying why they left school.

  1. A staff member registers the learner under a pseudonym. Records hold no name, contact details, pregnancy or reason for leaving school.
  2. The learner dials a USSD code or calls in, and signs in with a 12-digit learner number and a secret.
  3. Five-minute lessons adapt as they go. A right answer moves the learner up a level; a wrong one gives a hint and a similar question. Progress survives a dropped session.
  4. Return-to-school checklists guide the way back, and the learner can ask a support partner to call them.
  5. The learner previews a report and chooses to share it with one school for 30 days.

What I built

The team's design notes give me ownership of the channel and adaptive logic. My 125 commits cover:

AreaWhat I did
Phone channelsThe USSD and keypad voice lesson channels on Africa's Talking. Inbound callbacks are validated and duplicates are dropped. A terminal simulator lets the team rehearse a call without a phone.
Adaptive engineThe rule-based next-step engine, with question difficulty and a hint after each wrong answer.
Reports and sharingThe academic report and learner-controlled sharing, including the educator report API. Wrong share-code attempts are limited per learner and overall.
Support pathwaysReviewed return-to-school guidance, partner callback requests, consent-aware SMS reminders with opt-out, and capped airtime rewards that reject duplicate claims.
Educator dashboardReact sign-in, shared reports, share codes and callback requests. Staff see only the pages their role allows.
Access safeguardsThe two-person rule, logging of refused staff attempts, learner handover between operators, and the monthly access review page.

Privacy and safeguarding

For learners in this position, a leaked record can do real harm. So the controls are designed in, not added later:

RiskControl
Exposing why someone left schoolNothing in a learner's record says why. The school report holds lessons, scores and practice topics only, never the support pathway.
Oversharing with schoolsOne school at a time, for 30 days, using a one-time code from an educator. The learner can stop sharing at any time.
One staff member acting aloneA second staff member must open a verification case before a learner's access is issued or recovered. The case expires after a day and works once.
Misuse going unnoticedRefused staff attempts are recorded, and a monthly review lists every access event and whether a valid second-person case backed it.
Guessing secretsSecrets are stored hashed, and failed sign-ins are limited per learner number and across the whole system.
Revealing textsSMS reminders use neutral wording, need consent and can be turned off from the phone menu.

What it isn't yet

This is a hackathon MVP running on fictional learners. SMS and airtime are simulated, and Africa's Talking runs in its sandbox. Real learners can't be enrolled until identity proofing, consent, data retention and abuse controls pass a safeguarding review, and the release hold needs a reviewed code change, not a settings switch. The project states this openly rather than claiming pilot results it doesn't have.

Engineering

A modular Django monolith on PostgreSQL. Telecom adapters translate Africa's Talking callbacks into calls on a shared learning engine, so USSD and voice behave the same. The React dashboard is served from the same origin as the API. GitHub Actions runs backend checks, PostgreSQL integration tests and the frontend build on every change, and the demo ships as one Docker image on Render.

The team wrote 352 backend and 32 frontend tests.