Industry guide · LMS

Vocational Training Software: Fixing the Funding Claim Leak

The short answer

Build if you run more than a few hundred learners a year across multiple sites and your funding claims depend on evidence that currently lives in spreadsheets. A focused first release covering enrolment, cohort and attendance tracking, evidence capture and a claims export typically runs $60,000 to $130,000 and ships in 12 to 16 weeks in Digital Heroes delivery experience. A full platform with awarding body integrations, employer portals, assessor mobile apps and multi-funder claim logic runs $150,000 to $400,000 phased across 6 to 12 months. If you are a single site running one funding stream and under 200 learners, stay on the off-the-shelf tool and spend the money on staff instead.

Why training management software makes or breaks a vocational provider

Every vocational provider I have worked with runs on the same four-legged stool: an LMS (Learning Management System) for content delivery, a spreadsheet for the funding claim, an email inbox for employer sign-off, and one person who knows how it all fits together. Take that person out for two weeks and the claim goes in late. That is not a software problem in the abstract. That is a quarter of your cash flow sitting in a Google Sheet called Claims_MASTER_v7_FINAL_USE_THIS.

The named tools are familiar. Moodle or Canvas for course delivery, sometimes Totara if someone made the compliance argument years ago. Maytas, PICS or Aptem on the funding and apprenticeship side if you are in the UK, with OneFile or Smart Assessor bolted on for the e-portfolio. Salesforce or a light CRM (Customer Relationship Management) like HubSpot for enquiries. Xero or QuickBooks for invoicing. Then a stack of spreadsheets that exists purely because none of those systems talk to each other: the cohort planner, the assessor allocation grid, the evidence chase list, the certificate register, and the one nobody admits to that reconciles what the LMS says a learner completed against what City & Guilds or Pearson actually certificated. In the quotes our clients have shown us, Aptem and its peers land around £8 to £15 per learner per month depending on volume and modules. Moodle is free until you add hosting, a partner, and the four plugins that break on every upgrade.

Here is the scene that repeats. It is the third week of the funding period. Your compliance lead has a laptop open with the ILR extract on one screen and the LMS attendance report on the other. A learner shows 87 percent attendance in the LMS because the tutor marked the register. But the learner's employer says they were on site that Tuesday, and the workplace evidence upload has a timestamp that contradicts both. The claim for that learner is worth around £4,500 across the programme. Your compliance lead spends ninety minutes on one learner. There are 340 learners in that period. That is not an edge case, it is Tuesday. Across a 400-learner provider we have consistently seen 25 to 40 hours a month go into claim reconciliation that produces zero teaching, zero assessment, and zero new enrolments. Put your own loaded compliance salary against that and it is five figures a year burned on making two systems agree with each other. The real cost is not the hours. It is the clawback when they do not agree and the audit finds it first.

Problem: your funding eligibility rules live in a person's head, not in the system

An eligibility decision at enrolment is a compound rule. Learner age band, prior attainment, residency status, employment status, employer levy position, whether the qualification is on the approved list for that funding stream this year, whether the learner has a prior funded start on a similar programme in the last 12 months, and whether the start date falls inside the contract window. Get one wrong and you do not find out for eight months. Then you get a clawback letter and you repay funding you already spent on tutors.

Moodle has no concept of any of this. It knows courses and completions. Aptem and Maytas do encode funding rules, but they encode the rules the vendor decided to encode, on the vendor's release schedule. When the funding rules change, and they change every August, you are waiting for a vendor patch while your admissions team runs on a PDF of the new rules and their judgement. Meanwhile if you run devolved funding across two or three combined authorities plus an apprenticeship contract plus a commercial arm, you have three or four different rulesets and the off-the-shelf tool models one well and the others badly.

What a custom build does: eligibility becomes a versioned rules engine, not code buried in a form. Each rule is a dated record with a condition, a funding stream, an effective-from and effective-to date. When your compliance lead enrols a learner, the system evaluates every active ruleset and returns a decision plus the reasons: eligible for AEB under rule set 2026-08, not eligible for apprenticeship funding because prior attainment is Level 3 in a related field. That reasoning string gets stored against the enrolment record forever. When the auditor asks in eighteen months why you claimed, the answer is a record, not a memory. When rules change in August, your team edits rules in an admin screen with an effective date, and yesterday's enrolments keep being evaluated under yesterday's rules. This is the single highest-return thing to build first, and it is why we start almost every provider engagement here.

