Skip to content

Metrics Reference

How every student metric is measured and calculated. A plain-language breakdown of the 13 metrics tracked in Campus — where each number comes from and the exact formula behind it. Scoring and gamification are calculated on our servers; the app displays the results.

  • Get — where the raw data comes from
  • Calculate — the formula applied to it

Each metric below is also tagged with its current state:

TagMeaning
UsedLive in Campus today
PartialExists, with caveats
Not a featureNot implemented

Everything in this section is derived from four values stored per quiz: correct answers, questions attempted, total questions, and time taken.

Each question is worth a point value (default 1). A correct answer earns the full points; a wrong answer earns zero. Points per quiz roll up into the student’s lifetime coin balance, which drives badges and the leaderboard.

How we get it

Each question’s settings.points; summed per correct answer into obtainedMarks, then added to the wallet coin balance.

How we calculate

points earned = Σ (points of each correctly-answered question)
lifetime coins = Σ (points earned across all quizzes)

There is no letter grade or GPA. A “grade” is the student’s average accuracy percentage, plus a simple pass/fail flag on each quiz.

How we get it

Average of the per-day accuracy figures already stored for the student.

How we calculate

grade = average( accuracy of all quiz-days )
pass? = correct ÷ attempted > 80% → PASSED, else FAILED

A tiered icon placed on each quiz once completed, based on accuracy — and a special tier for a flawless, fast run.

How we get it

From the quiz’s accuracy %, mistake count, and average time per question at completion.

How we calculate

Status / TierColorIconWhen it shows
ExcellencePurple/Indigomastery-1.svg0 mistakes and average under 7 seconds per question
MasteredGreencrown-green.svgAccuracy ≥ 100%
CompetentYellowcrown-yellow.svgAccuracy ≥ 90%
ProficientOrangemastery-2.svgAccuracy ≥ 70%
FamiliarPink/Redmastery-3.svgAccuracy ≥ 50%
In Progress (fallback)Bluemaster-4.svgCompleted, accuracy below 50%

Excellence is checked first, ahead of the accuracy bands. A completed quiz under 50% accuracy falls back to the same icon used for an unfinished attempt.

Where a student stands on a lesson: Not Started → In Progress → Completed.

How we get it

From whether a quiz result exists and how many questions have been answered.

How we calculate

no result → Not Started
some answers → In Progress
attempted ≥ total → Completed
StatusColorIcon
Not StartedGraycrown-gray.svg
In ProgressBluemaster-4.svg

Every retake is recorded as a new attempt. Attempts are counted but never limited — there is currently no maximum-retake cap in the system.

How we get it

One quiz-result record is created each time a student starts the quiz.

How we calculate

total attempts = count of quiz-result records for that lesson
re-attempts (reporting) = Σ total quizzes started

Earned automatically on the server as quizzes complete. Coins are the shared currency underneath badges and ranking.

14 tiers (Bronze → Vibranium), 10 levels each = 140 badges. A badge unlocks the moment the student’s total coins reach that badge’s threshold.

How we get it

Compared against the student’s lifetime coin balance.

How we calculate

award every badge where coin_threshold ≤ student's coins
tier level unlocks at: start + (gap × level)
TierCoin threshold
Bronze1,000
Graphite5,000
Quartz10,000
Silver15,000
Jade25,000
Gold50,000
Pearl100,000
Titanium150,000
Platinum200,000
Emerald300,000
Sapphire400,000
Ruby550,000
Diamond750,000
Vibranium1,000,000

Awarded per quiz according to the score achieved on it.

How we get it

From the quiz’s correct-answer ratio at completion.

How we calculate

Platinum 100%
Gold ≥ 85%
Silver ≥ 70%
Bronze below 70%

This is the teacher behaviour-points system (conduct), separate from quiz coins. Teachers assign positive or negative points to students.

How we get it

From behaviour records assigned to the student by staff.

How we calculate

reward total = Σ positive points − Σ |negative points|

Rewards showing up day after day. The count grows by one for each consecutive active day and resets after a missed day.

How we get it

From the daily time-spent record and the date of the last active day.

How we calculate

if last active day was yesterday → streak + 1
otherwise → streak resets to 1
(a day counts once its time-spent target is met)

Campus has more than one leaderboard, and they don’t rank the same way. Computed live and refreshed on a schedule.

How we get it

From each student’s summed quiz results (points, time, accuracy, speed).

How we calculate

Overall Leaderboard (org/class-wide, across all quizzes combined) — points win first:

order by: total points ↓ (highest first)
then total time ↑ (faster wins ties)
then average accuracy ↓
then average speed ↓

Lesson Leaderboard (one specific lesson, best completed attempt per student) — speed wins first instead:

order by: time ↑ (fastest first)
then points ↓
then accuracy ↓
then speed ↓
then earliest attempt

How much and how consistently a student is working, drawn from daily quiz and time-spent rollups.

There is no single ”% of course complete” number. Progress is shown as change over time — how this period compares to the last.

How we get it

From point/time totals of the current period versus the previous one.

How we calculate

progress % = (current − previous) ÷ previous × 100
(also shown as this-week vs last-week change)

The volume of questions a student answers over time — shown as a daily / weekly / monthly chart. This is a count chart, not a social feed.

How we get it

From the daily quiz summary, grouped by day, week, month, or year.

How we calculate

activity = Σ questions answered (per time bucket)

There is no “Streams” feature in Campus. The word is reused internally for two unrelated things: the live presence-tracking connection, and a data endpoint that (despite its name) only returns daily time-spent figures. There is no social stream or feed to calculate.