How artificial intelligence analyses a football match
8 min read
“AI analysis” sounds like an oracle and is often sold as one. In practice it is a way of organising data that is already public, plus language to describe it. Here is exactly how ours works — including what this approach cannot do.
Step one: what the model receives
A language model does not watch matches. It receives a set of facts pulled from a sports data provider and arranged into one document. In our case:
- recent matches for both sides, with results and venue,
- league position and record in the current competition,
- head-to-head record from recent years,
- predicted and confirmed line-ups, injuries and suspensions,
- team statistics: shots, possession, home and away form,
- competition top scorers and player ratings from recent games,
- for in-play analyses, the live score, events and match statistics.
That is the model’s entire knowledge of the fixture. It has no internet access while writing, no matchday rumours, no sense of the dressing room. If something is not in that set, it does not exist for the analysis.
Step two: what it does with that
The job is not to invent a scoreline but to find relationships between facts and explain them clearly. A good analysis answers questions like: is this winning run about form or an easy fixture list? Did the missing defender play in every clean sheet? Is a high league position backed by shot volume, or the product of narrow wins?
The probabilities attached to picks are model estimates, not the output of a closed statistical formula. Read them as the author’s confidence: the gap between 55% and 60% means nothing in practice, the gap between 55% and 80% means a lot.
What the model cannot see
- Motivation. A relegation six-pointer and a dead rubber look identical in the data.
- The wider calendar. A cup semi-final in three days does not change statistics, but it changes the team sheet.
- Internal conflicts, mid-week staff changes, the mood after a lost derby.
- Matchday weather and pitch condition.
- Anything that happened after the last data refresh — and line-ups can change an hour before kick-off.
Where models get it wrong most often
Three situations are predictably hard. First, the start of a season: after two rounds every statistic rests on a sample nothing can be concluded from, and the model will describe it anyway. Second, teams with a new manager — the data describes the previous plan, not the current one. Third, badly mismatched fixtures, where the favourite wins so often that every defeat looks like an anomaly rather than predictable risk.
That is why every analysis carries a data-quality assessment. If the league has just started or line-ups are missing, the text says so instead of feigning confidence it does not have.
How to read an analysis properly
- Start with the factors, not the pick. The pick is a conclusion; the value is in the premises.
- Check the stated facts against what you know. The model can be out of date; you might not be.
- Read a high probability as “fewer surprises in the data”, not as a guarantee.
- Ask follow-ups. The assistant holds the full match data and will answer what the analysis omitted.
How we check whether any of this works
Every pick from an analysis or report is stored and settled automatically after the match against the official result. The accuracy page shows all of it: hits, misses, and skipped picks — those that cannot be resolved by the final score alone.
Publishing the misses is uncomfortable and that is precisely the point. A service showing only its hits conveys no information at all, because such a list can be assembled from any set of predictions, including random ones.