Where AI helps: funding rule documents arrive as 60-page PDFs. We run those through a document extraction pass that drafts candidate rule changes and flags which of your existing rules the new guidance appears to contradict. A human approves every change. It turns a two-day read-and-interpret exercise into a two-hour review. It does not decide anything.

Problem: cohort scheduling and assessor allocation is a spreadsheet that nobody else can run

A multi-site provider running 30 cohorts a term is solving a real constraint problem: room capacity, tutor qualification against the specific unit, awarding body requirements for assessor occupational competence, learner availability against shift patterns, and workplace visit windows for apprentices. Your operations manager solves it in Excel with conditional formatting and a lot of coffee. It works until she is on leave, or until an employer moves 12 learners from nights to days with a week's notice and the whole grid unravels.

Off-the-shelf LMS platforms schedule courses. They do not schedule the human constraints. Moodle will let you set a course start date. It will not tell you that assigning Dave to that assessment breaks the awarding body's independence requirement because he taught the unit. Aptem handles caseload but the allocation logic is caseload-count based, not competence-and-constraint based, so it will happily hand an assessor a caseload that is legal on paper and impossible in geography.

A custom build models the actual entities: tutor with a qualifications matrix mapped to specific units and awarding bodies with expiry dates, sites with room capacity and equipment, cohorts with a delivery pattern, learners with availability windows, employers with sites and postcodes. Then scheduling is a constrained assignment, and the system tells you before you commit that this plan needs one more Level 3 electrical assessor in the north-west from March. The version we ship in first release is usually not a full optimiser. It is a validator plus a suggester: you drag, it tells you what breaks, it proposes three legal alternatives. That gets you most of the value at a fraction of the build. The full optimiser is a phase two conversation and should be, because it only pays off once your data is clean, and your data is not clean yet.

Problem: evidence chasing is a full-time job that produces nothing

For competence-based qualifications the portfolio is the product. Learner uploads a photo of a completed job, assessor maps it to criteria, employer countersigns, IQA samples it. In practice: learner forgets, assessor emails learner, learner replies with a photo attached to an email, assessor downloads it, renames it, uploads it to the LMS, maps it, then emails the employer for sign-off, employer signs a PDF and emails it back. I have watched an assessor spend three hours on admin after a full day of visits.

Moodle assignment submissions do not model criteria mapping across units. SharePoint plus a naming convention is what most providers actually run, and it fails the moment the IQA wants to sample by criterion rather than by learner. OneFile and Aptem do portfolio properly and are genuinely good at it, which is exactly why the honest advice for a lot of providers is to keep them. The break point is when you have evidence that spans multiple awarding bodies with different criteria structures, or when your employers refuse to log into yet another portal.

What a custom build does differently: evidence capture starts on the learner's phone with no login friction, a magic link from an SMS. The photo carries an EXIF timestamp and geotag which becomes your audit trail rather than a hope. AI does two useful things here and they are both narrow. First, it reads the uploaded document or photo and proposes which criteria it evidences, ranked with confidence, and the assessor accepts or corrects with one tap. That turns a five-minute mapping into fifteen seconds and the assessor is still the decision maker. Second, it drafts the chase messages: a nightly job identifies learners whose evidence is behind the expected curve against their planned end date, and sends a specific message referencing the specific missing unit, not a generic reminder. Employer sign-off happens by a signed link that works on a phone, with the countersignature captured as a hashed record with IP and timestamp. Across the providers we have shipped this for, assessor admin time drops materially and, more importantly, evidence lands earlier in the programme rather than in the panic before the gateway.

Problem: the claim, the LMS and the awarding body disagree, and only one of them is right

This is the one that costs real money. Your LMS says complete. Your funding system says in-learning. Your awarding body registration says the learner was never registered for that unit. All three are internally consistent and mutually contradictory. Somebody reconciles by hand. Every month.

The cause is structural: each system has its own idea of what a learner is and what completion means, and the sync between them is either a CSV or a person. Off-the-shelf tools cannot fix this because the fix is not a feature, it is a single source of truth, and no vendor will surrender that position. Every vendor wants to be the master record.

A custom build makes your own database the master and pushes to the others. One learner record with one identity, one enrolment record per programme instance, one immutable event log of everything that happened to it: enrolled, withdrawn, break in learning, restarted, completed, certificated. The funding claim becomes a projection of that event log, not a separate spreadsheet. Awarding body registration goes over their API where one exists, and where it does not, which is often, you build a robust file export plus a reconciliation import that flags every mismatch as an exception queue rather than letting it rot silently. Design the reconciliation as a first-class screen, not a report. Somebody works that queue every morning for ten minutes and the month-end panic disappears. Forecasting sits on the same event log: given current cohort progression velocity, here is the claim value we can expect in each of the next three periods, and here are the 23 learners whose planned end date is now unachievable. That forecast is worth having a finance director's attention on, and it is only possible because the event log exists.

