Learning Management (LMS)
Module code LMS · Release R4 · Packaging Add-on · Requirements FR-LMS-*, BR-LMS-* in the PRD and BRD
1. Overview and scope
LMS is deliberately narrow. The SME need is mandatory and compliance training (POSH, safety, induction, code of conduct, product training for field staff) assigned automatically, with due dates, completion tracking and certificates. Gamification is secondary.
In scope (R4): courses with modules and lessons (video, PDF, text, link); SCORM 1.2 import; assessments (multiple choice) with pass marks and attempts; enrolment rules (on join, by location, department, designation) and manual assignment; due dates with reminders and escalation; certificates with verifiable IDs; points and badges; instructor role; reports; link to the EMP onboarding checklist ("complete POSH course" as a task).
Out of scope: live classes and virtual classroom, content authoring beyond basics, xAPI LRS, paid course marketplace.
2. Learned from the reference product
Source: Spryple analysis, §12 and §21.10.
- [Observed] An instructor Course Builder: title, tags, description, difficulty, category, prerequisites, image; content as Module → Section → Content; review and submit (I: LMS).
- [Observed] Dashboards with courses overview, leaderboard, progress, badges by category and recommended courses; reports of enrolled, completed, badges, points and certificates (I/A/M: LMS).
- [Observed] Employees use a Course Library, assessments, "Learning Sphere", My Badges and My Certificates (E: LMS).
- [Observed] Certificates show name, course, date, tenant name, instructor signature and an ID such as
CERT250811174612SELE10, with no score (§21.10).
- [Inferred] No mandatory assignment, due dates, compliance focus or SCORM import are documented; documentation is thin (§12).
3. Our design decisions
| ID | Decision [Proposed] | Reason |
|---|
| D-LMS-01 | Compliance first: enrolment rules with due dates and escalation are the core feature. | That is what SMEs must prove. |
| D-LMS-02 | SCORM 1.2 import instead of a rich builder; a simple builder for basic lessons. | Buy content, don't author it. |
| D-LMS-03 | Certificates have a verification URL and include score and completion date. | Audit and authenticity. |
| D-LMS-04 | Recurring courses (e.g. annual POSH refresher) re-enrol automatically. | Compliance is periodic. |
4. Domain model
5. State machines
6. Key business logic
on emp.employee.joined or emp.job.changed or nightly:
for rule in active assignment rules:
if employee matches rule.applicability and no open or valid completed enrollment:
enrol(employee, rule.course, due = today + rule.due_days, source = RULE)
on lesson completed: update progress ; if all lessons done and no assessment: complete
on attempt: score = correct / total ; passed = score >= pass_percent
if passed: complete, issue certificate (no = CERT + tenant code + sequence), award points
elif attempts == max_attempts: Failed ; notify HR
overdue sweep daily: notify employee ; after N days escalate to line manager
7. Configuration
| Setting | Type | Default | Description |
|---|
enrolment.default_due_days | integer | 30 | Due date for rule-based enrolments |
enrolment.escalate_after_days | integer | 7 | Overdue days before manager escalation |
assessment.default_pass_percent | integer | 70 | Pass mark |
assessment.default_max_attempts | integer | 3 | Attempts |
certificate.template | string | default | Certificate layout |
gamification.enabled | boolean | true | Points and badges |
scorm.max_package_mb | integer | 200 | Upload limit |
8. Screens by persona
| Persona | Web | Mobile |
|---|
| Employee | My learning (assigned, due, overdue), course player, assessments, certificates, badges | Course player for video and PDF, certificates |
| Instructor | Course builder, SCORM upload, assessments, learner reports | — |
| Line manager | Team compliance status | Team status |
| HR manager | Assignment rules, compliance dashboard, overdue escalations | — |
9. Events
| Event | Consumers |
|---|
lms.enrollment.assigned | NTF |
lms.enrollment.overdue | NTF (employee, then manager) |
lms.course.completed | EMP (checklist task completion), ENG (optional shout-out) |
lms.certificate.issued | NTF |
Consumed: emp.employee.joined, emp.job.changed, ext.lwd.reached (close enrolments).
10. API surface
| Resource | Main operations |
|---|
/v1/lms/courses and nested modules, lessons | CRUD, POST /scorm-import |
/v1/lms/assessments | CRUD, POST /:id/attempts |
/v1/lms/assignment-rules | CRUD |
/v1/lms/enrollments | GET mine and team, POST manual assignment |
/v1/lms/certificates/:no/verify | Public verification |
Detailed in API endpoints.
11. Permissions
| Permission | Scopes | Default roles |
|---|
lms.course.manage | own courses, ORG | instructor, hr_manager |
lms.rule.manage | ORG | hr_manager |
lms.enrollment.assign | TEAM, ORG | line_manager, hr_manager |
lms.enrollment.read | SELF, TEAM, ORG | employee, line_manager, hr_manager |
lms.report.export | own courses, ORG | instructor, hr_manager |
12. Reports
| Report | Contents | Reference |
|---|
| Enrolment and completion | By course, department, status | [Observed] I: LMS |
| Compliance status | Mandatory courses due, overdue, completed | [Proposed] |
| Certificates issued | With verification IDs | [Observed] §21.10 |
| Badges and points leaderboard | By employee | [Observed] I: LMS |
| Assessment results | Scores and attempts | [Proposed] |
13. Release and priority
| Capability | Release | MoSCoW |
|---|
| Courses, lessons, SCORM import, assessments | R4 | Must (if LMS ships) |
| Assignment rules with due dates and escalation | R4 | Must |
| Certificates with verification | R4 | Should |
| Recurring courses | R4 | Should |
| Badges, points, leaderboards | R4 | Could |
| Rich course builder | R4+ | Won't (this release) |
14. Open questions
- Do we partner for compliance content (POSH, safety) rather than build it? Likely yes.
- Is a POSH-only "compliance pack" worth shipping earlier (R2) as part of EMP checklists? To be decided with sales feedback.