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, and was the program comprehensive enough on its own?
- 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 = weighted_mean(seven dimension averages). Each review carries a credibility weight in [0.25, 3.0]; the aggregate is the weight-multiplied mean. A bog-standard anonymous single-review submission lands at weight 1.0 and contributes normally; reviewers who share more and post balanced reviews consistently can climb to ~3.0. The weight is bounded so no individual reviewer can dominate the 5-review threshold aggregate.
Credibility weighting: what raises a review's weight
Computed per-review by compute_review_weight(). Starts at 1.0, then adds:
- Transparency (max +0.60):
+0.10if you show your role,+0.15if you show your specific relationship (division/tier/current-or-former),+0.35if you show your full name. Each is opt-in, its own toggle, default off. - History (max +0.75):
+0.15per prior published review by the same reviewer, capped at five prior reviews. Repeat reviewers across multiple programs demonstrate calibrated judgment over time. - Balance (+0.15):both required passages (“what works” and “what to warn”) meet the 60-word floor. The threshold is enforced at submit time, so this bonus is the norm, but it stops a thin or one-sided submission from carrying the same weight as a fuller one.
- Community signal (max +0.40):
+0.05per helpful-vote from other signed-in users, capped at eight votes. Lets the audience nudge reliable voices upward over time.
Floor: 0.25 · ceiling: 3.000. Weights are recomputed every time a review is added, updated, or the program aggregate is refreshed.
The 5-review release rule
We do not publish anything review-shaped (not the aggregate, not the dimensions, not the individual reviews themselves) until a program has at least 5 verified reviews. Below threshold a single opinion would swing the public read; above threshold every review releases together so no single voice is heard in isolation. Reviewers still get verifiability behind the scenes: we know who wrote each review, and that lets the score be audited.
On profiles below threshold, we show: the program name, type, location, age groups, governing body, established year, website, external public quotes (separate from reviews), and an explicit “n of 5” status. No partial score, no leaked first reviews.
Identity opt-ins
Every review publishes as “Verified reviewer” by default. Three separate toggles on the last step of the review flow let the reviewer choose to publish more:
- Show role:adds “Verified parent / coach / etc.” to the byline.
- Show relationship: adds the division, tier, season, and current-or-former status.
- Show full name:replaces “Verified reviewer” with the name the reviewer types in. Stored on their profile and reused on future reviews if they opt in again.
None are required. None are automatic. Each raises the review's credibility weight as described above. The defaults preserve full anonymity to the program and to other families.
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're trying to do here
The Centre Line scores programs on their systems: communication, expectations, fairness, value, development, culture, pathway, family experience. The goal is accountability for those systems, so families can invest time and money with better information.
What we're nothere to do: personally call out specific coaches, board members, or other individuals. Reviews that target a person rather than a program system get edited or removed in moderation. The platform doesn't score coaches by name and never will.
What we dowant to surface and reward: the volunteers, coaches, board members, and parents who make hockey work in their communities. The “what this program does well” passage of every review is the recognition channel today; a structured contributor-recognition layer is on the roadmap.
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 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.
- History weighting biases toward early adopters. Reviewers who joined and posted across multiple programs early accumulate history-bonus weight. That's a feature (sustained participation = signal) but it means new reviewers start at the floor. Bounded at +0.75 so it can't dominate.
- 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