Officer dashboards
4-role officer model: super_admin · finance_officer · content_admin (merged programs + media) · support_officer. All share the same dark sidebar shell and design tokens — distinct from the learner-side topbar pattern.
Super Admin
Platform-wide visibility, full access
MRR · active learners · subscription mix · system health · org clients · top programs · recent activity
OpenFinance Officer
Subscriptions, invoices, refunds, SST
MRR/ARR · failed payments queue · refunds pending · invoice generation · SST tracking · churn cohort
OpenContent Admin
Programs + media library
Programs CRUD · publishing workflow · video upload to Bunny · transcripts · captions · enrollment analytics
OpenSupport Officer
Read-only · ticket inbox · impersonate
Open tickets · avg response · user lookup · impersonate-for-debug · system notices broadcast
OpenRole hierarchy
All 4 roles share read access to learner data scoped by their function. super_admin can impersonate any officer for debugging. support_officer can impersonate learners only.
super_admin
All permissions · platform owner tier (Kamal + Azie)
finance_officer
Money modules only · no content edit · audit-grade
content_admin
Programs + media · no payment access · publish authority
support_officer
Read-only · ticket inbox · learner impersonate