Parsertime & Sightline
Scrim stats for Overwatch teams.
Overview
Overwatch teams scrim most nights and remember almost none of it. Parsertime keeps the numbers.
A team hosts its scrim with a workshop code that logs every fight. After the match, the coach drops the log files into Parsertime and gets the night back as stats: per-map overviews, player tables, first deaths, ultimate value, map comparisons and a live estimate of who was winning each fight.
I started it in late 2023 as a side project for one team. It now tracks more than 2,000 players on 430 teams. Sightline is the next step, built on the same open core: coaching tools for organisations that run several rosters, now in private beta.
Four decisions
Logs are parsed in the browser, not on the server.
A scrim produces one log file per map. Parsertime reads them on the coach's machine, then uploads the parsed, gzipped result. Heavy parsing never ties up a server, and big nights stay under the upload limit.
Train in Python, predict in TypeScript.
Win probability comes from a LightGBM model per game mode, trained on thousands of real scrim maps. The site walks the exported trees in plain TypeScript, with no machine-learning runtime at request time. A shared test fixture keeps both sides in agreement to six decimal places.
A new model ships only if it beats the one in production.
Each mode has to stay calibrated and beat the current model on held-out maps, or it doesn't ship. Maps are split whole, never by snapshot, because moments inside one map look too much alike and would flatter the score.
Parsertime stays open. Sightline builds on top of it.
The stats engine is MIT-licensed and anyone can run it or send a fix. Sightline pulls that core in as its upstream and adds the paid coaching tools for organisations running several rosters.
By the numbers
Built and run by one person, with every release going out through the open-source repo first.