Red Stet
← Back to Help
Help · For admins · Tier 5 — Admin & account

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.

Legitimate-cause access is audited. Integrity and safety investigations go through documented requests, and every one leaves a row in the audit log.

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

Email feedback.

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.