Turnout
Back to the overview

Score your own window

The demo answers one question about one fictional department. This is the same risk engine, pointed at whatever you actually have. Say who could turn out on a given afternoon and it will tell you whether that window is dangerous, and show you every number behind the answer.

Nothing is stored, and nobody is texted. This screen only scores a window.

The window

A weekday afternoon is where departments usually hurt.
A small rural department is often between 1 and 3.

Who could turn out

Not who is on the roster. Who would actually come if the tone dropped in that window.

The smallest crew that can roll

Or call it from your own code

curl -X POST https://zjrrw6wpxj.us-east-1.awsapprunner.com/api/risk/score \
  -H "content-type: application/json" -d '{
    "window_start": "2026-09-10T10:00", "hours": 4,
    "available": [{"roles": ["firefighter"], "responds": 0.45}],
    "min_crew": {"driver_operator": 1, "firefighter": 2},
    "calls_per_day": 2.5, "weather": "ice storm warning"
  }'

Full schema at /docs. The engine is in src/turnout/engine/risk.py and every property it holds to is unit tested.