Status
Quick Checks
Use these first to confirm KV + upstreams are alive.
Defaults
This UI avoids preflight traps where possible. If you still see TypeError: Load failed, your Worker likely needs CORS/OPTIONS enabled for that route.
Teams
Upload Team Stats CSV
POST /teams/upload (multipart) or /teams/ingest (raw). Use whichever your worker supports.
Get Team (KV)
Tip: Week/team keys are strict in your worker — make sure they match the ingest.
Matchup Sim
Run Sim
This sends
{season, week, home, away} as JSON. A 400 usually means missing fields or teams not found in KV.Inputs
If your sim feels “default-y”, check the quality.default_like section in the response — it shows which metrics look like defaults even if present.
Anchors
This can be slow depending on upstream odds + caching.
Props
Upload Props
POST /props/upload. You can paste raw props text or upload a CSV.
Sim / Score
POST /props/sim. This UI sends multipart (FormData) to avoid OPTIONS preflight.
If /props/sim still fails with Load failed, your worker needs to answer OPTIONS for that route or allow your UI origin.