Problem: employers will not use your portal, and that is your problem not theirs

Apprenticeship funding requires employer engagement evidence. Off-the-job hours records, progress reviews, tripartite meetings. The employer's HR (Human Resources) manager has a day job. They will not learn your portal. So your team calls them, transcribes the review into the system, and emails a PDF for signature. That is 40 minutes per review per learner per quarter, and at 300 apprentices it is a headcount.

Every off-the-shelf tool ships an employer portal and nearly every employer portal goes unused, because it asks a person who is not your customer to do work in your system. The custom answer inverts it. Meet the employer where they already are: a link in an email or WhatsApp that opens a single-purpose page with three questions and a signature box, no account. For the progress review itself, the tripartite meeting gets recorded with consent and transcribed, and an AI pass drafts the structured review against your required headings, off-the-job hours discussed, progress against milestones, concerns raised. The tutor edits and submits. The employer confirms by link. What used to be 40 minutes of typing becomes 8 minutes of editing, and the evidence quality goes up because it captures what was actually said rather than what someone remembered to type on Friday.

What this costs and how long it takes

These are Digital Heroes bands from delivery across 2,000+ projects, not vendor pricing.

A focused first release, $60,000 to $130,000, shipping in 12 to 16 weeks. That scope is: learner and enrolment data model, versioned eligibility rules engine, cohort and attendance tracking, evidence capture with criteria mapping, one funding claim export, and a reconciliation exception queue. It runs alongside your existing LMS rather than replacing it. That is deliberate. Content delivery is the one thing Moodle does adequately and replacing it first is how these projects die.

A full platform, $150,000 to $400,000, phased over 6 to 12 months. That adds multi-funder claim logic, awarding body integrations, an assessor mobile app that works offline in a workshop with no signal, employer engagement flows, IQA sampling workflow, and forecasting.

What drives price up in this category, specifically: the number of distinct funding streams you claim against, because each one is a separate ruleset with separate returns and separate audit expectations, and going from one to three roughly adds 30 to 40 percent to the compliance module. The number of awarding bodies, because City & Guilds, Pearson and NCFE range from decent REST to a fixed-width file you SFTP and pray about, and each integration is 2 to 4 weeks. Offline capability for assessors, which sounds minor and is not: proper offline sync with conflict resolution is 3 to 5 weeks on its own and you need it if your assessors work in basements and construction sites. Historical data migration, which is always worse than the estimate because your legacy learner records have four spellings of the same employer name. And any requirement to keep a legacy system running in parallel during transition, which effectively means building the integration twice.

What keeps price down: starting with one funding stream and one site as the pilot, keeping Moodle for content, and accepting file-based awarding body exchange in phase one instead of chasing every API.

Build versus buy: my actual position

Buy, and stop reading, if: you are single-site, under roughly 200 learners a year, running one funding stream, and your qualifications sit with one awarding body. Aptem or Maytas at that per-learner rate is dramatically cheaper than anything we would build, and the vendor absorbs the annual funding rules change for you. That is a real service and it is worth paying for. Buying is also right if your differentiator is your teaching and your employer relationships and nothing about your operating model is unusual. Do not build a worse version of a product that already fits.

Build when these signals show up, and they are concrete. You employ someone whose job title is effectively spreadsheet, and you have had that role for over a year. You have taken a clawback or an audit finding traceable to a data mismatch between two systems. You run three or more funding streams or contract types and the tool models one properly. You have been told a needed change is on the roadmap for more than two release cycles. Your per-learner licence cost across your stack now exceeds roughly $120,000 a year, at which point a $130,000 build pays back inside two years and you own it. Or, the one that matters most: you have a delivery model the market does not have a product for, bootcamp plus employer-sponsored plus commercial in one operation, and the reason you win contracts is exactly the thing your software cannot represent.

The middle path is real and it is where most providers should land. Keep Moodle. Keep your finance system. Build the compliance and evidence spine that sits between them, owns the learner record, and turns your funding claim into a query instead of a ritual. That is the $60,000 to $130,000 first release, and it is where the money leak actually is.

How to choose a developer for vocational training software

