Course completion rose after launch, and publishing a course stopped being an afternoon's work.
A learning platform built around how their courses actually run, replacing a generic LMS that fought them on both.
- Fixed scope · 8 weeks
- 2024
- Education
- Web platform

The situation
The client was running on an off-the-shelf LMS that matched neither their brand nor the way they teach. Their courses have a specific shape; the platform had a different one, and every course had to be bent to fit it.
Two costs followed. Learners dropped out partway through long lessons that were hard to read on the screen they were reading them on. And publishing a course meant an afternoon of fighting an admin interface that assumed a different structure.
What we built
A platform designed around their course structure rather than a generic one: lesson flow, progress tracking, and an admin side built for the way their team actually publishes.
Long-form reading got specific attention — measure, line height, and pacing on a phone — because that is what learners spend their time doing.

What we deliberately left out
No certificates or accreditation in v1. Wanted, but not on the path to the two problems that were actually costing money.
No native mobile app. The web platform was built to read well on a phone, which covered the need without a second codebase and a second release process.
No migration of retired courses. Live courses moved. Archived ones stayed archived.
The result
Completion rates rose after launch, and the admin team cut the time it takes to publish a course substantially — the interface now matches the way they were already working rather than the way the old tool assumed.
Built with
- Next.js
- TypeScript
- PostgreSQL
- Tailwind CSS
Have something like this?
Tell me what the problem is on a 30-minute call. If it's a fit, discovery starts with a written scope and a fixed number — not an estimate that moves.