Workflow — Judge Review

ModuleJudges
ActorsJudge, Admin (assignment + final report consumer), System
SRS refsUC-10, FR-0700, BR-004
StatusPlanned — ships with v0.7.0

Purpose

Give the judges panel a clean review board to inspect contestants (profile, photo, media, AI stats) and record decisions; the aggregated report goes to the main admin who finalizes.

Preconditions

  • Judge account exists (admin-created; login via password; LinkedIn optional later).
  • Judge assigned to event / category scope (judge_assignments).
  • Contestants exist with ai_scored or approved status.

Main flow

  1. Judge logs in → Review board shows assigned categories with contestant cards (photo, name, category, AI score/sparklines, vote count if admin enabled visibility).
  2. Judge opens a contestant → full profile: bio, LinkedIn link, uploaded photo, AI interview transcript (questions, answers, per-answer score/feedback), public media.
  3. Judge picks a decision: Approve / Disapprove / Needs info + writes notes.
  4. Saved (one decision per judge per contestant — revisable until admin locks the event).
  5. Progress indicator: "12/30 reviewed".
  6. Admin report auto-compiles per category: votes, AI total, judges' tallies + notes.

Alternate / error flows

  • A1 Conflict of interest → judge may flag "recuse" — decision recorded as recused; admin notified.
  • A2 Bias protection → judges don't see other judges' decisions until admin locks (avoids anchoring).
  • A3 Needs-info → staff may contact applicant via ticket/WhatsApp and attach outcome.

Rules applied

BR-004 (board score input), BR-005 (admin still holds veto), BR-006 (judges' visibility controlled by admin toggle).

Data touched

TableChange
judge_assignmentsread
judge_reviewsINSERT/UPDATE (unique registration+judge)
audit_logjudge.review
notificationsreport-ready → admin

Sequence

sequenceDiagram
    participant J as Judge
    participant W as Website
    participant DB as MariaDB
    participant AD as Admin (main)
    J->>W: login → review board
    loop each contestant
        J->>W: open profile (photo, AI stats, media)
        J->>W: decision + notes
        W->>DB: upsert judge_reviews
    end
    W->>DB: compile per-category report
    W-->>AD: "Judge report ready"