Put an enrolment in front of them in the first meeting and ask for the data model, not a wireframe. If they draw learner-course-completion and stop, they are building an LMS and they have not understood your business. The right answer has a programme instance separate from the learner, an immutable event log, break-in-learning as a first-class state, and eligibility as a dated rule evaluation stored with its reasoning. If they have built this before, that model comes out of them in ten minutes. If they have not, it takes them three months and your budget to discover it.

Ask what happens when the funding rules change in August. A team that has lived through it will talk about effective-dated rulesets, replaying historical enrolments under historical rules, and a UI where your compliance lead makes the change without a developer. A team that has not will say they will push an update. Those are different products and only one of them survives a rule change.

Ask about awarding body integration specifically, by name, for your awarding bodies. The honest answer includes the phrase there is no API and here is how we handle that. Anybody who promises clean two-way sync with every awarding body has not tried. What you want to hear is a reconciliation strategy: exception queues, mismatch detection, and a plan for the file formats that will not change in your lifetime.

Ask who owns the code and get it in writing before the first invoice. You should own the repository, the IP, the infrastructure accounts and the data, and you should be able to hand the whole thing to another team without asking permission. Ask for the handover documentation from a previous engagement, redacted. If it does not exist, the code is a hostage situation with a friendly face on it. On a system that holds your funding audit trail, that is not a commercial detail, it is an existential one.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. The average number of formal learning hours used per employee fell to 13.7 in 2024, down from 17.4 in 2023, a decline the report attributes partly to a shift toward informal and on-the-job learning not captured in the formal-hours metric. Source: Association for Talent Development (ATD) (2025) →
  2. An analysis of enrollment and completion data for 221 MOOCs (Katy Jordan, published in the International Review of Research in Open and Distributed Learning, IRRODL, 16(3), 2015 - not the Journal of Distance Education) found completion rates ranging from 0.7% to 52.1%, with a median completion rate of 12.6%, and completion negatively correlated with course length (longer courses had lower completion rates) - underscoring how unsupported self-paced online courses struggle to finish learners. Source: Journal of Distance Education (via ERIC / Katharina Jordan) (2015) →
  3. The average developer spends more than 17 hours a week dealing with maintenance issues such as debugging and refactoring, and about four of those hours on 'bad code' - waste that equates to nearly $85 billion annually worldwide in opportunity cost. Source: Stripe (2018) →
  4. In an RCT, the no-show rate was 23.5% for patients receiving a text-message reminder versus 38.1% for the control group - a 14.6 percentage-point reduction (p = 0.04). Source: Clinical Pediatrics / PubMed Central (Lin et al.) (2016) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom vocational training software cost for a provider with 400 learners across three sites?
