← Review Hub / Website Roles

The DOJ website has two faces

Every visitor sees the same public, read-only site — Home, Public Records, the Penal Code, the DOJ Library, and Careers. Anyone can browse those without an account. The logged-in dashboard is different for every role: after you sign in, the #dashboardSection shell swaps in a role-specific stack of panels (renderDashboardByRole() in js/dashboard.js). Login is passcode-based and only offered from an in-city DOJ terminal or the CrestWood phone app — a plain browser visit never even shows a passcode field. The header title reads Name (role), with a mail, settings, and notification bell to its right.


status green = active / approved / paid status amber = pending / due status red = denied / overdue / warrant gold badge = a capability the role holds flag = a gap / dead code in the real system flag = fixed in DOJ v4 flag = new in DOJ v4 flag = works, but limited

Everything below is a faithful mock of the real panels each role renders, filled with invented records (case numbers, names, dates). Real labels, button text, section titles, and access rules are preserved from the source.

DOJ v4 (2026-07-22) — code-complete, not yet in-game-acceptance-tested.

The three role/dashboard bugs this review originally flagged are fixed. Eight major systems were added on top: Docket Stages, Sentencing Levers, Bar Discipline (dues + auto-suspend), Retainers (signed before an attorney can attach), the Case Law Shelf, Attorney Training (13 modules + a timed drill), the Firm Portal (intake queue + oversight), and License Points on traffic convictions. All are verified against the API/DB layer only — nobody has clicked through them live in the city yet, so treat every new tag below as "should work," not "confirmed working."

Shipped: all 25 roles now use the Variant A sidebar workspace.

Every dashboard below has been rebuilt into the pattern proposed on the Revamp page: a left rail (identity block + a nav list with count badges) switches between panes on the right, with Overview first. Overview leads with a "Your Tasks" to-do card — only categories that actually have work render as sections (checkbox · task · reference · age · jump button); a role with nothing outstanding collapses to one ✓ All clear chip row instead of empty headers. Checking a task strikes it, slides it into a collapsed "Done today (N)" group, and drains the matching sidebar badge; the check-state is per-user, and tasks auto-clear the moment the underlying work actually resolves (paid, signed, ruled, etc.) — no separate "mark done" step to forget. Every category below is realism-audited: it maps to a permission/panel the role genuinely has, not a generic to-do. The old clerk daily-task seeds ("Check Discord tickets", "Update daily docket by 9PM") are gone, replaced by print queue / filings / issuance / registry items pulled from the role's real queues.

Two honest caveats: this was browser-verified across all 25 roles (zero missing/duplicate element ids, zero console errors, mobile pass) but not yet checked on an in-city NUI terminal — it needs one hard-refresh look in the real client. And a pre-existing DA/prosecutor law-office widget set (calendar "+ Add", backup, intake shortcuts) remains unwired, same as before the revamp — the sidebar move didn't touch it either way.

👥 Pick a role to preview its dashboard
Judicial & Court Staff
Legal (Advocates & Firms)
Law Enforcement
Citizen

Hon. Marcus Vale (judge)

✉️
⚙️
🔔3
sealcourt_actions order_expungementsentencing submit_recusal Bar Exam required
🗂️ Sidebar nav shipped
Overview My Docket 1 Sessions & Stage Warrants & Bail 1 Actions & Bulletin Tasks & Schedule Notifications 3
✅ Your Tasks (Overview)
Review pending sentencing — CW-1042Sessions & StageToday
Accept docket assignment — CW-1071My DocketToday
Rule on bail — BL-2207 ($25,000)Warrants & Bail1d
Sign property warrant — Property #418Warrants & Bail2d
Verdict pending — CW-1055 deliberation closedSessions & Stage1d
Confirm Courtroom 2 session — 07/22 7:30 PMSessions & StageToday
Respond to recusal request — CW-1088Actions & Bulletin3d

7 realism-audited categories: assignments, bail rulings, verdicts, sessions, sentencing submissions, recusal responses, property-warrant sign-offs. A quiet week collapses to one ✓ All clear row.

Everything the old flat stack listed below still exists — just filed under the pane it belongs to instead of one long scroll:

