How it works
How recognition works
How training activity turns into points, streaks, badges and levels — what earns points, who decides a badge has been earned, and why reading never pays.
Recognition is ROK's optional layer of points, streaks, badges and levels on top of the training operators already do. By the end of this page you will know what earns what, who decides that a badge has been earned, and why a phone can never award a badge to itself.
Off until your agency switches it on
Recognition is opt-in per agency. Until someone who holds Manage settings turns it on under Settings → Recognition (opens the admin console), no points are banked for activity and nothing is awarded automatically. Badges, tracks and the level ladder can be built first and switched on when they are ready. Turning recognition off later deletes nothing.
One thing still works while it is off: a badge granted by hand on Awards (opens the admin console) is recorded with its points, and the member sees it once recognition is on. Everything is counted per agency — someone in two agencies has two separate sets of points, badges and levels (details).
What earns points
Each agency sets what an activity is worth. Points go into an append-only ledger: a revoked badge adds a negative entry rather than rewriting history, and changing a value applies from then on without recalculating anything already banked.
| Activity | Default | Paid |
|---|---|---|
| Passing a quiz | 25 | Once per quiz — only the first pass. Retakes earn nothing. |
| Completing an item | 10 | Once per item. |
| Signing an acknowledgment | 5 | Once for each version of the item you sign. |
| Extending a streak | 5 | At most once a day, and only on a day of real work. |
| A badge | Set on the badge | When it is awarded; taken back if it is revoked. |
Opening content is deliberately not on the list. Paying per view would reward skimming safety material rather than learning it.
Streaks
A streak counts consecutive days with any activity — a quiz attempt (passed or not), a completion, an acknowledgment, or opening an item. Days are UTC days. Miss one and the streak starts again; a daily job resets the streaks of people who have stopped syncing.
The Extending a streak bonus is stricter. It is banked once per UTC day, on a day the streak is at least two days long, and only when that day includes real work: a passed quiz, a completion or an acknowledgment. Opening content, or a failed attempt, keeps the streak alive but earns nothing.
Badges: the database decides
A badge is a list of steps plus a rule for combining them (all, any one, or some). The app only records what the operator did; the awards table accepts writes only from functions inside the database.
When an activity row arrives — a quiz attempt, a completion, an acknowledgment — a trigger on that
table runs the awarding engine, private.evaluate_badges(), for that member. It checks every badge
your agency can award whose steps that activity could satisfy, and awards the ones now met. The
offline queue replays into those same tables, so a quiz passed in a black spot earns its badge when
the phone syncs, through the same check (how the queue works).
An award is an event too. It re-checks the badges that depend on it — a Hold another badge prerequisite, or a track's capstone — so one quiz can complete a chain. Steps with no activity to hang a trigger on — streaks, time with the agency, reading — are checked once a day for members active in the last 45 days. Re-earning a lapsed badge needs fresh evidence recorded after the previous award, so a recertification badge cannot re-issue itself from old history.
Awarding by hand (Awards) does not check the steps. A member's level is a rung on a points ladder that can also require badges, recomputed whenever their points or badges change (how levels gate).
The leaderboard
Off by default. When an agency turns it on — By group or Whole agency — it appears as a card on each member's badge wall (Account settings → Badges), ranked by points for all time, the last 30 days or the last 7 days. It lists the top 100; members with no points in the period are not ranked. The operator app does not show badges, points or the leaderboard yet.
- Hide me takes a member off every board; the database accepts that change from them alone.
- With Names hidden, everyone except the viewer appears as "Operator" and four characters, with no photo.
- The database decides who appears, and returns nothing while recognition or the leaderboard is off.
What this means in practice
- "I passed it — where is my badge?" It arrives when the attempt reaches the server. Badges built on streaks, time with the agency or reading arrive at the next daily check.
- Changing a badge re-checks nobody on the spot. Members are evaluated against the new steps at their next qualifying activity.
- Revoking costs points and can cost a level. The points are taken back and the level is worked out again immediately. Who can award, revoke or change settings is checked by the database, whatever a screen shows — see Badges.
See also
- ReferenceRecognition settingsSwitch badges, points and streaks on for your agency, set what each activity is worth, and decide whether members are ranked against each other.
- ReferenceBadgesYour agency's own badges and the ROK catalog side by side — switch catalog badges on, duplicate one to customise it, and see how many people hold each.
- How it worksHow badge groups (tracks) workWhat a badge group is, how a track is worked out for your agency from ROK's catalog and your own badges, how "3 of 5" is counted, and how a capstone completes it.
- How it worksHow levels gate on badgesWhy a member with enough points can still be on a lower level — how a rung can require badges, why the climb stops at the first rung missed, and when a lapsed badge moves someone down.
- How it worksHow shared badges and verifiable credentials workHow a member shares a badge outside ROK — the public link, the signed Open Badges credential behind it, what a verifier sees, and what revoking or switching sharing off does.