perfectdesign.

Business systems

Learning management system development

A learning platform is judged on two things: whether learners can find and finish the course, and whether the completion record can still be trusted a year later.

In short

A learning management system holds courses, the people enrolled on them, what each learner has done and what that means. The decisions that shape the build are structural rather than visual: how content is versioned when a course changes mid-cohort, what counts as completion, how much assessment integrity you genuinely need, and where enrolment comes from when courses are sold, assigned or claimed through a scheme. Agree those and the screens are the straightforward part.

Written for a training provider, or an operations lead responsible for staff or customer learning · 6 min read

Decide from the learning workflow, not a feature list

Every learning platform demonstrates well. They all show a course page, a progress bar and a certificate, so comparing feature lists tells you almost nothing about which one survives your actual process. The useful test is to take one real course and walk it end to end: how it is published, how somebody comes to be enrolled, what they do, how completion is decided, and what happens when the content changes next quarter.

Run that walk-through and the route usually decides itself. If an existing platform handles the workflow, your permissions and your records, configuring it is the cheapest honest answer and we will say so. If it covers the learning but cannot reach the system that holds your customers or your payments, the gap is an integration. Building is justified when the enrolment rules, the completion rules or the reporting are genuinely yours, or when the course catalogue is a commercial asset that has to work like a shop rather than a folder of links.

Everyone has a phone. Not everyone has a computer. A process that assumes a customer can sit at a computer, open an attachment and print a form excludes a fifth of the country. A phone number reaches practically everyone. A full text version follows.

Everyone has a phone. Not everyone has a computer

Published statistic. A process that assumes a customer can sit at a computer, open an attachment and print a form excludes a fifth of the country. A phone number reaches practically everyone.

Source: Department of Statistics Malaysia: ICT Use and Access by Individuals and Households, 2024. Reviewed .

Read the graphic as text
  • Mobile phone: 99.5%.
  • Internet: 98.0%.
  • Computer: 80.7%. One in five without

Chart scale: Malaysians aged 15 and above using each, 2024.

Download this infographic (SVG)

Structuring courses so they stay maintainable

A course is not a folder of videos. It is a structure with parts that are referenced from elsewhere: modules and lessons, assets that may be reused, prerequisites, an assessment, and a definition of what finishing means. Model that properly and a course can be edited, translated, retired or cloned without anyone rebuilding it. Model it loosely and every change becomes a careful manual operation nobody wants to perform.

The part that catches people is versioning. Courses change while people are part way through them, and the system has to answer what happens next. Does a learner continue on the version they started, or move to the new one? Does a completed record refer to the course as it was on the day it was completed? If somebody failed an assessment that has since been rewritten, what were they actually assessed against? Progress and completion should reference a course version, not just a course, because that is the record you will be asked to defend later.

Finding the right course matters as much as holding it. A catalogue of a few dozen courses can be a list. Once it runs to hundreds, with categories, formats, durations, venues or schedules attached, it needs real filtering and search that matches how buyers actually narrow down, including by course code. Catalogue and search systems covers that layer, and it is usually where a training business wins or loses an enquiry.

When a course changes mid cohort. Progress and completion reference a course version, because that is the record you defend later. A full text version follows.

When a course changes mid cohort

Editorial framework. Progress and completion reference a course version, because that is the record you defend later.

Basis: Perfect Design: business systems explained. Reviewed .

Read the graphic as text
  • Already enrolled. Continues on the version they started
  • New enrolments. Begin on the version published today
  • Completed record. Names the version it was earned against
  • Failed attempt. Judged against the wording of that version
Download this infographic (SVG)

Enrolment: where learners come from

Enrolment is the seam between the commercial side and the learning side, and it is worth scoping separately from both. Learners arrive by several routes at once: an individual buying a place, an administrator assigning a course to staff, a company booking seats in bulk, a scheme or employer subsidy that requires its own paperwork, or a waiting list for a dated session. Each route needs a rule for when the entitlement actually starts and what it covers.

That entitlement is the thing to hold, rather than a flag on an account. It has a start, an end where one applies, a course version and a source. When money is involved, payment and checkout owns the transaction and the failure paths around it; enrolment reads the confirmed result rather than guessing from the fact that somebody reached a thank-you page. Where enquiries and bookings also have to reach a sales system, CRM and integrations covers that connection and what has to be confirmed before anyone promises it exists.

Corporate and scheme-supported enrolment is where a Malaysian training provider usually feels the difference. A company booking seats wants one invoice, a named contact who is not a learner, and a view of who attended. A buyer claiming against an employer training scheme needs to know whether a specific programme qualifies before enquiring, and that answer belongs in the catalogue as course data rather than in a paragraph on a landing page. The scheme's own rules and evidence requirements are yours to confirm with the administering body; what the system does is carry the flag, collect the paperwork the enrolment needs, and keep the attendance record the claim will rest on.