My Docket — pending assignments (accept / recuse / make private), plus the old Court Level list re-homed here with docket stage badges (street→…→closed, judge-editable, audited).
Sessions & Stage — schedule/cancel hearings, past sessions, per-case stage advance.
Warrants & Bail — Bail Administration (Grant/Deny/Forfeit/Refund) + Property Warrant sign-off, merged.
Actions & Bulletin — Recusal Request, Submit Sentencing (with the three Sentencing Levers: interrogation relief, first-offender relief, conspiracy toggle), Official Letter, Post to City Bulletin.
Tasks & Schedule — the task list above plus the availability grid (Request Leave / Update Availability).
Notifications — the DOJ notifications feed, unchanged in content, now its own pane instead of a card mid-scroll.

Hon. Eleanor Pike (chief justice)

✉️
⚙️
🔔1
Passes EVERY capability full manage_usersmanage_firms Bar Exam required
🗂️ Sidebar nav shipped
OverviewCourt & Recusals 1 Oversight 2Bulletin TasksNotifications 1
✅ Your Tasks (Overview)
Review recusal — CW-1088 (Hon. Marcus Vale)Court & Recusals1d
Bar dues past due — Diane CortezOversightToday
Suspended member awaiting reinstatement — Nathan ColeOversight3d
Law firm registration pending reviewOversight2d
Manage-users request outstandingOversight4d
Post the weekly court closure noticeBulletinToday

6 categories: recusal queue, bar discipline oversight, expunged records, law firm registrations, user management, bulletin posts.

Court & Recusals = Recusal Queue + Court Sessions + Property Warrant sign-off. Oversight = Manage Users (full cap), Bar Discipline Oversight (Waive/Suspend/Reinstate, $2,500/mo dues auto-assess for private practice, 7d unpaid auto-suspends), Expunged Records, Demo/Mock Data toggle, and Law Firms. Bulletin = the City Bulletin composer. Tasks = the task list above + the availability grid.

Priya Nandakumar (master clerk)

✉️
⚙️
🔔5
manage_users_limitedmanage_firms sealreview_filings issue_licensesmanage_templates exam_adminprint_desk Bar Exam required
🗂️ Sidebar nav shipped
OverviewFiling Review 2 Licensing & Exams 1Print & Closings 1 Court & RecusalsOversight 2 City BulletinTasks & Schedule Notifications 5

Master Clerk = clerk's structure + Court & Recusals, Oversight, and City Bulletin — the same three extras Chief Justice gets, since both hold the Bar Discipline Oversight cap.

✅ Your Tasks (Overview)
Review pending filing — Case Filing (Ava Whitmore)Filing ReviewToday
Review pending filing — Marriage Registration (clerk1)Filing ReviewToday
Issue Driver's License — Ricky LafleurLicensing & Exams1d
Approve/deny building permit — Unit #12Licensing & Exams1d
Void/chase unpaid invoice — INV-3312Licensing & Exams2d
Print to Sign — 217 Grove St closingPrint & ClosingsToday
Bar dues past due — Diane CortezOversightToday
Register examination candidate (queued from window)Licensing & Exams1d
Law firm registration pending reviewOversight2d
Recusal queue checkCourt & Recusals3d
Post to City Bulletin — pending draftCity BulletinToday

11 categories total: the clerk's 7 (filings, issuance, permits, invoices, closings, daily, notices) plus registrations, recusals, bar dues, and the urgent-intake pool (surfaced when a firm has an unclaimed jail-call intake).

Filing Review = New Filing composer + Pending Filings queue. Licensing & Exams = Issuance Queue, DOJ Invoices, Permit Queue, and Examinations (candidate register + exam_admin stats + Master Unlock — clerk-only sees candidate register). Print & Closings = Property Closings "Print to Sign". Court & Recusals = Recusal Queue. Oversight = Bar Discipline, Expunged Records, Demo/Mock Data, Law Firms, Manage Users (limited: approve/deny/role-below-judge/reset/suspend, not create/delete).

Tobias Reyes (clerk)

✉️
⚙️
🔔4
review_filingsissue_licenses print_deskexam_register
🗂️ Sidebar nav shipped
OverviewFiling Review 2 Licensing & Exams 1Print & Closings 1 Tasks & ScheduleNotifications 1
✅ Your Tasks (Overview)
Review pending filing — Case Filing (Ava Whitmore)Filing ReviewToday
Review pending filing — Property Deed (Ricky Lafleur)Filing ReviewToday
Issue Weapons License — Diane CortezLicensing & Exams1d
Register examination candidate (window queue)Licensing & Exams2d
Print to Sign — 217 Grove St closingPrint & ClosingsToday
Marriage filing returned for correction — resendFiling Review1d
City Hall print queue checkPrint & ClosingsToday

