Route
/benchmarks — BenchmarksPage.vue
Access
- Summary cards — available to all tiers
- Benchmark grid — Premium only (standard users see upgrade prompt)
- Position chart — available to all tiers
Filter Sidebar (all functional)
| Filter | Type | Effect |
|---|---|---|
| View mode | Radio group | Controls which comparison columns show (Conference / Peer / School Only) |
| Conference | Locked display | User’s conference, not editable |
| Reporting Period | Dropdown | From /benchmarks/filters → reporting_periods |
| Sport | Dropdown | Filters all 3 queries (summary, grid, positions) |
| Position | Dropdown | Filtered by selected sport, narrows summary + grid |
| Eligibility Year | Chip buttons (All, 1-5) | Filters to athletes in that year |
| Comp Type | Chip buttons | Filters to deals with that compensation type |
| Peer Group | Conference chips | Shows custom peer group (configured in Settings) |
Summary Cards (4)
Each card shows “Yours” vs “Conference Avg” with a delta percentage pill.- Avg NIL / Athlete —
total_value / athletes_with_dealsfor school vs conference - Avg Agreement Value —
AVG(total_value_usd)across filtered deals - % Athletes with Agreement — athletes with deals / total athletes
- Total NIL Value —
SUM(total_value_usd)for school vs conference
Benchmark Grid (Premium)
Three-way comparison table: Your School vs Conference vs Peer Group. Each group shows Avg / Guaranteed / Performance sub-columns. Delta columns show percentage difference vs Conference and vs Peer Group. How it’s computed (GET /benchmarks/grid):
- School:
_agg()withuniversity_id == user's - Conference:
_agg()withuniversity_id IN (same conference) - Peer Group:
_agg()withuniversity_id IN (universities in peer group conferences) - Percentiles: PostgreSQL
percentile_cont(0.25/0.50/0.75)on per-athlete totals
Position Bar Chart
Vertical bar chart showing Avg NIL per position for the selected sport. Three bars per position (Yours / Conference / Peer) with hover tooltips showing exact values and athlete count. Chart mode toggle (Total / Guaranteed / Performance) changes which value drives the school bars:- Total →
school_avg - Guaranteed →
school_avg_guaranteed - Performance →
school_avg_performance
Backend Engine
All benchmark data is computed from real PostgreSQL aggregation queries — no hardcoded or fake values. The_agg() helper function accepts sport_id, position_id, eligibility_year, and comp_type filters and applies them to every aggregation (school, conference, peer).