Reference
Glossary
"Engine" and "Bridge" are this app's own plain-English names for two real, established graph-theory measures (degree and betweenness centrality) — used in academic football-analytics research, but not standard industry vocabulary, so they're explained here rather than assumed.
Tactical metrics
Engine(Degree centrality)
The share of a player's own teammates they're directly linked to by at least one completed pass, in either direction. A player at 100% has passed to or received from every other player who touched the ball. High Engine = a player everyone on the team connects through, regardless of how much play is forced through them specifically.
92.3% means this player is directly linked to 12 of their team's 13 other involved players.
Bridge(Betweenness centrality)
How much of the team's ball circulation is forced to flow through this one player to connect other pairs of teammates who aren't directly linked to each other. A player can have modest Engine but a very high Bridge if they're the one connector between two otherwise-separate clusters — remove them and the team's structure fragments.
A deep-lying midfielder who's the only link between the defense and attack often has the highest Bridge score on the team, even if a winger has a higher Engine.
Dependency(Top-outlet ratio)
The single largest share of a player's own outbound passing that goes to one specific teammate. Shown as "→ Player X (NN%)". This is about predictability, not importance — it flags when an opponent could reasonably guess where the ball is going next.
A full-back sending 60% of their passes to one winger is easy to press once that pattern is identified.
⚠️ Predictable flag
Automatically applied whenever a player's Dependency ratio reaches 50% or higher — an explicit threshold, not a judgment call, so it's consistent across every match and player in the app.
Node size (network graph)
Scaled to a player's total involvement — passes sent plus passes received — for the selected period. Bigger dot = more of the ball went through them, in either direction.
Line thickness (network graph)
Scaled to how many completed passes were exchanged between that specific pair of players, in the direction the arrow points.
Player position on the pitch
Each player's dot sits at their real average location on the pitch when they passed or received the ball during the selected period — not a fixed formation shape. Teams are always shown attacking left-to-right, normalized so their own physical end-swapping between halves doesn't distort the picture.
PlayTopology Rating
A single 0-100 score, shown on each player's profile, built from two factual inputs drawn directly from match events in the current dataset:
- Goals scored (own goals excluded — a mistake isn't credited as output)
- Yellow and red cards received
How these are combined into the final number is not published — that method is PlayTopology's own. A player with no recorded matches in the dataset shows no rating rather than a default or estimated one.
Deliberately excluded for now, because there's no real data source for them yet: years played, career tournament counts, injury history, and match suspensions. These aren't part of the score until there's actual data behind them — see the per-match breakdown on each player's profile for exactly what's counted.
Team season record
Unlike the player Rating above, every team stat is standard football arithmetic, shown in full — nothing about it is proprietary, so there's nothing to gain from hiding the method:
- Goals For / Against — this team's own goals scored and conceded, summed across every match in the dataset
- Goal Difference — Goals For minus Goals Against
- Points — wins × 3 + draws × 1 (the standard league-table formula)
All figures are scoped to the matches actually seeded for that team in the current dataset — shown as a match count on each team's page, since coverage varies (a handful of matches for most teams, a full 22-match season for some).
Shot quality
A probabilistic layer alongside the network-relationship metrics above, not a replacement for them. Unlike the PlayTopology Rating, nothing here is hidden — the formula is plain arithmetic on top of a number StatsBomb itself publishes (Expected Goals, or "xG"), so there's nothing proprietary to protect by not explaining it.
Expected Goals (xG) is StatsBomb's own precomputed value for every shot in the dataset, based on where the shot was taken from, the type of shot, and the defensive pressure around it at that moment — not something PlayTopology calculates itself.
Vs. Expected = actual goals minus total xG. Positive means a player is finishing better than the quality of their shots alone would predict; negative means the opposite. This is the standard, widely-used framing (Understat, FBref, and most broadcasts show a version of this).
Modeled Uplift asks a different, more specific question: (team's average xG per shot − this player's own average xG per shot) × this player's shot count. A positive number means this player's shots are, on average, lower quality than their team's typical shot — a shot-selection signal (are they shooting from good positions?), separate from whether they finish well once they shoot. A negative number means the opposite: they're already choosing better shots than their team's average, which is also a real finding, not suppressed just because it isn't a "problem" to flag.
Benchmarked against the player's own team's average shot across every match that team has in the current dataset, not a league-wide average — the same small-sample caveat as everything else in this app applies here too.
"Historical" label
Any match played more than 3 years before today is tagged "Historical" wherever it appears — search results, a team's full results table, a match page, a player's per-match breakdown.
This is a recency signal, not a filter: historical matches still count toward season records, career stats, and the PlayTopology Rating. A player's squad, form, and role can change substantially over a few years, so treat historical data as reference rather than a current picture. The 3-year cutoff is a fixed rule stated plainly here rather than a true "season" boundary — annual leagues and multi-year international tournament cycles (World Cup, Euro) don't share one clean definition of a season, so a straight time window is used for both.
Match periods
Full Match
Every period the team has data for, combined — first half, second half, and extra time when the match went there.
First Half / Second Half
Exactly what it says — useful for spotting a team whose structure or reliance on a player changes after half-time adjustments.
Extra Time
Only shown when a match actually went to extra time (most don't). Combines both 15-minute extra-time periods into one view.
All metrics are computed only from completed-pass event data (StatsBomb Open Data) — nothing here is inferred, predicted, or based on video review.