Curriculum
Scheduled Sep 17, 2026Training delivered and evidenced, without per-learner fees.
Replaces
- Docebo · Docebo Inc. — no published list price
- Cornerstone OnDemand · Cornerstone OnDemand, Inc. — no published list price
Rented, per year
Not published
These vendors quote privately. We use your contract, not a guess.
Owned, per year
$7,320
AWS infrastructure only. Azure is $7,860.
Build
11 weeks
2 engineers. To parity on the ten core features above, including SCORM conformance testing, migration of existing course packages, historical completion records and live certification holdings with expiry dates preserved.
Difficulty
3/5
Well-understood shape. Low delivery risk.
Reference organisation: 9,000 learners, 600 courses, 1.2 TB of video, ~120,000 enrolments/year, single region, prod + non-prod. 3-year Compute Savings Plan on Fargate, 3-year reservation on Container Apps and PostgreSQL Flexible Server. Includes video transcoding at roughly 40 hours of new source material a year and CDN egress for 9,000 learners completing mandatory training annually. Excludes licensed course content, vendor support plans and LLM gateway token spend. Figures are infrastructure only and exclude the build.
What it is
Curriculum is a learning management system built around the part that actually matters to a regulated business: assigning mandatory training, proving it was completed, and producing evidence when a regulator asks. It handles course delivery including SCORM and xAPI packages, learning paths, certifications with expiry and recertification, instructor-led sessions, and completion reporting down to the individual. It is for organisations of 2,000 to 30,000 employees paying per active learner for what is, in practice, a content player, an assignment engine and an audit trail.
Why this one stops making sense
- Neither Docebo nor Cornerstone publishes a price, and Docebo's active-user model means an annual compliance push that touches every employee converts your whole headcount into billable learners.
- Most enterprise LMS spend buys compliance assignment and evidence, not learning experience. Those are the three simplest parts of the product and the ones you cannot afford to have fail.
- Completion evidence is a regulatory artefact. Retrieving it from a vendor under time pressure, in a format an examiner accepts, is a bad position to be in.
- Content and platform are separable. Your content library is licensed from publishers and portable as SCORM; the platform around it is not the expensive part to build.
- Learning records join naturally to the HRIS, the access-review evidence and the incident record. Kept in a vendor tenant, they join to nothing.
What ships
- SCORM 1.2, SCORM 2004 and xAPI course delivery with a conformant runtime and resumable bookmarking
- Learning paths with prerequisites, sequencing and conditional release
- Rule-based mandatory assignment from HRIS attributes: role, location, licence held, system access granted
- Certifications with validity periods, expiry warnings and automatic recertification assignment
- Instructor-led and virtual sessions with capacity, waitlists, attendance capture and calendar integration
- Assessments with question banks, randomisation, pass marks and configurable retake limits
- Completion evidence pack: who completed what, when, with what score, exportable and tamper-evident
- Manager and compliance dashboards showing outstanding mandatory training by team and by deadline
- Video hosting with adaptive bitrate delivery, captions and transcript search
- Learner catalogue with self-enrolment, search and role-appropriate recommendations
Data model
Stack
- frontend
- Next.js 15 App Router + Tailwind for the platform; the SCORM player is a separate minimal bundle served from an isolated origin
- backend
- NestJS on Node 22 — REST, an xAPI Learning Record Store endpoint, and an assignment engine
- database
- PostgreSQL 16 with Row Level Security, hash-chained completion records and partitioned attempt tables
- cache
- Redis 7 for catalogue rendering, assignment evaluation and player session state
- queue
- BullMQ for assignment runs, expiry sweeps, reminder cadence and video transcoding jobs
- auth
- OIDC against the customer IdP; the SCORM player origin receives a short-lived scoped token, never a session cookie
- search
- PostgreSQL tsvector across courses, descriptions and video transcripts
- ai
- Optional transcript generation, course summarisation and assessment-question drafting through an LLM gateway, reviewed before publication
Parity, honestly
What we match, and what we do not.
The rows marked No are the important ones. If one of them is the reason you bought Docebo, keep buying it — and we will tell you that on the first call rather than the fifth month.
| Capability | Docebo | Ours | Note |
|---|---|---|---|
| SCORM 1.2 / 2004 and xAPI delivery | Yes | Yes | Tested against the ADL conformance test suite as part of the build. |
| Learning paths with prerequisites | Yes | Yes | — |
| Rule-based mandatory assignment from HRIS data | Yes | Yes | Assignment rules can reference Tenure's entitlement data, so granting production access can require the training first. |
| Certification expiry and automatic recertification | Yes | Yes | — |
| Instructor-led sessions with waitlists and attendance | Yes | Yes | — |
| Assessments with question banks and randomisation | Yes | Yes | — |
| Tamper-evident completion evidence for regulators | Partial | Yes | Completion records are hash-chained and exportable with the chain, which is a stronger artefact than a PDF report. |
| Off-the-shelf compliance content library | Yes | No | Cornerstone and Docebo bundle or resell thousands of courses — anti-bribery, GDPR, health and safety, sector-specific regulatory content — refreshed as law changes, in dozens of languages. Curriculum plays content; it does not author or license it. You keep buying content from a publisher, and that is the correct place to spend the money. |
| Vendor-run SOC 2 Type II attestation and accessibility VPAT | Yes | No | Curriculum inherits your own compliance posture. We build to WCAG 2.2 AA and test it, but there is no third-party VPAT with a vendor's name on it, and public-sector procurement often requires exactly that document. |
| Skills taxonomy and AI-driven career pathing | Yes | Partial | Curriculum holds a skills model and maps courses to it. It does not ship a pre-built taxonomy of 50,000 skills or an inference engine trained across customers. |
| Extended enterprise: selling training to customers and partners | Yes | Partial | External learner accounts and separate branded catalogues work. Commerce, entitlements and revenue recognition do not. |
| Per-active-learner billing | Yes | No | Curriculum has no learner metric. An organisation-wide compliance campaign costs the same as a pilot. |
| Mobile and offline course consumption | Yes | Partial | The PWA supports mobile playback and resume. Full offline SCORM download with deferred tracking is out of scope. |
Reference architecture
Built twice, on purpose.
Every application in Techtons ships with a production architecture for AWS and one for Azure, using the same diagram grammar so you can read them side by side. Your cloud, your account, your bill.
Amazon Web Services
- Compute
- ECS Fargate services (api, lrs, worker) behind an ALB, plus MediaConvert jobs for video
- Data
- Aurora PostgreSQL, ElastiCache Redis
- Storage and edge
- S3 for course packages and video, CloudFront with signed cookies for delivery, S3 Object Lock on completion evidence archives
- Identity
- Cognito federated to the customer IdP
- Observability
- OpenTelemetry to CloudWatch and X-Ray, with player error rate per package tracked as a metric
- Infrastructure as code
- Terraform, one module per environment, remote state in S3 with a DynamoDB lock
Services
The decision worth arguing about
The non-obvious decision is serving SCORM packages from a completely separate origin — a different domain, not just a different path — behind CloudFront with signed cookies. SCORM content is arbitrary third-party JavaScript, often authored a decade ago in Flash-era tooling and mechanically converted, and the SCORM API contract requires the package to reach a JavaScript object on the parent window. Same-origin hosting means every legacy course you have ever licensed runs with full access to your LMS session, its cookies and its DOM. Curriculum hosts packages on a content domain with no cookies of its own and bridges the SCORM API over postMessage with a strict origin check and a schema on every call, so a package can report completion and nothing else. The trade is that a minority of older packages break: some call into the parent using patterns the bridge does not permit, and a handful of authoring tools generate code that walks the window hierarchy looking for the API object rather than using the documented discovery sequence. Roughly one package in twenty from a 2010-era estate needs a shim, and we would still rather fix twenty packages than host untrusted JavaScript on the origin holding regulatory evidence.
Microsoft Azure
- Compute
- Azure Container Apps (api, lrs, worker) plus a Container Apps job running ffmpeg for video transcoding
- Data
- Azure Database for PostgreSQL Flexible Server, Azure Cache for Redis
- Storage and edge
- Blob Storage for packages and video, Front Door for delivery with token authentication, immutable blob policy on evidence archives
- Identity
- Microsoft Entra ID
- Observability
- Azure Monitor with Application Insights
- Infrastructure as code
- Bicep in an azd-compatible layout
Services
The decision worth arguing about
Azure has no managed equivalent to MediaConvert since Azure Media Services was retired on 30 June 2024, which is the single biggest structural difference between the two deployments and one most architecture diagrams still get wrong. Curriculum therefore runs its own transcoding: a Container Apps job with ffmpeg, scaled on Service Bus queue depth, producing an HLS ladder we define ourselves. This is more work and more responsibility — we own the encoding ladder, the codec choices, the captions muxing and the ffmpeg CVE stream — and it is also cheaper and more predictable than MediaConvert's per-minute pricing at any meaningful volume, roughly $0.04 per source minute against $0.017 per output minute per rendition, which crosses over around three renditions. The genuine trade is cold start: a Container Apps job pulling a 900 MB ffmpeg image takes about 90 seconds before the first frame is encoded, so a training team uploading twelve videos on a Friday afternoon waits noticeably longer than they would on AWS. We keep one warm replica during business hours, which costs about $18 a month and removes the complaint.
Sources
Every price on this page, with the page we read it from and the date we read it.
| Product | Plan | List price | Checked | Source |
|---|---|---|---|---|
| Docebo | Elevate | Not published | 2026-09-05 | www.docebo.com/pricing/ Docebo publishes no dollar figures; it names two tiers, Elevate and Enterprise, states that pricing is custom and scales with active users under an MAU, YAU or RAU model, and suggests a fit at 250+ learners. |
| Cornerstone OnDemand | Cornerstone Learning | Not published | 2026-09-05 | www.cornerstoneondemand.com/pricing/ Cornerstone publishes no list price or named tiers; its pricing page states only that cost depends on needs and size and asks buyers to book a demo for an estimate. |
Should you still be paying for Docebo?
Two weeks, fixed price. We audit what you actually use, map it against Curriculum, cost the replacement on your own AWS or Azure account, and give you a delivery plan. If the honest answer is to keep the licence, that is what the report will say.