# Campus Rink recruiting

Open **Around the Rink → Player profiles → Recruiting**, or `#recruiting`.

The September 10, 2026 board contains **1,313 distinct records**: 966 Division I men’s recruits/prospects, 345 Division I women’s recruits, and one published commitment each for DII and DIII men. **92 players have sourced statistics**. There are 33 tracked junior players with no commitment loaded. That does not establish that they are uncommitted or available.

## Sources and coverage

- [RinkNet / CollegeCommitments.com](https://www.collegecommitments.com/): 840 men’s commitment rows.
- [RinkNet women’s list](https://www.collegecommitments.com/CommitList.aspx?x7cq9=FEMALE): 338 commitment rows.
- [College Hockey News recruiting list](https://www.collegehockeynews.com/news/recruits/list/): 814 men’s rows, providing additional team histories, arrival years and draft records.
- [USA Hockey U18 statistics](https://www.usahockeyntdp.com/stats/print/10255593?subseason=949073&tab=team_instance_player_stats) and [U17 statistics](https://www.usahockeyntdp.com/stats/print/10255596?subseason=949073&tab=team_instance_player_stats): 2025–26 regular-season NTDP records. Players may have separate U17/U18 or skater/goalie lines; these are never added together or presented as full career totals.
- Minnesota and Wisconsin official signing announcements add seven women’s profiles with dated prep statistics. A dated CHN Landon DuPont report supplies another statistical profile and historical school-interest reporting. Individual profiles link to the exact source for every field.

The board is complete relative to the imported rows in these lists, not every potential college recruit. A junior appearance does not prove NCAA eligibility or that a school is recruiting the player. Some commitment lists include players coming from previous colleges. Incoming 2026 classes may already be enrolled. Most women's profiles and many men's profiles do not yet have verified statistical lines imported.

## How to read the board

- **Reported team history** preserves source-reported current or previous teams. It is not a chronological career history; sources can use different names for the same team.
- **Top schools / interest** requires explicit, dated reporting. Historical options before a commitment are labeled accordingly. No school preference or commitment probability is inferred.
- **Reported commitment** is a published destination, not confirmation of enrollment, eligibility or a binding agreement.
- **Reports differ** preserves incompatible school reports for review. Sam Scheetz is flagged in this snapshot.
- The two Cooper Williams recruits are separate identities, corroborated by the source lists: Saskatoon/Calgary/North Dakota versus Flint/Pinckney/Lake Superior State. They are not treated as one player changing schools.
- Dates are dates reported by the source or dates of a university announcement; a missing date stays missing. CHN's numeric entry year is displayed as the corresponding fall-to-spring season.
- Stats retain team, season and scope. Partial seasons, a two-year combined line and school-described senior-season figures are explicitly labeled. Missing games or stats stay blank; they are never zero-filled. DuPont's assists are calculated from the published goals and points and labeled as calculated.

Search covers names, reported teams, colleges and school interest. Filters cover arrival, school, position, status and whether stats are loaded. My teams matches reported college commitments or school-interest reports.

## Updates

The existing local server exposes `/api/recruiting`. It reads the five allowlisted public lists and statistical tables at most once per hour. While the Recruiting page is open and visible it requests an hourly refresh; its check button uses the same server cache. Dated supplemental announcements and interest reports stay as historical evidence and require editorial updates to expand. No NCAA recruiting database, private scouting account or predictive feed is connected.

Source changes, errors or a wrong-gender response retain the last complete board and mark it as cached. Source date, column, unique identity and statistical arithmetic checks protect against silently importing malformed reports. No personal contact data, DOBs or publisher scouting prose is imported.

To rebuild the downloadable/offline snapshot, run `python3 recruiting_data.py` from the app directory. It uses Python’s standard library. All five sources must fetch and parse before the board is rewritten. In-app updates do not rewrite the bundled files.

## Verification

Checked data counts, same-name separation, conflicting reports, stats arithmetic, missing values, source-gender validation, cache fallback, search, school and position filters, favorites, and all competition views. Browsed men’s and women’s profiles and confirmed the local endpoint successfully refreshed all five public sources.
