An open-source model that identifies which communities need hockey programming most.
Part of IceBreaker Bay — the first AI agent for community hockey, submitted to the NHL/NHLPA Hockey Innovation Competition 2026.
Scoring is only the first step. Once the CHI identifies a hockey desert, the IceBreaker Bay agent designs a matching program, writes bilingual parent outreach and launch logistics, and projects a funder-ready impact narrative — turning a ranking into a ready-to-run plan. These three capabilities are LLM-powered (Groq) and build directly on the rubric output.
Four capabilities, mapped to the pitch:
| # | Capability | What it does | Powered by |
|---|---|---|---|
| 01 | Discover | Rank communities by unmet hockey need | CHI rubric (chi_model.py) |
| 02 | Design | Match an existing program to the community | Groq LLM (agent/design.py) |
| 03 | Write | Draft bilingual outreach + procurement + coach schedule | Groq LLM (agent/write.py) |
| 04 | Project | Generate a PYD-grounded impact narrative | Groq LLM (agent/project.py) |
pip install -r requirements.txtThen provide your Groq API key one of two ways:
# Option A — environment variable
export GROQ_API_KEY=<your-key>
# Option B — local .env file (auto-loaded by the agent, gitignored)
cp agent/.env.example agent/.env # then paste your key into agent/.envGet a free key (no credit card) at console.groq.com → API Keys → Create API Key. Requires Python 3.10+.
python agent/run_agent.py "East San Jose"The runner prints progress for all four stages and saves a full Markdown report to runs/<community>_<timestamp>.md — program design, English + Spanish (or Tagalog) parent letters, a procurement list, a coach schedule, and the funder narrative. Try python agent/run_agent.py "Daly City" for a Tagalog example.
The CHI/rubric model is the foundation that decides where to act; the agent/ modules are the LLM-powered extensions that decide what to do and how.
The Community Hockey Index scores neighborhoods on 6 weighted dimensions using publicly available census, school district, and health data:
| Dimension | Weight | What It Measures |
|---|---|---|
| Youth Density | 15% | Number of potential participants |
| Diversity | 20% | Communities historically underrepresented in hockey |
| Access Gap | 25% | Distance to nearest rink + absence of existing programs |
| Economic Barrier | 15% | Free/reduced lunch eligibility as cost barrier proxy |
| Wellness Need | 15% | Gap in youth physical activity vs. national average |
| Language Barrier | 10% | English Learner percentage in local schools |
Higher score = greater unmet need.
| Rank | Community | CHI | Youth Pop | Nearest Rink | Programs |
|---|---|---|---|---|---|
| 1 ★ | East San Jose | 76.4 | 22,512 | 25 min | 0 |
| 2 ★ | Gilroy | 74.8 | 16,689 | 45 min | 0 |
| 3 ★ | Richmond | 70.4 | 25,618 | 30 min | 0 |
| 4 | East Oakland | 68.1 | 16,900 | 20 min | 0 |
| 5 | Daly City | 66.9 | 18,882 | 25 min | 0 |
| 6 | Hayward | 66.9 | 39,108 | 15 min | 0 |
| 7 | South San Francisco | 56.5 | 12,559 | 20 min | 0 |
| 8 | Fremont | 44.5 | 50,710 | 5 min | 2 |
| 9 | Palo Alto | 28.5 | 15,085 | 15 min | 2 |
| 10 | Willow Glen/Cambrian | 25.7 | 11,000 | 10 min | 3 |
★ = Priority targets for IceBreaker Bay pilot
The model correctly separates unserved hockey deserts (CHI > 65, zero programs) from already-served communities (CHI < 30, 2-3 existing programs).
# Clone the repo
git clone https://github.com/kzahiri/icebreaker-bay-chi.git
cd icebreaker-bay-chi
# Run the model
python chi_model.py
# Or explore the Jupyter notebook
jupyter notebook notebooks/chi_analysis.ipynbNo dependencies beyond Python 3.8+ standard library.
icebreaker-bay-chi/
├── chi_model.py # Core model: scoring algorithm + Bay Area data
├── agent/ # LLM-powered agent layers (Groq)
│ ├── chi_data.py # 01 Discover — rubric output for priority communities
│ ├── catalog.yaml # program catalog the matcher chooses from
│ ├── design.py # 02 Design — match a program to a community
│ ├── write.py # 03 Write — bilingual outreach + logistics
│ ├── project.py # 04 Project — funder-ready impact narrative
│ ├── llm.py # shared Groq client wrapper
│ └── run_agent.py # end-to-end runner
├── runs/ # Generated agent reports (Markdown)
├── notebooks/
│ └── chi_analysis.ipynb # Interactive analysis with visualizations
├── data/
│ ├── chi_results.csv # Exported results (CSV)
│ └── chi_results.json # Exported results (JSON)
├── requirements.txt # Agent dependencies (groq, pyyaml)
├── README.md
└── LICENSE
- U.S. Census Bureau, American Community Survey 2024
- San Jose Unified School District
- Jefferson Elementary School District
- Niche.com — East San Jose demographics
- LA84 Foundation — Play Equity report
- AIM Youth Mental Health — Bay Area 2025
- USA Hockey Membership Report 2024-25
IceBreaker Bay is an autonomous AI agent built on SAP Joule Studio Agent Builder that discovers which communities need hockey, designs a custom program for each one, and delivers measurable outcomes. It uses the Community Hockey Index to identify hockey deserts, then generates program plans tailored to each community's demographics, languages, and existing infrastructure.
Submitted to the NHL/NHLPA Hockey Innovation Competition 2026 (Bay Area Edition) by Kayvan Zahiri, M.S. Data Science & AI, University of San Francisco.
MIT — use it, adapt it, score your own city.