arrow_back All field notes
// F.02 · Player performance

The player lens: measuring your five against their own baselines, not the ladder

One quiet game is noise. The same dip across six scrims is a pattern — and the difference between the two is the only thing worth measuring.

Published 2026-08-10Updated 2026-08-107 min read

Why pub averages are the wrong yardstick

Public Dota statistics sites compare a player against everyone. That comparison answers a question no competitive team is asking. Your position four is not trying to out-farm the average Immortal position four; they are trying to play a specific role inside a specific draft against a specific opponent, and their farm is supposed to be low when the team is doing the thing it planned to do.

Judged against a global baseline, a support who correctly spent the game creating space looks underperforming. Judged against a global baseline, a carry farming an uncontested map on a losing draft looks fine. Both readings are backwards, and both are what you get from a site built for ladder players.

The useful comparison is against yourselves. What does your position three normally do at ten minutes, in your drafts, in your scrim pool? A deviation from *that* is information. It means something changed — the matchup, the plan, the execution, or the player.

What a baseline is built from

Each of your five positions accumulates a profile from your own match pool over a rolling window: farm and experience per minute, last hits and denies at the laning checkpoints, damage patterns, and how those numbers usually move through a game.

Per-minute curves
GPM and XPM plotted per minute rather than reported as a single end-of-game number, overlaid on the player’s own scrim average so a dip has a shape and a timestamp.
Laning checkpoints
Last hits and denies at five and ten minutes against the direct lane opponent — the point at which lane outcome is decided but the game still has a shape you can change.
Role-relative deltas
Everything is expressed as a deviation from the position’s own baseline, so the number is readable without knowing what a good absolute value is for that role on that patch.
5 ROLES · 30-DAY ROLLING WINDOW · PER-MINUTE RESOLUTION

The single-game trap

The most common way to misuse player statistics is to open one game and draw a conclusion. Dota has enormous variance at the individual level. A carry with a bad game might have been counter-picked, might have been left alone in a losing lane by a plan the coach made, or might simply have run into a smoke at minute four. None of those are the same problem, and none of them are visible in a single row of numbers.

This is why the lens surfaces trends across scrims rather than leaderboards within a game. A number is flagged when it deviates persistently — the same player, the same role, the same direction, across several games. That is the threshold at which a conversation is likely to be about something real rather than about one bad night.

The point is not to rank your own players against each other. It is to notice, early, that something has changed — while it is still a coaching conversation and not yet a results problem.

Using it without poisoning the room

Per-player statistics are socially dangerous inside a team. Handled badly they turn review into a blame allocation exercise, and the fastest way to make a roster stop being honest in review is to make numbers feel like an accusation. A few habits that keep it useful:

Lead with the trend, not the game
Open on the multi-game pattern. "Your farm at ten has drifted down across the block" invites an explanation; "you had 32 CS at ten yesterday" invites a defence.
Check the plan before the player
A dip that coincides with a change in how you draft or how you position the lane is a team decision showing up in one player’s row. That is common, and it is not their problem to solve alone.
Pair every number with a moment
Numbers identify where to look. The conversation should happen over the replay of an actual lane, not over a chart. The chart is the index, not the argument.
Let players read their own
A player who checks their own trend between scrim blocks fixes most things before a coach has to raise them.

What it catches that watching does not

Coaches are good at spotting acute mistakes and bad at spotting slow drift. A player whose laning has degraded by a small margin over three weeks looks fine in every individual game — the decline is smaller than the game-to-game variance, so there is never a moment that stands out enough to comment on. Aggregated against their own baseline, that same drift is a clear line pointing down.

The same applies in the other direction. A player quietly improving through a bootcamp block often gets no acknowledgement at all, because nobody noticed the moment it happened. There is not a moment. There is a trend.

Both cases are the same underlying property: teams perceive games, and improvement happens across blocks. The lens exists to make the block visible.

Questions

Does this work if we have only played a handful of scrims?

Baselines get more useful as the pool grows — with a handful of games you are still mostly looking at variance. The curves and laning checkpoints are readable immediately; the trend flags need a block or two behind them before they mean much.

Are players compared against each other?

No. Each position is measured against its own history. Comparing a position one’s farm to a position five’s is meaningless, and comparing two players in the same seat is a roster conversation, not an analytics feature.

Can players see their own profile?

Yes — every member of the team can open their own profile without being a coach. Profiles for other players on the roster are a coach-level, premium view.

Does it use my pub games?

Only what your team uploads or parses into its own vault. The baselines are built from your match pool, which is what makes them a meaningful comparison in the first place.

Run this on your own scrims

Upload a replay and the whole workspace runs on your game. Create a team — visible to your roster only, never public.

Read next
© 2026 Scrimlog Labs · Built in ViennaField notesPrivacy