Goals, streaks & language progress
Sustained community contribution runs on visible progress — but most platforms buy motivation with surveillance: public rankings nobody asked to join. AfriAnnotate's motivation layer is built on one rule: nothing about a contributor is public unless they explicitly choose it.
Personal goals & streaks
In their profile, a contributor sets a daily goal (0 = off) and sees:
- today's progress toward it (annotations submitted + validation votes cast both count — judging is contribution);
- their current streak of consecutive active days, anchored so that today not being over doesn't break yesterday's streak.
Goals are private, self-set, and self-serving — the platform never broadcasts them.
Leaderboards — opt-in, always
Projects with crowd validation show a top-validators panel on the Listen page (last 30 days), and appearing on it requires explicitly opting in in your profile — with an optional alias so contributors can compete without exposing their name. The opt-out default means an empty leaderboard on day one; that's the cost of doing this right, and the panel hides itself entirely until someone opts in.
Public language progress
The motivating number for language communities isn't personal rank — it's "how far has my language come?" The Discover page answers it with a per-language strip across public projects: clips collected, hours of speech, and the percentage crowd-validated, per declared language.
Clip durations are recorded automatically when audio QC analyzes a new
recording, so hours accumulate from ingest onward. Clips recorded before
durations were stored can be filled in with
python manage.py backfill_clip_durations; a language's hours only count
clips whose duration is known.
- Projects enroll by declaring their language (Settings → General — the same setting that pins the annotator-facing UI language).
- Projects with no declared language simply don't appear — no "unspecified" noise.
- Codes render as names ("ha" → Hausa).
- The endpoint is public by design: progress belongs to the language community, not just account holders.
What deliberately doesn't exist
No public per-person totals without opt-in, no manager-visible "productivity scores" dressed as motivation, no dark-pattern re-engagement email (notification nudges may come later — as explicit opt-ins). Quality management has its own honest tooling; motivation shouldn't secretly be it.