Flag type (duplicate, expired, mismatch) and source
Note id, author, body, created at
Decision, reason code and message sent
Notes
Queue header. Shows queue size and SLA target. "Start review" opens the oldest unassigned item and locks it to the reviewer for 30 minutes. Access: Verification team and Super admin only.
Filters and tabs. Status tabs reflect state machine: Submitted, In review, More info requested, Approved, Rejected, Re-check due (insurance or DBS expiry within 30 days). Filters: submitted date, document status, region, assignee, works with children, flags. Dense table, 50 per page.
Bulk actions. Assign, request info (template), and approve for rows with every document marked valid and no flags. Bulk reject is not allowed. Confirmation dialog lists names. Every row action is logged.
Review panel. Opens below the table on desktop and as a full page on mobile. Requirements per role: DBS evidence only where the teacher works with children or vulnerable adults (spec: "where role requires"). Popdance reviews evidence; it does not conduct DBS checks.
Document viewer. Files served via short-lived signed URLs, watermarked with reviewer name, every view logged for GDPR audit. Check boxes record outcome for each document. Documents are never exposed publicly. After the decision, images are retained per retention policy (for example 12 months after account closure).
Internal notes. Staff-only, append-only, timestamped and attributed. Flags (duplicate account, expired document, name mismatch) are generated automatically and listed in the Flags column.
Decision controls. Approve requires at least Identity Checked. Each badge records date checked and expiry, shown publicly as "Insurance Verified, checked 29 Oct 2026". Request more info sends a templated email and moves the item to the second tab, auto-reminding after 5 days and closing after 30. Reject requires a reason code and message. Approved teachers receive a welcome email linking to Dashboard. Events: teacher_approved, teacher_rejected.
Mobile
Desktop only is acceptable for launch. Under 820px the table becomes cards and the review panel is a stacked page with sticky decision buttons.
States
Empty queue: "All caught up. Nothing waiting for review." Loading: skeleton rows; document viewer shows spinner. File error: "This file could not be opened. Ask the teacher to upload it again." Locked by another reviewer: "Jo is reviewing this teacher" with take-over option for Super admin. No permission: 403 page.