How a Training Provider Went From Hand-Building Courses to Shipping Them on a Script
By Theodora Christou · Co-Founder, Dabster Labs · Client engagement, anonymised at the client’s preference
The situation
A Cyprus compliance-training provider builds its courses in Articulate Rise, then has to get each one into Moodle: upload every lesson, wire up the completion rules so students unlock modules in order, style each section so it does not look like a raw file dump, add a cover banner, record an intro video. Done by hand, a single course is an afternoon of clicking, and every new course is that same afternoon again. Small mistakes, a lesson that unlocks too early, a heading copied from the wrong course, slip through and only surface once a student hits them.
What we built
An engine that turns a finished Rise course into a polished, completion-gated Moodle course from the command line. It pulls the published lesson packages straight from the inbox, uploads each one into the right module, applies the same set of styled section cards and “what you’ll learn” and “module recap” panels across every course, and enforces the rule that each lesson only opens once the previous one is complete. It renders a correctly sized cover banner and can produce a narrated, captioned intro video. Everything runs as a dry preview by default and only touches the live site when you explicitly tell it to.
What changed
- Seven courses live and styled, from one engine. The catalogue (anti-money-laundering, due diligence and crypto-compliance training) now shares one consistent, professional look instead of seven hand-built variations.
- A new course is a repeatable run, not a rebuild. Adding the next course means editing one config block and running the scripts, not re-clicking an afternoon of Moodle forms.
- Consistency is enforced, not remembered. Section styling, completion gating and lesson order all come from code, so every course gets them the same way, and re-running only updates in place rather than duplicating.
- The dangerous mistakes are designed out. Guardrails refuse to act when something looks wrong, for example a safety cap that stops a mis-targeted script from reordering every lesson in a course, a failure that had bitten once and now cannot.
How it works
Node and Playwright drive Moodle through its own interface and web services; the lesson content arrives as standard SCORM packages fetched over email; text-to-speech and video tooling produce the intro films. Because Moodle offers no clean interface for most of this, the real work was reliability, handling the editor quirks, the aggressive caching, and the selector traps that make browser automation fragile, so that one command produces the same correct result every time.
Where it stands
In production, powering a live catalogue of seven courses, with the process for adding the next one already written down and repeatable. The client publishes in the tool they know, and the styled, gated, on-brand Moodle course comes out the other end.
If you run training and every new course is a manual rebuild, most of that work can be automated. Book a free audit and we will show you which parts.
Related service: Workflow Automation