Exam registration was the highest-pressure moment in the academic calendar: thousands of students, narrow time windows, and zero tolerance for failure.
Manual eligibility checks, ad-hoc payment confirmations, and scattered communication created last-minute crises every cycle and put graduation timelines at risk.
- Move 100% of exam registration to self-serve
- Automate eligibility, payment, and seat allocation
- Give the registrar a real-time operations dashboard
- Deliver an exam cycle without manual escalations
Mapped the existing cycle end-to-end, including all manual escalations. Interviewed students from prior cycles to understand where they got stuck.
Modeled registration as a state machine: eligibility → payment → confirmation → seat. Each transition had clear rules, retries, and operator overrides.
- Defined the state machine and wrote the PRD with engineering
- Designed the student registration flow and confirmation experience
- Built the registrar operations dashboard
- Ran two full operational dry-runs before going live
Designing for failure: payments, network drops, and eligibility edge cases all had to recover gracefully without operator intervention.
Subsequent exam cycles ran fully self-serve with zero failed cycles and a meaningful reduction in registrar workload during peak weeks.
- High-stakes flows deserve state machines, not happy-path UIs
- Dry-runs catch operational bugs that QA cannot
- Self-serve is a trust contract — every error message is part of the product