Skip to content

Lombardi

We sought to build the best NFL coach the world has ever seen.

Core trick

Two LLM coordinators pick each play, and a gradient-boosted classifier predicts outcome type before quantile regressors sample yardage.

Tags

Description

We sought to build the best NFL coach the world has ever seen. We built an adversarial RL environment where two LLMs compete as NFL coordinators across full simulated drives. Every play is resolved by a two-stage world model trained on 16,000+ real NFL plays from the 2024 season from the NFL Big Data Bowl dataset. In our world model an outcome classifier predicts what happens (normal play, touchdown, interception, fumble), then quantile regressors sample realistic yardage conditioned on that outcome. Two Qwen2.5-1.5B models were LLMs Interactions are captured via sklearn's HistGradientBoostingClassifier and HistGradientBoostingRegressor. Coverage schemes affect pass outcomes, blitz rates influence sack probability, and formation matchups produce realistic yard distributions, among others. The action space is hierarchical and constrained.
ad-fletcher/football-play-caller★ 10 forksJupyter NotebookCreated Mar 8, 2026 · last push Mar 8, 2026

README excerpt

# Football Play-Calling RL Environment

An [OpenEnv](https://github.com/meta-pytorch/openenv) environment that simulates NFL offensive play-calling. The agent acts as an offensive coordinator, choosing a formation and play type each down. Play outcomes (yards gained, turnovers) are sampled from a lookup table built from real NFL data (16,000+ plays from the 2022 season). Built for the OpenEnv Hackathon, March 2026.

## Run the Environment Locally

```bash
cd football_env
pip install -e .
openenv serve
```

Or with uvicorn directly:

```bash
uvicorn football_env.server.app:app --host 0.0.0.0 --port 8000 --reload
```

## Run Training

See the Colab training notebook for GRPO training with TRL/Unsloth.

## Action Space

| ID | Formation | Play Type |
|----|-----------|-----------|
| 0 | SHOTGUN | Run |
| 1 | SHOTGUN | Pass |
| 2 | SHOTGUN | Play Action |
| 3 | UNDER_CENTER | Run |
| 4 | UNDER_CENTER | Pass |
| 5 | UNDER_CENTER | Play Action |
| 6 | PISTOL | Run |
| 7 | PISTOL | Pass |
| 8 | PISTOL | Play Action |
| 9 | I_FORM | Run |
| 10 | I_FORM | Pass |
| 11 | SINGLEBACK | Run |
| 12 | SINGLEBACK | Pass |
| 13 | PUNT | (4th down only) |
| 14 | FIELD_GOAL | (4th down, in range) |

Team