Admin reporting & analytics
What an admin sees about a school's use of Red Stet: the org dashboard's six tabs, per-teacher feed, seat/cost surfaces, audit log, SIS endpoint, and what reporting can't reach.
The org dashboard SHIPPED
Verified org admins see an "Org" button in the top bar. It opens a slide-in dashboard scoped to their district or school. Six tabs:
- Overview — active teachers, active students, classrooms in scope, submissions and recordings this week, the current 30-day integrity rollup.
- Teachers — one row per teacher: classrooms owned, assignments created, submissions graded, recordings reviewed.
- Classrooms — one row per classroom: on-time rate, attempt distribution (1 / 2 / 3+), recording adoption rate.
- Writing patterns — school-wide typing-rhythm distribution. K-anonymity gated; renders only at 10+ samples.
- Seats — contracted, active, and inactive seat counts.
- Audit — reverse-chronological feed of every admin-side action.
Daily crons precompute the heavy aggregates. Counts under the k-anonymity floor are silently omitted.
Per-teacher usage SHIPPED
Each teacher has an activity feed backed by teacherActivity.recentForTeacher — last 30 days of submission state changes, inbound student messages, and recording uploads, newest first.
The admin rollup lives on the Teachers tab: classrooms owned, assignments created, submissions graded, recordings reviewed for every teacher over the chosen window.
Cost & seat reporting SHIPPED
Each user carries a subscriptionTier (free, plus, institutional) and a stripeCustomerId when they're the billing party. The Seats tab rolls these into contracted, active, and inactive counts from seatAssignments.
Stripe-side detail (invoices, payment method, billing contact) lives in Account & billing, not here. Per-tier visibility is gated by featureGates.
What admins can't see SHIPPED
Reporting can't reach any of the following, even though the data exists elsewhere.
Individual student writing
Admins see that a student submitted, when, how many attempts. The content — essay, marks, annotation comments — isn't reachable from reporting. The only path to a document is legitimate cause: a teacher escalating an integrity case, or a parent/legal request. Both are out-of-band requests, not dashboard clicks.
Individual keystroke streams
The raw Provenance event stream lives on the student's device — see What's recorded. Teachers see rendered playback, not raw keystrokes. Admins see neither.
Individual flag-decision history
"Confirmed / non-issue / pending" decisions on recordings stay with the teacher.
Individual messages
Assignment messaging threads (student↔teacher and teacher↔group) are visible only to participants. Admins can't read message bodies.
Admin audit log
Every admin action that touches data writes a row. The Audit tab renders it reverse-chronologically: who, what, when, target. Exports, role changes, seat assignments all log the same way.
Append-only — admins read, never edit. Visibility follows scope: a school admin sees their school; a district admin sees the district plus every school under it.
SIS / warehouse integration
Schools on the warehouse integration pull aggregate integrity rates as JSON via /api/sis/integrity-rates?schoolId=…. Response mirrors the dashboard rollup: windows, subject breakdowns, totals, reviewed counts, review rate.
Authenticates via the same admin session as the dashboard, so a warehouse cron needs an admin to mint a session. A dedicated institutional API token ships with the institutional-tier seat-management page.
Related
- School account setup — provisioning, billing, the admin role.
- SSO setup — how admins and teachers sign in.
- What's recorded — scope of Provenance data.
- Integrity investigation — the per-document workflow that produces flag decisions.
- Data retention & deletion — how long data lives, how to request removal.
- Connecting Red Stet to your LMS — LTI 1.3 sync.
- Back to the help library.
Seats & provisioning log
The Organization panel in the teacher left rail has three tabs: Seats, Activity, SSO. District or school org admins see it; no one else.
The Seats tab shows the usage snapshot: verified teacher count, co-teacher count, TA count, students enrolled, active seats billed, outstanding invites. Invite one teacher at a time (email + role) or bulk via CSV (email,role). Every invite writes a row to the provisioning log.
The Activity tab is the provisioning log: every user-provisioning event, newest first. Sources: manual invites, bulk CSV uploads, SSO sign-ins (when configured), Clever / ClassLink roster syncs (when credentials land). Each row carries an ok / warn / error pill and a short message. "Load older" pages back.
Teacher-verification events from the legacy dashboard surface here too — backfillFromTeacherActivity copies past approvals so Activity has history from day one.