Dashboard
The Dashboard is the admin analytics hub for TA training programs. It returns a single bundled response — header summaries, primary and secondary metric panels, rubric breakdowns, simulation overviews, and inline attempt history — so program coordinators can evaluate how TAs are performing in office-hours simulations.
Dashboard is a view on the attempt artifact — one endpoint
(POST /attempt/dashboard) that takes a filter body and returns a
DashboardBundleResponse. It is not its own artifact, so there is no
/dashboard/... URL space; sibling operations (attempt search,
export, refresh) live at the attempt root.
![]()
What is Dashboard?
Dashboard aggregates training data across all TAs, cohorts, and simulations into a single analytics surface. It answers questions like:
- How are TAs scoring on Communication Skills and De-escalation rubrics this semester?
- Which simulations (e.g., Confused Student, Aggressive Student) have the lowest pass rates?
- What is the overall completion percentage across departments?
- How has average score trended over the past 30 days?
![]()
Dashboard returns header_metrics (total attempts, average score, completion percentage, first-attempt pass rate), primary_metrics and secondary_metrics panels, rubric/parameter/scenario breakdowns, score thresholds, AI-generated insights, and inline history with pagination.
Header metrics at a glance
Quick Start
CLI
Calls below use
$GLOW_INSTANCE_URL+$GLOW_TOKEN— see Authentication to export them once.
# Fetch the full dashboard bundle (all metrics, rubrics, simulations)
glow attempts dashboard
# Scope to a specific cohort and date range (body merges into the request)
glow attempts dashboard --body '{"cohort_ids": ["cohort-abc"], "start_date": "2025-01-01", "end_date": "2025-06-30"}'
# Sibling operations on the attempt artifact (NOT under /dashboard)
glow attempts search --body '{"page_size": 25, "sort_by": "score", "sort_order": "desc"}'
glow attempts export
glow attempts refreshAPI
# Get dashboard bundle — single endpoint, filters in the body
curl -X POST $GLOW_INSTANCE_URL/attempt/dashboard \
-H "Authorization: Bearer $GLOW_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"department_ids": ["dept-cs"],
"start_date": "2025-01-01",
"end_date": "2025-06-30"
}'
# Search attempt history (separate endpoint on the attempt artifact)
curl -X POST $GLOW_INSTANCE_URL/attempt/search \
-H "Authorization: Bearer $GLOW_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"page_size": 20,
"sort_order": "desc"
}'Filtering and Scoping
Dashboard supports composable filters in the body so you can drill down to exactly the data you need:
| Filter | Field | Example |
|---|---|---|
| Date range | start_date, end_date | "start_date": "2025-01-01" |
| Cohorts | cohort_ids | ["fall-2025-cs101"] |
| Departments | department_ids | ["dept-cs", "dept-math"] |
| Simulations | simulation_ids | ["sim-confused-student"] |
| Roles | roles | ["ta", "lead-ta"] |
| Rubric picker | rubric_ids, rubric_search | "rubric_search": "de-escalation" |
| Scenario picker | scenario_ids, scenario_search | "scenario_search": "passive" |
| Parameter picker | parameter_ids, parameter_search | "parameter_search": "policy" |
| Single TA | target_profile_id | UUID of the TA profile |
When target_profile_id is provided, the response includes profile_name, profile_emails, profile_primary_email, and profile_role for the scoped TA.
Rubric breakdown
Understanding the Response
The DashboardBundleResponse is organized into sections:
header_metrics— Top-line summary cards: total attempts, average score, completion percentage, first-attempt pass rate.primary_metrics/secondary_metrics/footer_metrics— Detailed metric panels with trend data, hover tooltips, and breakdowns.simulations— Metadata for each simulation (name, scenario count, rubric mappings).scenarios— Per-scenario metadata for drill-down.rubrics/parameters/fields— Rubric and parameter breakdowns (e.g., Communication Skills, Policy Knowledge, De-escalation).thresholds— Score threshold configuration for pass/fail determination.insights— AI-generated insights per section, highlighting patterns and anomalies.history— Inline paginated attempt history withHistoryItemrows.analytics— Filter facets (department options, cohort options, role options, date range boundaries) for rendering dropdowns.
Sibling: Attempt History Search
For larger paginated history tables, use the attempt search endpoint
directly — it returns the same HistoryItem shape with full pagination:
curl -X POST $GLOW_INSTANCE_URL/attempt/search \
-H "Authorization: Bearer $GLOW_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"target_profile_id": "ta-profile-uuid",
"scenario_ids": ["scenario-confused-student"],
"sort_by": "date",
"sort_order": "desc",
"page_size": 10
}'Each HistoryItem includes attempt_id, simulation_name, score, score_status (pass/fail), persona_names_junction, num_scenarios_completed, and action flags like show_view and show_continue.
Exporting
# Export attempts as a denormalized ZIP (sibling endpoint, not under dashboard)
glow attempts exportThe export endpoint returns a base64-encoded ZIP with content, file_name, mime_type, and row_count.
Common Operations
| Task | CLI | API Endpoint |
|---|---|---|
| Dashboard metric bundle | glow attempts dashboard | POST /attempt/dashboard |
| Attempt history search | glow attempts search | POST /attempt/search |
| Export attempts | glow attempts export | POST /attempt/export |
| Refresh MV caches | glow attempts refresh | POST /attempt/refresh |
Related
- Attempt API Reference — every endpoint on the attempt artifact
- Attempts CLI Reference — every
glow attempts ...command - Reports — aggregate training reports (sibling view,
POST /attempt/report) - Leaderboard — score rankings (sibling view,
POST /attempt/leaderboard) - Practice — practice-mode view (sibling view,
POST /attempt/practice)