Who has answered, what they ranked, and the roster the rankings produce. Nothing here is final until you confirm it — placement writes to a proposal, not to the season.
{{ bannerText }}
{{ actionErrText }}
{{ t.label }}
{{ t.value }}
{{ t.note }}
Sign-up status
{{ statusCaption }}
ATHLETE
SIGN-UP
ATHLETE
SIGN-UP
{{ p.leftName }}
{{ p.leftLabel }}
{{ p.rightName }}
{{ p.rightLabel }}
Roster not loaded — check the Supabase connection.
Ranking grid
1 IS FAVORITE · BLANK MEANS NOT RANKED
ATHLETE
SOCCER
V-BALL
FRISBEE
DANCE
TOP CHOICE
{{ r.name }}
{{ r.soccer }}
{{ r.volley }}
{{ r.frisbee }}
{{ r.dance }}
{{ r.top }}
No sign-up surveys in yet — the grid fills in as kids submit their rankings.
Placement proposal
FLOOR 5 · CEILING 15 PER SPORT
Re-runnable. Overwrites the previous proposal, never the season roster.
{{ s.name }}
{{ s.count }}
{{ s.flag }}
ATHLETE
PLACED IN
CHOICE
WHY
{{ p.athlete }}
{{ p.rank }}
{{ p.note }}
No proposal yet. Run placement once the sign-up surveys are in — it needs at least one ranking per athlete.
Reflection check-ins
COACH FEEDBACK IS ADMIN-ONLY · NEVER SHOWN TO FAMILIES
ATHLETE
SPORT
CONFIDENCE
ENJOYED
WANTS NEXT
{{ f.athlete }}
{{ f.sport }}
{{ f.confidence }}
{{ f.enjoyment }}
{{ f.next }}
No check-ins submitted yet. They arrive at the end of each rotation.
HOW TO USE THIS
Chase anyone still marked missing on the sign-up list, glance at the ranking grid for anything odd, then run placement. Review the proposal — the sport column is editable, so any kid can be moved by hand — and the count cards flag a sport under 5 or over 15. When it looks right, copy the proposal into the season roster; that's the one step that's still done deliberately, in Supabase, so nothing goes final by accident.