how it works
Every match, modelled.
Touchline turns a fixture into a brief you can read, a model you can run, and a set of receipts you can check. Here is the whole process, the same for every game on the site.
what it isn’t
- Not a supercomputerNo “the machine says who wins.” It is a stated model with assumptions you can see, change, and re-run yourself.
- Not a tipsterNo best bets, no accumulators, no picks. Probabilities and the working, market odds as information. Analysis to argue with, not betting advice.
- Not a black boxThe maths is bivariate Poisson, the randomness is seeded, and the code is open. Poke the parameters, read the source, reproduce the number.
Research
Both teams' recent path with real scores, the tournament or season stats, team news down to injuries, suspensions and the expected XIs, the tactical read, the market prices, and the published models like Opta. Venue and weather too. Every fact links to a source; anything we cannot stand up gets flagged or left out.
Calibrate
The market already has an opinion. We decompose its win, draw and loss prices into a pair of expected-goals numbers, set an honest base case around them, and write presets that reproduce both the market and the published models so you can see where each one sits.
The engine
A bivariate Poisson model: each side's goals drawn from a Poisson rate, plus a shared component for the matches where both scores move together. Extra time runs at roughly a third of the rates with a fatigue tilt; a shootout is weighted; scorers blend the verified goal share with a prior. The random draws use a seeded generator, so the same inputs always give the same result. Nothing is left to chance that we cannot reproduce.
Simulate
The engine plays the match 100,000 times. Out comes the full distribution: win probabilities, the most-likely scorelines, and the odds of extra time or penalties. You can run it yourself on every match page and move the assumptions to see the numbers shift.
01 / 05
One match, two dice
Ninety minutes reduce to two numbers: each side's expected goals. The favourite rolls a die loaded to 1.30 goals, the other to 1.10. One roll each and you have a scoreline. That, alone, is most football models.
try it
Run the simulation yourself
Each click plays 1,000 matches with the same goal expectations. Watch the win probability settle as the sample grows. This is the whole idea, in miniature.
Who won, 100 of them
click to runOne square per match: home win, draw, away win.
Most likely scorelines
Illustrative goal rates. The real match pages calibrate to the market and run 100,000.
Live
Once it kicks off, the match feed auto-syncs the minute and the score, and the model re-runs only the remainder from the current state. The market odds keep polling through the game and stop about an hour after full time. Edit anything by hand and the auto-sync steps aside.
The receipts
At full time the page shows what the model said against what actually happened, side by side. The prediction is timestamped and stays put. No quiet edits after the fact.
Honesty
Sources are linked, the maths is seeded, and every number carries its own argument. This is analysis to argue with, not betting advice. AI helps with the research and the writing and it can make mistakes, so check anything that matters.
common questions
Is this an AI that predicts football?
No. The engine is a seeded bivariate Poisson model, the same family of maths the analytics world uses, not a generative black box. AI helps with the research and the writing, but the number itself comes from statistics you can reproduce.
Is it a betting tip?
No, and never. Every page says so. You get probabilities and the working behind them, with market odds shown as information, never a recommendation.
Is it one of those “supercomputer predicts the season” things?
The opposite. Those are un-sourced and never graded. Here every fact is linked, and every call is timestamped and marked against the result at full time, hits and misses alike.
Can I check it, or see the code?
Yes. Run the simulator on any match page and move the assumptions, and read the engine on GitHub. Same seed, same result, every time.
go deeper
The method above is the short version. The working is in the open: the engine and its calibration are on GitHub, and the journal takes the pieces apart one at a time.
See it on a real match
The World Cup final, modelled and live.