Workflow
Learning & training
Two ways of teaching people something — a course they take on a phone between shifts, and a session somebody stands up and runs — and one place the result lands: the certification register. Nothing downstream can tell the two apart, which is the whole design. A fire drill on the jetty and a fire-safety course taken at midnight both put the same row on the compliance matrix, the same expiry in the diary and the same certificate in the employee's file. This guide follows that: courses first, then sessions, then the skills the two of them prove.
This is the guide HumanR users read inside the product, published as-is. It is written for someone with the screen in front of them, so it describes buttons you cannot click from here — which is rather the point: you can check how the product behaves before you commit to it.
What this module is
The register is the ledger; delivery is pluggable. A course that teaches a certification files a register row when somebody finishes it. A session that certifies something files one for everybody who turned up. HR typing a paper certificate in by hand files the same row, and so does an external LMS posting to the API. From that point on the compliance matrix, the expiry ladder, the renewal chain and the report builder treat all four identically — because they cannot tell which produced what.
The pieces. Six sit in the sidebar under Learning; the rest are views of the screen they belong to and are reached from that screen's own header.
| Courses | Self-paced content — lessons, an optional quiz, optional marked assignments. |
| Curricula | An ordered run of courses that adds up to something a job needs. |
| Training sessions | The diary of classroom and on-site events, with rosters and mark sheets. |
| Skills | The competency catalogue. Matrix and Gaps are buttons on it. |
| Providers | Who delivers the training, internal or bought in. |
| Training spend | What training cost. Budget is a button on it. |
| Marking | The assessor's worklist — handed-in work waiting on a judgement. A button on Courses. |
One thing to know before anything else: there is no enrolment list and no progress percentage anywhere in this module. Who a course is in front of is worked out from its audience rules plus whoever the compliance matrix says is missing the credential; how far somebody has got is counted from the lessons they finished and the attempts they sat. Both are read fresh every time. Nothing has to be reconciled, and nothing can quietly drift out of step with what actually happened.
Building a course
New course asks for a code (unique — "FIRE-BASIC" — it is how reports and the API cite the course), a title, and the one field that decides what the course is for: the certification it teaches. Set it and finishing the course files that credential. Leave it blank and the course is plain knowledge-sharing that files nothing — perfectly legitimate for a "how we do handover" explainer.
Then add lessons, in order. Four kinds, and the order is changed with the up/down buttons rather than dragging:
| Reading | Plain text. Line breaks are kept; it is never treated as markup. |
| Video | A YouTube or Vimeo link, embedded. HumanR never hosts the video itself — half a roster is on island or vessel bandwidth, and a self-hosted file is the thing that will not play. |
| File | A PDF or document, stored like every other file in the system and streamed back through the app, never a public URL. |
| Assignment | Work handed in and marked by a person — see below. |
Keep lessons short. Each one is its own completion and therefore its own resume point, which is what lets somebody do a course in the gaps of a shift instead of needing forty free minutes. Estimated minutes is an honest "about 20 minutes" for the learner — and it is also the contact hours written onto the record the course files, so it is worth being roughly right. Category, instructor and language are free text used for grouping and for the certificate.
A course only leaves draft when you publish it, and it can be deleted only while it is a draft nobody has sat. Once it has been delivered, archive it instead — the attempts on file are graded evidence, and deleting the course would take them with it.
The quiz
A course can end in a multiple-choice assessment. It is typed rather than built with a
drag-and-drop editor, so it can be pasted out of a Word file and read at a glance:
Q: starts a question, * marks a correct answer and - a
wrong one. Every question needs at least two options and at least one correct answer — a
question nobody can get right would make the pass mark unreachable, and the author would
hear about it from a learner. More than one * makes it multi-answer, marked
all-or-nothing: a half-right answer with an extra tick is wrong, the same as on paper.
Q: Which extinguisher is used on an electrical fire? * CO₂ - Water - Foam Q: What do you do first on hearing the alarm? * Stop work and go to the muster point - Finish the task in hand
Then four settings that turn a page of questions into an assessment:
| Pass mark | A whole percent, read against the questions actually asked. |
| Attempts allowed | 0 is unlimited. Running out of attempts closes the quiz, never the course content. |
| Time limit | Minutes from when the paper is dealt, not from when the course was opened. 0 is untimed, which is right for most refreshers. The countdown on the page is a courtesy — the limit is enforced on submission, and a paper that comes in late is still graded and kept but cannot pass. There is a few seconds' grace for a slow connection. |
| Shuffle | Questions, answers, or both. "The answer is B" stops being worth passing round the staff block. |
| Questions per sitting | Draw 10 from a pool of 40 and two people sitting side by side have different papers. This is the question bank in its useful form. 0 asks the whole paper. |
Import questions copies another course's paper into the box for editing. It is a copy on purpose, not a link to a shared bank: you see exactly what landed, cut the two that do not apply here, and no later edit on either side reaches across into the other course's paper.
Every sitting is graded on the server and never re-graded. The attempt keeps the paper exactly as it was presented — questions drawn, order dealt, pass mark, time allowed — beside the answers given, so editing the quiz next year cannot rewrite what somebody passed or failed. Failed attempts stay on file: "failed twice, passed the third time" is precisely what a training auditor asks to see.
Marked assignments
An assignment lesson is the half of training a quiz cannot reach: "record yourself doing the handover", "write up the incident you attended", "photograph your knife cuts". The learner types an answer, attaches a file, or both — an empty hand-in is refused, because it would put a phantom on somebody's queue.
It is the one lesson type a learner cannot tick off themselves. It counts as finished when an assessor accepts it, which means "sent back for rework" un-finishes it by arithmetic rather than by deleting anybody's completion.
Learning ▸ Marking is the queue, oldest first, with a count badge in the sidebar. Opening one piece of work shows every earlier attempt underneath it — an assessor sending something back a second time can see what they asked for the first time. Two outcomes only: Accepted, or Sent back with notes, and the notes are compulsory. Sending work back without saying why is how an assignment turns into a hoop.
A mark is written once, on the attempt it judges. An assessor who changes their mind marks the next submission rather than editing this one — the same rule as a quiz attempt, for the same reason. And when accepting a piece of work is the last thing a course was waiting for, that click is what files the credential: on an assignment course the completion belongs to the assessor, not the learner.
Publishing & who it reaches
A published course reaches people three ways, and they add up rather than compete:
- Audience rules — everyone, or any mix of departments, work sites and designations, set on the course itself. Somebody is in scope when any rule matches: ticking Housekeeping and Site B reaches all of Housekeeping and everyone at Site B. It is the same union, resolved by the same code, as company documents and the noticeboard — the three can never disagree about who "Operations" means.
- The compliance matrix — for a course that teaches a certification, anyone whose credential is missing or approaching expiry gets the course in front of them with no audience rule at all. This is the recert loop, and it is the point of the module: the fire ticket lapses, the fire course reappears as required, finishing it renews the ticket, and nobody scheduled anything.
- The catalogue — tick open to self-enrolment and anyone may take it whether or not it was assigned. There is still no enrolment row: starting the first lesson is the enrolment.
Deadlines are set on the audience form, and there are two shapes. A fixed date — "everyone in Housekeeping, by 30 September" — and days after joining, which is the shape induction actually has ("within 14 days of starting"). Use the second for anything a new starter must do: a fixed date goes stale the day it passes and would mark every future joiner overdue on arrival. Where two rules reach the same person, the earlier deadline wins; the strictest promise is the one that was made.
For the one-off — "Ahmed is moving to the kitchen, put him through HACCP" — Assign on the course's progress page puts it in front of one named person with its own date. It is an ordinary audience rule, so the portal, the roster and the overdue count all pick it up with nothing else to wire.
Curricula
A curriculum is an ordered run of courses that adds up to something a job needs — "Front office induction", "Supervisor track". It has its own code, its own audience and its own deadline, and the deadline covers the whole thing: there is deliberately no per-step date, because a step-by-step schedule is a project plan, and what a curriculum promises is "all of this, by then".
Courses are shared, never copied. The same fire-safety course can be step 1 of induction and step 4 of the supervisor track, and somebody who did it once has done it in both — including somebody who did it last year, who is credited the moment the step is added.
Steps can be optional (recommended, never holds the curriculum incomplete), and the curriculum as a whole can be marked in order, which locks each step until the earlier required ones are done. Leave that off unless the material genuinely builds — most curricula are a bundle rather than a ladder, and a lock that is not needed is only a way to strand somebody. Even with it on, a course that is separately assigned, demanded by the compliance matrix, or already started is never locked: a curriculum orders its own offer, it does not withdraw one made elsewhere.
Progress, and what "complete" means
Every course has a progress page: everyone the course reaches, how far each has got, who is overdue, and a CSV of the lot. It is the roster a training coordinator works from, and it is built from the same rules the learner's own list is built from — the two cannot disagree.
Complete means the course's own bar, all of it:
- every lesson finished,
- the quiz passed, where there is one,
- and every piece of handed-in work accepted.
Somebody sitting at "5 of 5 lessons, waiting to be marked" is not complete, and the roster says so in those words rather than showing a hopeful green tick. Removing a lesson from a course afterwards never un-finishes anybody: the count is "at least as many as the course has", not an exact match.
Overdue is past the deadline and still unfinished. Finishing late clears it — a deadline is a promise about when, not a verdict that stands forever — and the record it files carries the date it was actually finished.
What a completion files
Finishing a course that teaches a certification writes a row into the register, through the same service HR uses by hand. There are three outcomes, and the middle one is why this module exists:
| Nothing held | A fresh record, dated today, with the type's own validity deciding the expiry. |
| Held but expiring or expired | A renewal that supersedes the old one, keeping the chain an inspector follows intact. |
| Held and comfortably valid | Nothing at all. Re-reading the material must not churn a healthy renewal chain. |
The record carries the score where there was a quiz, the instructor's name, the course's hours, and a branded completion certificate as its attachment — the same PDF whichever channel earned it, on the employer's own letterhead. If the certificate cannot be produced for some reason, the credential still stands: the register row is the record of truth, and a row awaiting its attachment is exactly the shape of one HR typed in before scanning the paper.
One special case worth knowing. A course with no quiz has nothing left to do the second time round — the lessons are already ticked — so its credential could never renew. For those, the learner gets a "I have done this again" button on the course page, which files the refresher dated today. It is not somebody awarding themselves a qualification: the course is the employer's own material, and the record says attended, exactly as it would have the first time.
Scheduling a session
A training session is an event: a fire drill on the jetty, an induction in the staff canteen, a HACCP refresher a provider comes in to run. Most of what a company actually runs as training is this, with no e-learning behind it at all.
| When & where | Start and end, a work site, and a venue in plain words — room, jetty, vessel. |
| Capacity | Seats. 0 is uncapped; above that the roster refuses to grow past it, because a lifeboat drill with more people than places is a safety finding rather than a scheduling detail. |
| Hours | Contact hours credited to each attendee. Left blank, the session's own duration is used. |
| Provider & trainer | Who is running it, and the named assessor written onto every record it files — an inspector will want a name even for training you ran yourself. |
| Certification | What attending earns. |
| Cost | The invoice total, not the per-head. Visible only to people with pay access. |
A session can also be tied to a course, which makes it the classroom half of a blended one. When it is, the credential comes from the course rather than the session — letting the two disagree would put two different certificates on the same training.
The roster & nominations
A session is Planned while you set it up, Open once it is announced, and then either Completed or Cancelled. The roster can be edited freely for the first two.
Fill from audience puts a department, site or designation on the list in one action — but unlike a course audience this is a starting point, not a gate. Who is actually on shift that Tuesday is not something a department rule knows, so the list is then edited by hand.
Tick allow self-nomination and staff in the audience can put themselves forward from the portal while the session is Open, with a sentence saying why. Leave it off for anything mandatory — those rosters are policy, not preference. A nomination is a request, never a booking: it goes through the ordinary approval engine, so a company that wants "over MVR 5,000 needs the GM" can configure exactly that. With no route configured it raises a single step for whoever manages learning, which is the same person deciding the same thing — except it is now notified, audited and answerable from the approvals inbox as well as from the session page.
A refused nomination becomes Withdrawn with the reason kept, never a deleted row. "Asked to go and was not sent" is a fact somebody may need next year.
The mark sheet & close-out
After the day, the trainer hands back a sheet and somebody types it in. The whole roster is one form — mark everyone Attended or Absent, add a result or score where the training was assessed, and save it in one go.
Complete is the only action here that writes anything permanent. It walks the roster and files a register row for every attendee, then stamps each row with the record it produced — which is what makes a second close-out a no-op rather than a pile of duplicate certificates. It is terminal: reopening a session would put the filed records in question.
- Absent files nothing. It is also the number a training manager is really judged on, so it is worth marking honestly.
- A failed assessment is still filed. A failed attempt is history that has to survive, and a failed record already does not count as a credential held.
- Cost is divided by attendance, not by roster size — the people who did not turn up did not consume the seats. One person's place can be overridden where it genuinely cost something different.
- Unlike a course, a session always files: HR booked the room and ticked the names, so quietly filing nothing because the credential was still valid would read as a bug rather than a nicety.
Cancel keeps every attendee row, so "was scheduled, then called off" survives. The roster exports to CSV at any point.
Providers & their ratings
A provider is whoever delivers the training — the company's own assessor (internal, pointing at somebody on the roster) or a body you buy from (external, with a contact and an accreditation number). It exists so the register does not end up holding "Red Crescent", "Red Cresent" and "RC Maldives" as three different suppliers, unable to answer what you bought from whom.
Attendees are asked for a 1–5 rating afterwards, once, and only if the mark sheet says they were there — a rating from somebody who did not turn up would quietly poison the ranking. The providers page then ranks by the two numbers a coordinator actually needs: how often you have used them, and how the room rated them. Both fall out of the sessions already run; there is no scorecard for anybody to maintain.
Providers are retired, never deleted, and the register stores their names as text at the time — renaming a provider today must not rewrite who trained somebody in 2024.
Spend & budget
Training spend is read off the certification register rather than a second ledger. Every close-out stamps each attendance with its share of the invoice, and a record HR typed in by hand with a cost on it counts too — which is the honest total, not just the part this module scheduled. Group it by person, department or provider over any date range.
Training budget is the one number that cannot be derived: what somebody was allowed to spend is a decision from a planning meeting. Set a ceiling per department for a calendar year, and a company-wide line beside them — the screen reads those as two separate promises and shows you when they disagree. Against it sits what has gone and what is already booked in sessions not yet run.
Two deliberate refusals. Nothing is enforced: an over-budget line is information, not a gate, because the drill that keeps a licence gets run whatever the number says. And money in different currencies is reported side by side, never converted — a total that silently added dollars to rufiyaa at some rate nobody chose is worse than no total at all.
The catalogue & the scale
A skill is something the work needs people to be able to do — "Fire warden", "Front office check-in", "Spoken Dhivehi". Everyone is measured on one five-step scale, and the words carry the meaning so nobody has to remember whether 3 is good:
| Awareness | Knows what it is and when to ask for help. |
| Working | Does the task under normal supervision. |
| Proficient | Works unsupervised, handles the usual exceptions. |
| Advanced | Handles the hard cases and improves how it is done. |
| Expert | The person the others are sent to; can assess and teach it. |
The scale is fixed rather than configurable per skill, and that is a decision, not an omission: the moment two skills are measured differently the matrix cannot compare them, "the gap" stops being a number, and every report grows a footnote.
A skill can name the certification that proves it, and the level a valid record demonstrates. That is why skills live inside this module rather than beside it: pass the fire course, the register files the credential, and the fire-warden cell fills in on the next read with nobody typing anything. When that credential lapses, the cell drops by itself.
Requirements say who needs a skill and to what level, by the same union of rules as everything else — usually against a designation, since that is a job profile written once. Where two rules reach one person the highest level wins. Mark a requirement essential when the job cannot be done without it; leave it desirable when it is development. Only an essential shortfall counts as a breach, because a matrix where everything is red is a matrix nobody opens twice.
The matrix & the gaps
The matrix is people down the side, skills across the top. A cell is not stored anywhere — it is the latest signed assessment, taken together with what a valid certification already proves, computed as you look at it. That is what stops this being a spreadsheet with a login, stale by the second month.
An assessment is one judgement, on one person, on one skill, on one date, signed by whoever made it. Promotions are the next row, never an edit of the last one, so the trail reads as the growth it was.
Staff can rate themselves from the portal. Those ratings are kept and shown — they are how a matrix ever gets populated past the first fifty people — but they never raise what somebody can be said to have. A claim is an invitation to assess, not evidence, and it puts that person in an assessor's queue.
Gaps is the to-do list that falls out of all this: who is short of what the job needs, essential shortfalls first. Where a skill is proved by a certification, the fix is offered straight away — the published courses that teach it.
What staff see
In the portal, My portal ▸ Learning is one screen: the courses in front of them, the curricula they are on, the sessions coming up, and the catalogue to browse. It is ordered by what will get somebody sent home from a job — overdue first, then required and unfinished, then everything else — because a shift worker opens this once.
- The player is one lesson to a screen with a next button. Everything is resumable, so a course survives being done in ten-minute pieces.
- Handing in an assignment says plainly that it is waiting to be marked, rather than the cheerful "done" every other lesson gets.
- Passing a quiz shows what was filed, and the certificate is in their own certifications page immediately.
- My skills shows what the job asks and where they are short — read from exactly the same derivation the assessor's matrix uses, because a learner and their manager disagreeing about the matrix is the failure this module exists to avoid.
- After a session they attended, they are asked to rate it once.
All of it needs the staff portal to be enabled and the person to have a login. Everything is scoped to them by the same audience rules the admin roster uses — a course id belonging to somebody else's audience is not "forbidden", it simply does not exist.
Reporting & integrations
- Analytics ▸ Learning & training — how far the courses in front of people have got, which sessions ran and who turned up, how assessments are going, and what it cost. Every course figure is counted through the same rosters the progress page draws, so the dashboard cannot disagree with the page it links to. Money is absent without pay access rather than blanked.
- Report builder — two sources: Training attendance (every roster row, with hours, result and cost) and Course assessments (every quiz attempt). Filter, group and export like any other report.
- The appraisal — a review form's evidence panel shows what the person completed during the review period, the contact hours behind it, and any assigned training still outstanding. It freezes into the submitted review with the rest of the evidence, so reopening it years later shows what was true at the time.
- Webhooks —
learning.course.completedandlearning.session.completedfire to Slack, Teams or your own system. - The API — training delivered somewhere else entirely can be posted to
/api/v1/certifications, landing in the very same rows the course engine writes. That is the supported way to bring an external LMS in.
There is no SCORM or xAPI import. Content authored in another tool is either rebuilt as lessons here or run there and posted back through the API as completions.
Permissions & gotchas
- Learning · View — courses, curricula, the session diary, rosters, progress, the skills matrix and the marking queue, all read-only.
- Learning · Manage — authoring, publishing, assigning, running sessions, marking work and recording assessments. One pair covers courses, sessions and skills on purpose: scheduling a fire drill and authoring a fire course are the same job done by the same person, and splitting them would mean two grants for one role.
- Sensitive · Pay — every figure of money: session cost, per-head cost, the spend report and the budget screen. A coordinator can run the whole diary without seeing what the provider charged.
- Authoring a course is not the right to write the certification register by hand. That stays with the register's own permission; the course files through the service under its own rules either way.
- The module is behind the
EnableLearningsetting. With it off, every page here is simply not there — for administrators too.
Worth remembering
- Nothing here emails anybody. There are no course reminders and no overdue nudges: the staff portal list, the progress roster and the dashboard are the chase. Nomination decisions do notify, because those run through approvals.
- A course with no certification linked to it files nothing — it is knowledge-sharing, and it will never appear on the compliance matrix.
- Finishing a course whose credential is comfortably valid files nothing, on purpose. If you need a dated refresher on the register, run it as a session.
- Closing a session out cannot be undone, and a second close-out is a no-op rather than a duplicate.
- Editing a quiz never changes a past attempt's grade; each attempt keeps the paper it sat.
- Deleting a lesson does not un-finish the course for anyone who already did it.
- Self-ratings are never counted as skill held, and budgets never block a booking.
- With the certifications register turned off, completions are still recorded as progress — they simply file nothing they could never show.