How we score programs
The seven dimensions
Each dimension has a 1, 3, and 5 anchor — a written description of what the rating means. Reviewers see the anchor before they pick the number, so a 4 in Organization means roughly the same thing across different reviewers and programs.
- How it's run. Communication, scheduling, ice-time discipline, refunds.
- Development & coaching. How much did your player actually learn?
- Playing-time fairness. How were ice-time decisions made?
- Cost vs. value. Was the price honest for what you got?
- Culture & sportsmanship. What did the rink feel like to be in?
- Pathway. Does playing here open doors?
- Parent & family scene. What was there to do for the family between games and after?
The aggregate score
agg_overall = mean(seven dimension averages). Equal weight. We do not weight by reviewer tenure, helpful-vote count, or review length in v1 — those are v1.1 considerations and are marked as a seam in the recompute function. A program with three organization-focused reviewers and three development-focused reviewers gets the same equal-weight read as one with a balanced mix.
The 5-review suppression rule
We do not publish an aggregate until a program has at least 5 verified reviews. Below that, a single strong opinion swings the score. We'd rather say “not enough reviews yet” than mislead. This threshold applies to the overall score and every dimension average.
On profiles below threshold, we show: the program name, type, location, age groups, governing body, established year, website, and an explicit notice that the score is suppressed. No partial number.
What a verified review requires
- Verified email (magic-link sign-in).
- Declared standing (parent / player / coach / volunteer / board).
- Declared status (current / recently left).
- Numeric scores on all seven dimensions.
- Non-empty “what works” paragraph.
- Non-empty “what to warn” paragraph.
- No spam / abuse / personally-identifying info about minors (enforced at submit time + on moderation).
What we don't score
- Individual coaches by name. We score the program, not the person. Coaches turn over.
- Individual players. No player database, no player ratings.
- Game outcomes.Wins and losses don't enter the score. A program that goes 4–28 can still rate well on Development and Culture; a championship team can rate poorly on Playing-time fairness.
External quotes
The “what people are saying elsewhere” section on each program is separate from the score. Those quotes are sourced from public posts (Reddit, HFBoards, press) with verbatim text and live URLs. They're shown for context — they don't enter the aggregate. We aim for a balanced pair (positive + critical) where available, and an explicit “captured on” date so readers can judge freshness.
Geography & categorization
Programs are classified by:
- Type: tournament, league, or association (club, MHA, prep school).
- Sanctioning: sanctioned (under a National Governing Body) or rogue (independent). “Rogue” is a status descriptor, not a judgment.
- Country / province / region: region is sub-province (e.g. “Lower Mainland / Vancouver”).
- Age groups: U7 through U18, Junior A/B, Major Junior, Prep, Adult, Recreational.
- Levels: A, AA, AAA, Tier1, Tier2, House, Select, Rep, Prep, and Female (filter chip on /rankings).
- Months: tournaments and leagues have start_month and end_month, so the “in season this month” filter works year-round.
Known limitations
- No credibility weighting yet. All reviewers are equal in v1. v1.1 adds weighting.
- No proof-of-attendance at the player level.We verify the email, not the roster. A reviewer can claim to be a parent at a program they're not in. We rely on standing declarations, moderation, and the report queue to catch bad-faith reviews.
- Limited international coverage. Most programs are Canadian and American. European tournaments are seeded but under-represented.
- No game-level data.We don't pull box scores or roster moves. Some categorical fields are stale until an admin or operator updates them.
Related: how it works · glossary · FAQ