Questions need the live server (AI runs server-side, so no keys ever reach the browser). Replays and charts work without it.
Player assessment runs on the live server.
Choose a player
Upload a match
Any CSV (comma, semicolon or tab; column names and spellings vary), Fault Lines JSON, or a StatsBomb events file. Messy is fine: it is cleaned, and you get a quality report and the clean data back. Start from a sample: sample CSV · sample JSON · messy sample (to see the cleaning)
Connect a live source
Open a feed, then push events from your own system as they happen (HTTP POST with a secret token). Everyone watching the feed sees the same live analysis.
Feed is open. Push events like this:
Every event is cleaned as it arrives (same rules as uploads); bad or late events are set aside, never fatal. Keep the token private: anyone with it can push to your feed. Feeds close after 3 idle hours. Download the feed's data package
Data format
One row (CSV) or object (JSON) per on-ball event, in time order. Coordinates are 0-100 in the acting team's attacking direction: x = 0 its own goal line, y = 0 its left touchline.
| Field | Meaning |
|---|---|
| t | seconds since kick-off |
| team | home or away |
| type | pass, shot or own_goal |
| player, player_role | who acted, and their role: GK, RB, RCB, LCB, LB, CDM, RCM, LCM, RW, ST, LW (CSV: once per player is enough) |
| recipient, recipient_role | who received a completed pass |
| x, y, end_x, end_y | where the pass or shot started and ended |
| success, pressure | pass completed; under pressure (true/false) |
| xg, goal | shots: expected goals from your provider (estimated from distance if missing) and whether it went in |
StatsBomb files are converted automatically (first team in the file = home). JSON line-ups for a live feed: {"home": {"name", "players": [{"name", "role"}]}, "away": {...}}.