Your client may already be paying for training. Charged on basic salary plus fixed allowances, every month, and claimable back against approved training. A training platform’s business case often starts with money the employer is already paying. Only HRD Corp decides whether an employer is liable, so confirm it with them. A full text version follows.

Your client may already be paying for training

Published statistic. Charged on basic salary plus fixed allowances, every month, and claimable back against approved training. A training platform’s business case often starts with money the employer is already paying. Only HRD Corp decides whether an employer is liable, so confirm it with them.

Source: Laws of Malaysia: Human Resources Development Act 2001, sections 14 and 15. Reviewed .

Also: HRD Corp support centre: levy calculation.

Also: HRD Corp employers FAQ, archived 7 December 2024.

Read the graphic as text
  • 10 or more Malaysian staff: 1%. Registration with HRD Corp is mandatory, and the levy is 1% of monthly wages
  • 5 to 9 Malaysian staff: 0.5%. Registration is optional. Employers who register pay half the rate
  • Fewer than 5: None. Outside the scheme
Download this infographic (SVG)

A worked course workflow

The table below walks a fictional non-accredited staff course with a single exercise, to show how this kind of scope is written. The actors, rules and responses are assumptions used for illustration, and the last column describes evidence to collect at acceptance rather than tests anybody has passed.

Illustrative workflow for a fictional non-accredited staff course
Workflow stepAssumed actorProposed system responseExceptionAcceptance evidence to collect
Enrol a learnerTraining administratorAllocate the course entitlement permitted by the assumed policyA learner without approval must not reach restricted materialEnrolment records and the access checks to run against them
Submit an exerciseLearnerSave the attempt according to the selected assessment ruleAn interrupted submission is either recoverable or visibly unresolved, never silently lostAttempt identity, timestamps and retry observations
Record completionTraining ownerApply the agreed criteria against the applicable course versionChanged course content or a missing attempt triggers review rather than an automatic passVersioned progress and the resulting decision record

Written this way, a scope becomes reviewable by the people who will live with it. Each row names who acts, what the system does, what happens when it goes wrong, and how you would satisfy yourself that it works. It is also the form we use to agree acceptance, because a launch date is not evidence that a workflow behaves.

Progress, assessment and what completion means

Progress is a record per learner, per course version, not a percentage on a screen. Learners switch devices, lose connections mid-video and come back three weeks later, so the server stays authoritative about what has been done and the interface reflects it. Attempts at an assessment are their own records too: who submitted, when, against which version, and what was returned. Keeping attempts rather than overwriting a score is what makes a later query answerable.

Assessment integrity deserves an honest conversation rather than a feature list. Question pools, time limits, restricted retakes, randomised order and an identity check at submission all raise the cost of casual cheating, and each adds build and support cost of its own. What no platform can do is see who is holding the phone. Decide how much integrity the programme genuinely needs, because a corporate refresher and a qualification that gates someone's job do not need the same controls.

Attempt, completion and accreditation. A certificate states what your completion rule states, and nothing beyond it. A full text version follows.

Attempt, completion and accreditation

Editorial framework. A certificate states what your completion rule states, and nothing beyond it.

Basis: IBM: What are digital credentials?. Reviewed .

Read the graphic as text
  • An attempt. Who submitted, when, and against which version
  • Completion. Your own criteria applied to those attempts
  • Accreditation. Granted by an awarding body, never by software
Download this infographic (SVG)

Roles, access and the administration side

Three ideas get confused here and are worth separating: authentication is who somebody is, permission is what their role lets them do, and entitlement is which courses they may reach. A trainer can author without seeing finance. A reporting viewer can read completion without editing content. A learner's access to one course says nothing about another. Accounts and portals covers the sign-in layer these sit on.

Access changes need a trigger and a record, particularly removal: an entitlement that expires, a staff member who leaves, a refunded purchase. The administration side is also where a training operation actually lives, so it deserves the same attention as the learner experience: enrolments and exceptions in queues, progress visible per cohort, and content editable by the team that owns it rather than through a support request to us. Admin dashboards covers those staff views.

What to bring to a scoping conversation

Bring one course and walk it through with us: how it is structured, how people enrol and pay, what completion has to mean, what integrity the assessment needs, which systems have to know about any of it, and the evidence you would want before accepting the work. That is enough to say whether configuring a platform, connecting one, or building is the right route. If you would rather start from the process you run today, talk it through with us.

Paid by nearly everyone, used by few. The 2021 participation figures are the most recent HRD Corp has published, so read them as direction rather than today’s number. The pattern they describe is the useful part: the money is collected whether or not anyone uses it. A full text version follows.

Paid by nearly everyone, used by few

Published statistic. The 2021 participation figures are the most recent HRD Corp has published, so read them as direction rather than today’s number. The pattern they describe is the useful part: the money is collected whether or not anyone uses it.