7 categories: filings, license/exam issuance, permits, invoices, closings, daily print-queue check, and correction notices. No permits or invoices are outstanding today, so those two categories don't render a section.

Filing Review = New Filing composer + Pending Filings. Licensing & Exams = Issuance Queue, DOJ Invoices, Permit Queue, and Examinations (candidate register only — exam_register, no exam-admin stats/master-unlock, Master Clerk only). Print & Closings = Property Closings "Print to Sign".

Dwayne Foster (bailiff)

✉️
⚙️
🔔2
No special capabilities — read-only docket + notify the bench
🗂️ Sidebar nav shipped
OverviewCourt Docket 2 Schedule & TrainingNotifications 2
✅ Your Tasks (Overview)
Secure Courtroom 1 before 6PM — CW-1042Court DocketToday
Confirm Courtroom 2 setup — CW-1071Court Docket2d
Session moved — notify counsel for CW-1042Court DocketToday
Message the bench re: room changeCourt DocketToday

4 categories, all tied to the read-only docket: upcoming sessions, room changes, bench messages, and schedule confirmations — bailiff holds no capability badges, so nothing else can generate a task.

Court Docket = the docket table + "Notify the Bench" (Message Judge / Message Clerk). Schedule & Training = the availability grid + Training Guide.

Lena Ortiz (reporter)

✉️
⚙️
🔔1
No special capabilities — posts transcript links to the Clerk's office
🗂️ Sidebar nav shipped
OverviewTranscripts 2 OfficeNotifications 1
✅ Your Tasks (Overview)
Post transcript — CW-1042 hearingTranscriptsToday
Clerk requested transcript — CW-1055Transcripts1d

4 categories: outstanding transcripts for sessions marked closed, clerk transcript requests, office follow-ups, and schedule confirmations. Only transcripts for closed sessions generate a task — a session still in progress doesn't nag the reporter early.

Transcripts = Upload Transcript URL (prompts case number + URL, sends a structured DOJ message to the Clerk/Admin office). Office = the same shared availability + training pane other non-badge roles get.

Grant Halloran (marshal)

✉️
⚙️
🔔0
No special capabilities Bar Exam required — federal court security via structured messages
🗂️ Sidebar nav shipped
OverviewOffice Notifications 0
✅ Your Tasks (Overview)
Coordinate prisoner transport — CW-1042OfficeToday

Marshal has no capability badges beyond the two mail-compose actions, so this stays a small honest chip row most days — currently one open transport task.

Office = the U.S. Marshal Dashboard blurb + Actions (Request Prisoner Transport, Report Security Incident — both pre-fill a mail compose to Police; a security incident also copies the Judge) + the shared availability/training pane.

Vivian Marsh (district attorney)

✉️
⚙️
🔔6
pd_queuefile_charges court_actionssubmit_recusal print_deskBar Exam required

The DA/prosecutor sidebar workspace still wraps the Cole-Law-styled office chrome (js/lawoffice.js) — the header card and the four quick-link tiles (Court Calendar / Study & Reference / Skill Building / Forms & Filings) sit above the pane nav on every pane, unchanged by the revamp.

Office of the District Attorney SASBA LICENSED · SAN ANDREAS
District Attorney · Vivian Marsh
🗂️ Sidebar nav shipped
OverviewCase Files 1 Court & Bail 1Exam Scores Actions & Bulletin 1Training & Backup Work ScheduleNotifications 6
✅ Your Tasks (Overview)
Open case follow-up — CW-1042 next court 07/20Case FilesToday
Appoint PD — Ava Whitmore (indigent, CW-1090)Court & Bail1d
Rule on bail request — BL-2207Court & Bail1d
File charges — pending report #204Actions & Bulletin2d
Recusal request outstandingActions & Bulletin3d
Court session today — CW-1042 Courtroom 1Court & BailToday
Post to City Bulletin — pending draftActions & BulletinToday

7 categories: case files, PD appointments, charge filings, bail administration, recusal requests, court sessions, bulletin posts. Exam Scores (read-only PD Bar sittings) is listed but doesn't generate a task — it's an information pane, not a queue.

Case Files = Client Files, now correctly labeled "Case Files — Prosecution" (fixedisProsecution was previously hard-coded false) + Actions (Recusal Request). Court & Bail = Public Defenders queue (pd_queue, DA-only), Bail Administration, Court Sessions, Court Calendar. Exam Scores = read-only PD Bar sittings. Actions & Bulletin = File Charges / Request Evidence + Post to City Bulletin. Training & Backup = Study & Reference, Skill Building, and the still-unwired backup widget (unchanged since before the revamp). Work Schedule = the availability grid.

