s1m31/march-madness-2026
0
March Madness 2026 — Bracket Retrospective
Eight prediction models walked into a bracket. Only one of them knew how it ended.
A portfolio project built for EMBA 693R Advanced Machine Learning. Eight independent models — from seeding chalk to a Claude-judged mascot fight — predicted the 2026 NCAA Tournament. This Space is the retrospective: side-by-side brackets, round-by-round accuracy, and a deliberately overfit "Hindsight" model that looks back at the 67 games to ask which variables actually mattered this year.
Why it's here
- The assignment asked for pre-tournament predictions. This Space adds the one thing notebooks can't: the post-mortem, wrapped in an editorial UI you can click through in a presentation.
- Pre-computed predictions for all eight models are baked into the build, so response time is instant and no live API calls happen at request time.
- Source code and the write-up ship alongside the app — see the Docs tab.
The eight models
Stack
- Data pipeline & models: pandas, numpy, scikit-learn, joblib
- Pre-compute:
hf_space/prepare_data.pyruns every model through the bracket engine, freezes the output to JSON, trains the Hindsight model, and writes the retrospective stats and documentation toweb/public/data/. - Runtime: FastAPI serving static HTML/CSS/JS. Plotly.js for charts.
- Container: Python 3.11 slim, single process on port 7860.
Running locally
pip install -r requirements.txt
python prepare_data.py # one-time: pre-compute all model brackets into web/public/data/
uvicorn inference.main:app --reload --port 8001Then open http://localhost:8001.
Credits
Source data: Kaggle March Machine Learning Mania, Barttorvik, Massey Consensus. Editorial inspiration: FiveThirtyEight, WSJ, The Economist.
