Judge Awards

Five badges a debater can't earn with XP — only a judge can give them at a tournament. They appear on the debater's page with the judge's name under each badge.

  • Routes: /coaching/leaderboard/{debaterId} (earned awards and the Give an award form), /practice/level (all five awards and what they recognize)
  • Package: debate-community (packages/debate-contributor-progress)

The awards

AwardRecognizes
Most ImprovedCame back sharper every round over the course of a tournament
Best SpeakerThe clearest, most persuasive delivery the judge heard
Best Critique DebaterTook apart the other side's assumptions, not just their arguments
Best Impact CalculusExplicit weighing — magnitude, probability, timeframe
Best Research AwardEvidence deeper, fresher and better cut than anything else in the room

The rule

Each judge can give each award once per tournament. A judge who gives Best Speaker at Glenbrooks can't give Best Speaker to a second debater there, but can still give the other four, and can give Best Speaker again at the next tournament. Judge and tournament names are matched ignoring case and extra spaces. A judge can't give an award to themself.

Data flow

lib/judge-awards.ts        — award definitions, validateJudgeAward()
state/judgeAwards.ts       — localStorage "judgeAwards", giveJudgeAward()
  → panels/JudgeAwardsSection.tsx
      JudgeAwardsSection   → ContributorProfilePanel (debater page)
      JudgeAwardShowcase   → DebaterLevelPanel (/practice/level)

Awards sync to the signed-in user's account as the judgeAwards collection.

Known gaps

  • No judge verification. The judge's name is typed in by whoever fills in the form; nothing checks that they judged the tournament.
  • Per-browser, not shared. An award lives in the browser (and account) of whoever gave it. The debater sees it on their page only on that device or account — a shared server-side table is needed for it to follow the debater.
  • No XP. The badge art shows +200 XP, but judge awards don't add to the debater's level yet, for the same reason: the level lives in the debater's browser, while the award lives in the judge's.