Embedded training API
Underlayer
Training a SaaS product embeds inside itself — an API, an iframe, and a white-label player — instead of sending its users to somebody else's LMS.
- content block types
- 39
- learner accounts to create
- 0
- SCORM versions exported
- 2
The problem
SaaS products that need to teach their users usually bolt on an LMS: a separate portal, a second login, seat licences, and a look that has nothing to do with the product. Users drop off at the sign-up screen, and the product team learns nothing about who finished what.
The design
Underlayer has no learner accounts at all. The host product passes the id it already has for that person on the iframe URL, and progress, answers and completions are tied to that id — no sign-up, no invitation email, no second password.
Courses are built from 39 block types — six question types, flashcards, drag-to-match, hotspot images, timelines, branching scenarios, code, polls and reflections — each with its own style panel. One Zod schema is the single source of truth for both the REST API and the builder, so a course created over the API and one built by hand are the same object.
A theme is four colours by job, two fonts, a corner radius and a density, applied to every block and every state in light and dark. Right-to-left is handled properly: Arabic and Hebrew mirror the whole layout, including the progress spine, arrows and drag direction.
Generation that writes what authors write
A course can be generated from a document, a URL or a prompt. The generation schema exposes the same fields a human author edits — a timeline card's date, a fill-in-the-blank's accepted answers — so a generated course is never quietly poorer than a hand-built one. It is treated as a first draft, not a publish button.
Getting results out
Completions, certificates and screen views leave as signed webhooks and through a REST API. For customers who won't leave their existing LMS, courses export as SCORM 1.2 or 2004 packages that still report back. Courses export as JSON and learner records as CSV on every plan, including the free sandbox.
Billing is per course view rather than per seat, with published prices — the category norm is to make buyers book a call to hear a number.
