Learning Management Platform for a Vocational Training Provider
A vocational training provider serving 4,000+ enrolled learners replaced a third-party LMS with a custom platform built for their specific curriculum model — reducing per-learner cost and giving instructors direct control over content and assessment.
4,000+
Learners migrated
Full cohort on new platform
95% reduction
Content update time
3 days → under 1 hour
Eliminated
LMS licensing cost
Full per-learner cost removed
The challenge
The provider's existing LMS charged per-learner licensing fees that made margin-positive cohort sizes economically difficult. More critically, the platform couldn't support their competency-based assessment model, forcing instructors to maintain parallel paper-based records.
Objectives
- Eliminate per-learner LMS licensing cost
- Support competency-based assessment natively
- Give instructors self-service content management without engineering support
- Maintain learner progress history across cohorts
Discovery
We embedded with three instructors for a week to understand the actual learning flow — not the idealised version in the requirements document. The paper-based competency tracking process revealed 14 distinct assessment states that the existing LMS couldn't model. These became the core of the new platform's data model.
Strategy
Build a purpose-built LMS around the competency-based model rather than replicating the feature set of the commercial platform. Scope aggressively — the goal was to replace the critical workflow, not build a feature-complete LMS from scratch.
How we approached it
We built a Next.js learner portal with a headless content management system for instructors, a competency tracking engine supporting the provider's 14 assessment states, cohort management, and progress dashboards for both learners and instructors. Integrations with the provider's payment system handled enrolment.
Architecture
Next.js frontend with server-side rendering for learner portal pages. PostgreSQL database with a purpose-built competency tracking schema. Sanity CMS for instructor content authoring. REST API layer in Node.js. Role-based access control with three permission levels: learner, instructor, and administrator.
Implementation
Built in three phases: (1) learner authentication, content delivery, and basic progress tracking, (2) competency assessment engine and instructor dashboard, (3) cohort management, reporting, and payment integration. Each phase was deployed to production and used by a pilot cohort before the next phase began.
Key decisions
Build a full LMS vs. a focused replacement for the critical workflow — a full LMS would have taken 18+ months and likely exceeded the scope the client could fund.
We scoped to the workflows that cost the client money and created the most instructor friction. Video hosting, social features, and gamification were explicitly deferred.
What changed
The platform launched on schedule and was adopted by the full learner cohort within 6 weeks. Instructor content update time dropped from 3 days (via the LMS vendor) to under an hour. Competency assessment accuracy improved with digital record-keeping.
Impact
Per-learner cost reduced by eliminating third-party LMS licensing. Instructors could update course content and assessments without filing a support ticket. The competency tracking workflow that previously lived in spreadsheets became auditable and reportable.
Lessons learned
- 1Embedding with instructors before designing the data model was the single most important decision — the 14 assessment states would not have emerged from a requirements workshop.
- 2Phased delivery to a pilot cohort caught UX issues before they affected 4,000+ learners.