Nathan Cole (prosecutor)

✉️
⚙️
🔔2
file_chargescourt_actions submit_recusalBar Exam required

Same Cole-Law office chrome as the DA, but the prosecutor's sidebar is thinner: no PD queue, no Bail Administration, no Court Sessions, no City Bulletin, no Exam Scores.

Prosecutors' Office UNLICENSED
Prosecutor · Nathan Cole
🗂️ Sidebar nav shipped
OverviewCase Files 1 Actions & BulletinTraining & Backup Work ScheduleNotifications 2
✅ Your Tasks (Overview)
Open case follow-up — CW-1090 just filedCase FilesToday
File charges — evidence attached on report #204Actions & Bulletin1d

4 categories: case files, charge filings, evidence requests, notifications-driven follow-ups. No recusal or PD-queue tasks — the prosecutor role doesn't hold those caps.

Case Files = "Case Files — Prosecution" + New Client + Actions (Recusal Request). Actions & Bulletin = File Charges / Request Evidence (no City Bulletin composer — DA-only). Training & Backup and Work Schedule mirror the DA's panes.

Diane Cortez (private attorney)

✉️
⚙️
🔔1
submit_recusalBar Exam required fixed register dropdown now reads private_attorney (was attorney)

Private-practice roles get the standard sidebar workspace now — the full-page DOJ LAW OFFICE takeover (Cole-Law-styled SPA, lawsites/index.php) is still one click away from the Overview pane, not a separate app to remember to open.

🗂️ Sidebar nav shipped
OverviewMy Cases 1 Intake Queue 1Retainers 1 Forms & FilingsInvoices & Bills Training & StudyCourt Actions Notifications 1
✅ Your Tasks (Overview)
Urgent jail call — Marco Vidal (unclaimed)Intake QueueToday
Retainer awaiting signature — Ava Whitmore (CW-1090)Retainers1d
Bar dues due 07/24 — $2,500Invoices & BillsToday
Continue attorney training — 8/13 modulesTraining & Studyongoing
Hearing scheduled — CW-1055, respond to court dateCourt Actions1d

8 categories: retainers, intake claims, bar dues, training modules, filings, invoices, court actions, case follow-ups. Urgent jail-call intakes are the one category that also pushes a red badge onto the sidebar Intake Queue pill.

