Stats & BI (self-service)
The Stats tab is a dedicated BI workspace (Admin/Teacher): exploration of analytical data, building and rearranging visualizations, and a conversational assistant. The Parent portal gets a dedicated, simplified, mobile-first Assistant tab.
Admin/Teacher workspace
- Global filter bar: period (presets + range), class, subject, session, student, teacher (Admin). Filters cascade.
- Field catalog: business metrics and dimensions; advanced mode for the authorized technical columns.
- Central canvas (GridStack): move, resize, add, delete, reconfigure
widgets. Saved in the browser (
nexora.stats.canvas.v1); Reset dashboard button. - Side chat: conversational scope independent of the canvas filters.
Ambiguous scope confirmation, server-computed evidence, skills used,
Add to canvasactions. - Refresh: detects a new data version (local or S3/R2 fingerprint) and reloads the DuckDB catalog atomically. On failure, the previous version stays active.
Semantic catalog
Queries go through a semantic compiler (QuerySpec), never free SQL. Datasets:
class_sessions, student_sessions, engagement_windows,
session_timeline, student_history. Metrics: engagement, sustained
attention, on-task, attention shifts, drift, recovery, flagged students,
drift episodes, yawns, synchrony, engagement level and A–G domains.
Chart types: KPI, line, bar, stacked bar, scatter, histogram, heatmap, table, pie/donut — deterministic suggestion.
Assistant
- Answers in the language of the last message.
- Scope resolved server-side per role; confirmation if ambiguous.
- Values and method displayed (Evidence) without raw SQL.
- Data pseudonymized before OpenRouter and before logs.
- Markdown analytics skills (Admin) injected and listed.
Parent
- Assistant tab: conversation, value cards, simple charts, anonymous class comparisons (groups ≥ 5 students).
- No third-party nominative data; fatigue/drift described as observations.
- Reports usable only if
publishedand belonging to the child.
Source:
api/stats/*,api/admin/analytics-skills,api/parent/chat.