Source: HRD Corp: Industry Training Participation Report 2021, archived 31 May 2022. Reviewed .

Also: Bernama: HRD Corp approved RM2.62 billion in 2025.

Read the graphic as text
  • Employees trained, 2021: 10%. Across all sectors, among employers who pay the levy. HRD Corp’s own report calls it a sign that employers have not optimised the opportunity
  • Sub-sectors that used their levy, 2021: 54%. 122 of the 225 sub-sectors covered claimed anything at all that year
  • Approved for training, 2025: RM2.6bn. A third more than 2024, across more than 2.8 million training places
Download this infographic (SVG)

What you get

What is actually delivered

01

Course structure and versioning

Courses, modules, lessons and reusable assets, versioned so content can change without rewriting what existing learners have done.

02

Catalogue and search

Filtering and search built for the way buyers narrow down, including course codes, categories, formats and scheduled sessions.

03

Enrolment routes

Self-serve purchase, administrator assignment, bulk corporate seats and scheme-supported enrolment, each granting an entitlement with a defined start and end.

04

Progress and attempt records

Per learner and per course version, resumable across devices, with assessment attempts kept rather than overwritten.

05

Completion and certificates

Your completion criteria applied against the applicable course version, with a verifiable certificate that states what it actually evidences.

06

Roles and entitlement control

Learner, trainer, administrator and reporting roles kept distinct, with access changes and revocations recorded.

07

Administration and reporting

Enrolment queues, cohort progress, exceptions and completion reporting, with content editable by your own team. See admin dashboards.

08

Connections to payment and CRM

Enrolment driven by confirmed payment, and enquiries or bookings reaching the sales system where access and terms are confirmed.

How it runs

Walk one course end to end

Learning projects are decided by enrolment, versioning and completion rules, so we take one real course through its whole life before anything is designed around it.

  1. 01

    Take one course end to end

    How it is structured and published, how learners arrive, what they do, and how completion is currently decided.

  2. 02

    Agree the rules

    Entitlement and its duration, course versioning, completion criteria, retake policy and the integrity controls the programme actually needs.

  3. 03

    Prototype the journey

    The learner path and the administrator side working on a live link, so the rules are judged from something real before the build is committed.

  4. 04

    Build and connect

    The approved scope, with payment, CRM or identity connections whose access, data quality and terms have been confirmed.

  5. 05

    Test the exceptions

    Interrupted submissions, second devices, expired entitlements and content changed mid-cohort, checked against the acceptance evidence agreed beforehand.

  6. 06

    Hand over and support

    Accounts, code and content in your name, the rules documented, and ongoing care if you would rather we kept running it.

Proof

Work you can click through

PITC Training is real client work, live on the client’s own domain, not a prototype: a platform of 252 courses across eight venues with per-venue sessions and pricing, registration, brochure and enquiry flows wired into the client’s Zoho CRM, and a custom admin console for the team managing it.

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Getting hold of us

Normally under one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Questions

Asked about learning systems

Straight answers to what people ask before they commit. Anything else, message us.

What does a learning platform cost?

Website packages are published openly on the pricing page, but a learning platform is quoted against its scope rather than sold as a package. The figure moves with how many courses and formats you carry, how enrolment happens, how strict the assessment rules are, and how much of the work is the administration and reporting side.

Should we use an existing LMS instead?

Often, yes, and it is the first thing we would test. If a platform handles your workflow, your roles and your records, configuring it beats building. The case for a custom build appears when enrolment or completion rules cannot be expressed in the product, when the catalogue has to sell like a shop, or when the data has to live in a system you already run.

Can we sell courses online and have enrolment happen automatically?

Yes. The important detail is that enrolment should follow a confirmed payment result rather than the fact that a browser reached a thank-you page, since those two are not the same event. Refunds, failed payments and part payments each need an agreed effect on entitlement, and those rules are worth deciding before the checkout is built.

Do the certificates count for anything?

A certificate evidences that your completion rule was met on a date. It is not accreditation, which comes from an awarding body rather than from software. If yours needs recognised standing, the awarding body requirements usually shape the assessment rules and the retention period, so bring them to the scoping conversation.

Can you stop people cheating on assessments?

We can make an attempt attributable and reviewable, and add question pools, time limits, restricted retakes and an identity check at submission. We cannot see who is holding the device, and any provider who says otherwise is overselling. Decide how much integrity the programme needs, because every control costs something to build and to support.

Can it connect to our CRM or the system we already use?

Often, and the answer depends on four things we check before anything enters a scope: whether an interface exists, who can grant access, whether the data is clean enough to rely on, and what the vendor terms allow. Our PITC Training build sends registrations and enquiries into the client’s Zoho CRM, which is the shape most of these connections take.

How long does it take?

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed. For learning platforms the pacing item is usually the content and the completion rules rather than the software.

Where to go next

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.