My Cases = client files + "Represent Myself" cases. Intake Queue & Retainers = Firm Portal (claim/decline requests, urgent jail-call alerts, matter assignment, Firm Overview) + retainer drafting (an attorney can't attach without a signed retainer; client-signed from their own dashboard; court-appointed counts as signed by appointment; self-rep is exempt). Forms & Filings = self-representation filing buttons. Invoices & Bills = My Invoices, Property Bills, and the Bar Standing card ($2,500/mo dues, private-practice only; 7d unpaid auto-suspends; Master Clerk waives/reinstates). Training & Study = the 13-module curriculum + timed practice drill + Examinations/Study. Court Actions = Recusal Request + Licensing.

Jordan Blake (public defender)

✉️
⚙️
🔔2
submit_recusalBar Exam required

Same law-office pane structure as a private attorney, plus one extra Court Actions button (Submit Criminal Report to DA).

🗂️ Sidebar nav shipped
OverviewMy Cases 1 Intake Queue 1Retainers Forms & FilingsInvoices & Bills Training & StudyCourt Actions Notifications 2
✅ Your Tasks (Overview)
Appoint yourself — defense request DR-14Intake Queue1d
Submit criminal report to DA — CW-1090Court Actions2d

Same 8-category set as a private attorney; PDs are bar-dues exempt so that category never shows for this role.

Mina Sato (paralegal)

✉️
⚙️
🔔0
review_filings
Both known discrepancies are fixed:
  • fixed The dedicated "Paralegal — Filing Tools" panel (Case/Marriage/Property/Professional buttons) now renders — it was previously unreachable behind the LAW_OFFICE_ROLES branch.
  • fixed Recusal was correctly left unwired and gap-flagged for a plain paralegal — paralegals still have no court-action/recusal authority by design (an attorney must take that step), so the button is now simply not shown for this role instead of rendering inert.
🗂️ Sidebar nav shipped
OverviewForms & Filings Training & StudyNotifications 0

Paralegals get the thinnest law-office cut: no My Cases, Intake Queue, Retainers, Invoices & Bills, or Court Actions pane — those still require a licensed attorney.

✅ Your Tasks (Overview)
Continue attorney training — 3/13 modulesTraining & Studyongoing

Only training generates a task for this role today — a quiet filings queue collapses that category away.

Forms & Filings = the Paralegal — Filing Tools panel (Case/Marriage/Property/ Professional buttons, drafts for the clerk's review queue on behalf of the office — fixed, previously unreachable behind the LAW_OFFICE_ROLES branch) + the DOJ LAW OFFICE takeover link. Training & Study = the same 13-module curriculum + practice drill as attorneys, no biweekly standing requirement, no invoices (paralegals are bar-dues exempt). No recusal button — correctly left off by design, not gap-flagged and inert.

Officer J. Boyd (police)

✉️
⚙️
🔔3
mdtbackground_checks — no Scheduling & Training was previously missing; now folded in
🗂️ Sidebar nav shipped
OverviewMDT 2 Schedule & TrainingNotifications 3
✅ Your Tasks (Overview)
Serve warrant — Ricky Lafleur (Grand Theft Auto)MDT1d
Resolve BOLO — 46XYZ221MDTToday
Clear/deny background check — Diane Cortez, Weapons LicenseMDT1d
DA requested evidence — CW-1042NotificationsToday

4 categories: warrants, BOLOs, custody/bail roster, background checks. police and fbi share this exact set — the previous flat stack had no Daily Tasks or Scheduling card for police at all; both are now standard panes.

🖥️ Mobile Data Terminal Officer: J. Boyd
Dispatch Person Lookup Plate Lookup Warrants BOLOs Reports Bail Roster Background Checks License Lookup
Dispatch FeedRefresh
P1 10-90 Bank Alarm — Fleeca, Legion Sq
📍 Legion Square · Caller: Anonymous · POLICE
6:04 PM
P2 10-50 Traffic collision
📍 Vinewood Blvd · Caller: Diane Cortez
5:47 PM
Search by name or citizen ID…
Search
Ricky Lafleur CID: CW77413 · Phone: 555-0192
⚠ 1 ACTIVE WARRANT
Rap Sheet
Warrants (1)
Arrest — Grand Theft Auto · Issued by Officer J. Boyd
Citations (2)
Speeding, No insurance · $850 · paid
Bookings (1)
Licenses (2)
Criminal Records (3)
Enter plate…
Run Plate
🚨 ACTIVE BOLO — FLAGGED PLATE
46XYZ221
Model: Sultan RS · Owner: Ricky Lafleur (CW77413)
Garage: Legion · Status: Out / In use
Issue Warrant
Subject name *
Citizen ID
Arrest ▾
Reason *
Issue Warrant
Active WarrantsRefresh
Ricky Lafleur arrest (CW77413)
Grand Theft Auto · Issued by Officer J. Boyd · 07/18/2026
Resolve
Create BOLO
Person ▾
Subject
Plate
Create BOLO
Active BOLOsRefresh
vehicle 46XYZ221
Blue Sultan RS, fled traffic stop · By Officer J. Boyd
Resolve
File Criminal Report / Booking
Defendant name *
Citizen ID
Bodycam URL
Charge — e.g. (PC 31.03) Theft
new ☑ Cooperated in interrogation (−25% jail, needs justification) ☑ First-offender fine relief (−50%, auto-detected) ☑ Conspiracy to Commit (½ jail+fine, no license points on traffic)
+ Add ChargeFile Report
ReportsRefresh
#204 — Ricky Lafleur Case CW-1042
Grand Theft Auto, Evading · Officer J. Boyd · 07/18/2026
pending

removed, not a gap Several router.php stub actions this review previously listed here (submitReport, serveWarrant, reportManhunt, approve/denyReport, getChargedCases, getPendingReports) were found unused and deleted — those flows moved to structured DOJ mail instead of ever being implemented as endpoints.

Bail RosterRefresh
BookingDefendantChargesBailBail StatusStatus
BK-5521Ricky LafleurGTA$25,000setin_custody
BK-5510Marco VidalAssaultNOT BAILABLEserving
Background Check QueueRefresh
Weapons License — Diane Cortez
CID: CW51220 · 3 record(s) · 1 active warrant(s) · Applied 07/18/2026
ClearDeny
Citizen ID…
Look Up
TypeLicense No.StatusPoints newExpires
Driver'sDL-77413valid907/2027
WeaponsWL-77413suspended

new License Points — traffic convictions accrue points; 12 auto-suspends the license for 7 days, with 30-day decay. Visible here on the MDT and on the citizen's phone app.

📖 Training Guide
Open Training Materials

Harriet Okonkwo (inspector)

✉️
⚙️
🔔1
review_filingsfile_inspection Bar Exam required
🗂️ Sidebar nav shipped
OverviewInspections & Reports 2 Schedule & TrainingNotifications 1
✅ Your Tasks (Overview)
New complaint — Cutie's Coffee (health)Inspections & ReportsToday
Flag violation to DA — 1 open note from last passInspections & Reports2d

Inspections & Reports = File Inspection Report / Flag Violation to DA (health, business, and building inspections all live in one office) + the clerk's Pending Filings queue reused as a "past reports" view.

Ava Whitmore (citizen)

⚙️
🔔0
No special capabilities — login-only self-service; can only mail the Clerk; no Scheduling / Training / mail-bell-by-default
🗂️ Sidebar nav shipped
OverviewMy Filings & Cases 1 My Invoices & Bills 1License & Study Legal Help & RetainersNotifications 0
✅ Your Tasks (Overview)
Pay unpaid invoice — INV-3312 Bar Examination fee, $1,200My Invoices & Bills1d
Property rent due 07/25 — Vinewood Apt 4B, $850My Invoices & BillsToday
Your Bar Examination code was issued — eligible to sitLicense & Study2d

6 categories: invoices due, filings status, exam eligibility, license points, retainer requests, case updates. Citizens have no capability badges, so this is the plainest task card of the 25 roles.

My Filings & Cases = File with the DOJ (self-representation) + My Cases. My Invoices & Bills = My Invoices + My Property Bills (read-only, pay in-game with /bills). License & Study = Examinations & Study + Licensing + License Points (visible on the phone app too). Legal Help & Retainers = requesting representation into a firm's intake queue and viewing/signing a drafted retainer.

🧾 My Invoices Refresh
Invoice #DescriptionAmountStatusIssued
INV-3312Bar Examination fee$1,200unpaid07/17/2026
INV-3290State ID replacement$250paid07/11/2026

Pay unpaid invoices in person at the city service window at City Hall (the Invoices desk).

🏠 My Property Bills Refresh

Due: $850 · Overdue: $0 · Paid (history): $3,200

PropertyKindAmountDueStatusEscalation
Vinewood Apt 4Brent$85007/25/2026due

Read-only — pay property bills in-game with /bills.

🎓 Examinations & Study
Take an Examination

Enter the code issued to you (Bar or DMV) after your fee is paid.

Study — Bar ExamStudy — DMV Written Test
Driver's Handbook & Bar Study Guide →
✔️ Licensing
Apply for a License

Submits your application to the Licensing Division. A fee invoice is issued if one applies.

✍️ File with the DOJ (Self-Representation)

You have the right to file any DOJ form yourself, without an attorney, and to represent yourself. Filings still go to the Clerk's queue for review.

File a CaseFile a MarriageFile a Property DeedFile a Professional Registration
📁 My Cases Refresh
CW-1090 — Criminal
Filed · Counsel: Jordan Blake (PD)
Represent Myself
🗂️ The other 10 roles — same shipped pattern, summarized

The 25 shipped roles include several this page never mocked individually (they weren't part of the original review's role picker). All of them are on the identical sidebar workspace as everything above.

RoleSidebar panesTask categories / notes
adminSame as master_clerk (clerk's 7 panes + Court & Recusals, Oversight, City Bulletin)Same 11 categories as master_clerk — admin is master_clerk's superset.
fbiOverview · MDT · Schedule & Training · NotificationsSame 4 categories as police (warrants, BOLOs, custody, background checks) — same MDT tabs, federal framing only.
itTerminal Board3 categories: locked terminals, incidents, resets. Smallest workspace of the 25 — one pane besides Overview/Notifications.
governorExecutive Office · BulletinHonest always-visible chips, no manufactured tasks — the role has ceremonial/bulletin capability only, so Overview stays a chip row.
vice_governorExecutive Office · BulletinSame as governor.
mayor (and the other city mayors)Executive Office · BulletinSame as governor — each mayor sees their own office framing, identical pane set.

That's 15 roles mocked in full above + these 6 summarized = 21 of the 25; the remaining 4 are further per-mayor variants of the same "Executive Office · Bulletin" pattern.

Still to do / known gaps

CrestWood DOJ review site · mock data only · faithful to js/dashboard.js, mdt.js, reports.js, lawoffice.js, court.js and api/capabilities.php.