A focused first release covering enrolment, eligibility rules, cohort tracking, evidence capture and one funding claim export typically runs $60,000 to $130,000 and ships in 12 to 16 weeks in Digital Heroes delivery experience. A full platform with multiple funding streams, awarding body integrations, an offline assessor app and employer flows runs $150,000 to $400,000 phased over 6 to 12 months. At 400 learners the main cost drivers are how many distinct funding streams you claim against and how many awarding bodies you need to exchange data with.
Should we build custom software or just use Aptem or Maytas?
Use Aptem or Maytas if you are single-site, under roughly 200 learners a year, on one funding stream and one awarding body. In the quotes our clients show us they land around £8 to £15 per learner per month, which is far cheaper than a build, and the vendor absorbs the annual funding rules change. Build when you run three or more funding streams, when you have taken a clawback traceable to a mismatch between two systems, or when a change you need has been on the roadmap for more than two release cycles.
Can we keep Moodle and build only the compliance and funding parts?
Yes, and for most providers that is the right call. Content delivery is the one thing Moodle does adequately, and replacing it first is how these projects fail. Build the spine that owns the learner record, the eligibility rules and the evidence trail, then push and pull course data from Moodle over its web services API. That is the $60,000 to $130,000 first release and it targets where the money is actually leaking.
How long does it take to migrate learner and evidence data off our existing system?
Plan 3 to 6 weeks inside a 12 to 16 week first release, and expect it to be the messiest part. The hard work is not moving rows, it is reconciling identity: legacy records typically have several spellings of the same employer, duplicate learners from re-enrolments, and completions recorded in one system but not another. Budget for a human review pass on the exceptions, because the migration is also the first honest audit of your data you will ever have had.
Who owns the code and the data if we pay for a custom build?
You should own all of it: the repository, the IP, the cloud accounts, and the database. Get this in writing before the first invoice, and ask to see redacted handover documentation from a previous engagement. If a developer cannot show you how another team would take over the system, the code is effectively held hostage, which is unacceptable for a system holding your funding audit trail.
How do we handle funding rule changes without paying a developer every August?
Build eligibility as a versioned, effective-dated rules engine that your compliance lead edits in an admin screen, not as logic hard-coded in a form. Each rule carries an effective-from and effective-to date, so enrolments made last year keep being evaluated under last year's rules when an auditor asks. Document extraction can draft candidate rule changes from the new guidance PDF for a human to approve, turning a two-day read into a two-hour review.
Will a custom system pass an ESFA or awarding body audit?
It passes if it stores reasoning, not just outcomes. Every eligibility decision should be recorded with the rule version and the reasons it evaluated, every evidence upload should carry its original timestamp and source, and every state change on an enrolment should sit in an immutable event log rather than being overwritten. Auditors are not asking whether your software is branded, they are asking whether you can evidence why you claimed.
What is the real return on building instead of renting per-learner software?
Look at two numbers. First, the licence cost across your whole stack: once it clears roughly $120,000 a year, a $130,000 build pays back inside two years and you own the asset. Second, the reconciliation labour: providers at around 400 learners commonly lose 25 to 40 hours a month to making the LMS, the funding system and the claim agree, which is five figures a year producing nothing, before you count clawback risk.
Where does AI actually help a training provider, versus where is it just marketing?
It helps in three narrow places: reading uploaded evidence and proposing which assessment criteria it maps to for an assessor to accept or correct, transcribing tripartite progress reviews into a structured draft the tutor edits, and extracting candidate rule changes from new funding guidance for a human to approve. In all three a person still decides. It does not help with eligibility decisions, claim submission, or anything an auditor will hold you to, and any vendor offering that is selling you a liability.
Should we launch an LMS MVP first instead of building everything at once?
Yes. The core loop of enroll a learner, deliver a course, track completion, and pull one report is shippable in 10 to 12 weeks and typically costs 40 to 50 percent of the full roadmap across Digital Heroes builds. Cut gamification, social features, and custom authoring (import SCORM packages from Articulate instead), but never cut the data model, SSO, or content-standard support, because those cannot be bolted on cleanly later.
What do I need to prepare before contacting an agency about LMS development?
One page with five answers: your learner roles, headcount now and in three years, whether you use SCORM/xAPI content from tools like Articulate or iSpring, the systems it must connect to (HRIS, SSO, payroll), and the one report someone will pull every month. That page gets you comparable quotes instead of guesses, and on Digital Heroes projects it routinely cuts discovery time in half. You do not need wireframes or a technical spec; producing those is the agency's job.
How long does it take to develop a custom LMS?
Plan on 10 to 14 weeks for a working first version and 4 to 6 months for a full corporate platform; those are the typical ranges across Digital Heroes projects. The items that stretch timelines are a SCORM/xAPI runtime, custom video pipelines, and single sign-on against a legacy directory. A phased launch with one department first gets learners into the system months before the full rollout finishes.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
How much does a custom LMS cost for a small business?
A lean custom LMS for a small business usually lands between $25,000 and $50,000, covering course delivery, quizzes, certificates, and completion reports for one team. Below roughly 50 learners with standard training needs, custom rarely beats an off-the-shelf tool like TalentLMS, which starts free for 5 users and 10 courses. Custom starts earning its cost when per-user licensing, branding limits, or missing integrations cost you more than the build would.
What tech stack should a custom LMS be built on?
A boring, hireable one: React or Next.js on the front end, Node.js or Python on the back end, PostgreSQL for data, and a managed video service like Mux or Cloudflare Stream instead of self-hosted video. The stack matters far less than the enrollment data model and the SCORM/xAPI runtime, which is where LMS builds actually succeed or fail. The red flag is an exotic stack chosen for the agency's own interest that nobody in your market can maintain.
Can we migrate from Moodle or TalentLMS to a custom LMS without losing training records?
Yes. Self-hosted Moodle gives you full database access and TalentLMS provides exports plus an API, so courses, users, and completion history all come across. The careful part is mapping historical completions and certificate dates so your audit trail stays intact, which is typically a two-to-four-week workstream inside the project. Run the old and new systems in parallel for one full training cycle before cutting over.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
What does it cost to maintain a custom LMS after launch?
Budget 15 to 20 percent of the build cost per year, which across Digital Heroes projects covers security patches, dependency updates, fixes when third-party APIs change (SSO providers and video services change often), and a steady stream of small improvements. Hosting for a mid-size LMS with video typically adds $200 to $800 a month. An LMS with zero maintenance does not stay free; it quietly accumulates a rebuild.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?