Every call, graded.
AiGoalBot writes down each next-goal call the moment it makes it — the side, the stated probability, the confidence tier and the exact model build that produced it. Once the match is over, the call is graded against what actually happened. This page is all of them. Nothing is excluded, and the misses are counted with the hits.
7.8%
of 9586 settled calls landed
A coin flip would have landed 7.0%. 1.11× better than chance
9586
Calls graded
912
Matches covered
7.8%
Realised hit rate
7.0%
Coin-flip baseline
Covering Jul 18, 2026 – Aug 9, 2026. Recalculated automatically.
How this is measured
The rule is fixed and strict
A call names one side. It lands only if the very next goal in the match belongs to that side and arrives within 10 minutes. If the other side scores first, it is a miss. If nobody scores in the window, it is a miss.
Goals the feed had not reported yet do not count
The data feed reports a goal 20–30 seconds after it is scored, while the match statistics it derives from update instantly. For those seconds a model can appear to predict a goal that has already been scored. So a goal only counts for a call if it arrives at least 2 minutes after that call was last made — the model is asked to see a goal coming, not to notice one that has just gone in. This rule alone removed the whole of the edge previously published here, and it is why the model is now trained to look 2 minutes ahead.
Why the baseline is 7%, not 50%
Most 10-minute windows contain no goal at all, and a call cannot land in a window where nothing happens. So the honest comparison is not a 50/50 guess between two teams — it is a coin flip that only pays out when a goal actually arrives. That baseline is computed from the very same windows shown here, never assumed.
Written before the fact
Each call is stamped with the build of the model that made it, and the model is retrained daily. That is what makes a graded call provable rather than merely claimed: it was recorded before the goal, by a model that had not seen the match.
Nothing in play
A call only appears here once its match is certainly finished. A graded call on a live match would give away the score, and this page is public.
The eventual next scorer
The same calls, read on a longer question: not “did they score within 10 minutes” but “when the next goal finally came, was it theirs”.
55.5%
of 5960 calls that a further goal followed
| The model’s call | 55.5% |
|---|---|
| Naming the same sides at random | 50.2% |
| Always backing the home side | 52.4% |
| A coin flip | 50.0% |
- The model’s choice is worth 5.2 points over naming those same sides blindly. Against always backing the home side — a strategy that needs no model at all — it is ahead by 3.1 points, which is inside the margin of error on this sample. Both comparisons are published because the coin flip alone flatters this figure: the home side scores most goals, and the model names the home side more often than the away side.
- A further 3402 settled calls are not counted above, because their match finished with no more goals at all. There was nothing for those calls to be right or wrong about. They are stated rather than dropped — quoting the rate without them would imply it covers every call.
- 224 more calls are excluded because capture stopped before full time, so whether another goal followed is unknown. Those are our outages, and they are not scored as the model’s losses in either direction.
- This figure is not broken down by star rating or stated probability, and that is deliberate. The tiers appear to order on this question, but the entire effect sits in one five‑day stretch and disappears in the next — in the more recent half, two‑star calls outscore three‑star ones. The stated probability does not order at all. Publishing a per‑tier table would be publishing noise.
By confidence tier
The star rating shown on the card. Measured, the tiers do not order — a higher tier has not proved to be a stronger signal, on this label or on the next-goal one.
| Calls | Landed | Realised | Chance | Edge | Realised vs chance | |
|---|---|---|---|---|---|---|
| ★ | 2180 | 184 | 8.4% | 8.0% | 1.05× | |
| ★★ | 1946 | 167 | 8.6% | 7.6% | 1.13× | |
| ★★★ | 5460 | 392 | 7.2% | 6.4% | 1.13× |
By stated probability
The headline percentage the card showed at the time.
| Calls | Landed | Realised | Chance | Edge | Realised vs chance | |
|---|---|---|---|---|---|---|
| under 20% | 5891 | 441 | 7.5% | 6.7% | 1.13× | |
| 20–25% | 1880 | 154 | 8.2% | 8.0% | 1.03× | |
| 25–30% | 1495 | 114 | 7.6% | 6.7% | 1.13× | |
| 30% and above | 320 | 34 | 10.6% | 8.9% | 1.19× |
By match phase
When in the match the call was made.
| Calls | Landed | Realised | Chance | Edge | Realised vs chance | |
|---|---|---|---|---|---|---|
| 0–15' | 1277 | 94 | 7.4% | 7.3% | 1.01× | |
| 15–30' | 1294 | 108 | 8.3% | 8.3% | 1.00× | |
| 30–45' | 1338 | 88 | 6.6% | 5.9% | 1.11× | |
| 45–60' | 2017 | 152 | 7.5% | 6.8% | 1.11× | |
| 60–75' | 1470 | 127 | 8.6% | 7.6% | 1.14× | |
| 75'+ | 2169 | 173 | 8.0% | 6.5% | 1.23× |
Day by day
Every day of capture, in order. Small days swing hard — read the total, not the best one.
| Calls | Landed | Realised | Chance | Edge | Realised vs chance | |
|---|---|---|---|---|---|---|
| Jul 18 | 370 | 34 | 9.2% | 8.2% | 1.11× | |
| Jul 19 | 411 | 35 | 8.5% | 6.8% | 1.25× | |
| Jul 20 | 123 | 8 | 6.5% | 6.1% | 1.07× | |
| Jul 21 | 434 | 29 | 6.7% | 6.8% | 0.98×below chance | |
| Jul 22 | 597 | 47 | 7.9% | 7.9% | 1.00× | |
| Jul 23 | 815 | 69 | 8.5% | 8.0% | 1.06× | |
| Jul 24 | 294 | 25 | 8.5% | 6.3% | 1.35× | |
| Jul 25 | 916 | 71 | 7.8% | 7.9% | 0.99×below chance | |
| Jul 26 | 914 | 82 | 9.0% | 7.1% | 1.26× | |
| Jul 27 | 96 | 9 | 9.4% | 7.8% | 1.20× | |
| Jul 28 | 155 | 12 | 7.7% | 6.8% | 1.14× | |
| Jul 29 | 330 | 24 | 7.3% | 5.9% | 1.23× | |
| Jul 30 | 422 | 33 | 7.8% | 5.3% | 1.47× | |
| Jul 31 | 247 | 16 | 6.5% | 5.7% | 1.14× | |
| Aug 1 | 380 | 23 | 6.1% | 6.6% | 0.92×below chance | |
| Aug 2 | 555 | 53 | 9.5% | 8.4% | 1.14× | |
| Aug 3 | 207 | 11 | 5.3% | 4.8% | 1.10× | |
| Aug 4 | 274 | 18 | 6.6% | 5.8% | 1.13× | |
| Aug 5 | 317 | 35 | 11.0% | 9.1% | 1.21× | |
| Aug 6 | 434 | 24 | 5.5% | 5.8% | 0.96×below chance | |
| Aug 7 | 181 | 8 | 4.4% | 6.1% | 0.73×below chance | |
| Aug 8 | 765 | 53 | 6.9% | 6.3% | 1.10× | |
| Aug 9 | 349 | 24 | 6.9% | 6.6% | 1.04× |
Rows marked below chance are ones where the model did worse than a coin flip. They are shown because a scorecard with the bad rows deleted would make the good ones worthless too.
The last 30 calls, named
Straight time order — no selection, no highlights reel. Whatever the model said last is what appears here.
| Match | Call | Called to score next | Confidence | Outcome |
|---|---|---|---|---|
| UE Olot v CE SabadellClub Friendlies · Aug 9 | 81' | CE Sabadell | 13% | Missedno goal in 10 min |
| Shandong Taishan v Tianjin Jinmen TigerChinese Super League · Aug 9 | 86' | Shandong Taishan | 14% | Landedgoal after 7m 5s |
| FC Groningen v FC UtrechtEredivisie · Aug 9 | 52' | FC Groningen | 13% | Missedno goal in 10 min |
| Chongqing Tonglianglong FC v Shanghai PortChinese Super League · Aug 9 | 98' | Chongqing Tonglianglong FC | 13% | Missedno goal in 10 min |
| PEC Zwolle v AFC AjaxEredivisie · Aug 9 | 51' | AFC Ajax | 13% | Missedno goal in 10 min |
| Hammarby IF v BK HäckenAllsvenskan · Aug 9 | 84' | Hammarby IF | 14% | Missedno goal in 10 min |
| FC Groningen v FC UtrechtEredivisie · Aug 9 | 50' | FC Groningen | 14% | Missedno goal in 10 min |
| FC Lugano v FC ZürichSuper League · Aug 9 | 84' | FC Lugano | 13% | Landedgoal after 6m 54s |
| Shandong Taishan v Tianjin Jinmen TigerChinese Super League · Aug 9 | 83' | Shandong Taishan | 13% | Landedgoal after 9m 56s |
| Malmö FF v Degerfors IFAllsvenskan · Aug 9 | 84' | Malmö FF | 13% | Missedother side scored |
| Chongqing Tonglianglong FC v Shanghai PortChinese Super League · Aug 9 | 95' | Chongqing Tonglianglong FC | 14% | Missedno goal in 10 min |
| Lillestrøm SK v Rosenborg BKEliteserien · Aug 9 | 47' | Lillestrøm SK | 13% | Missedno goal in 10 min |
| FC Groningen v FC UtrechtEredivisie · Aug 9 | 48' | FC Groningen | 13% | Missedno goal in 10 min |
| Chongqing Tonglianglong FC v Shanghai PortChinese Super League · Aug 9 | 92' | Chongqing Tonglianglong FC | 13% | Missedno goal in 10 min |
| Malmö FF v Degerfors IFAllsvenskan · Aug 9 | 76' | Degerfors IF | 13% | Missedno goal in 10 min |
| Johor Darul Ta'zim v ChelseaClub Friendlies · Aug 9 | 71' | Chelsea | 13% | Missedno goal in 10 min |
| Hammarby IF v BK HäckenAllsvenskan · Aug 9 | 74' | Hammarby IF | 13% | Missedno goal in 10 min |
| Chongqing Tonglianglong FC v Shanghai PortChinese Super League · Aug 9 | 88' | Chongqing Tonglianglong FC | 13% | Missedno goal in 10 min |
| Shandong Taishan v Tianjin Jinmen TigerChinese Super League · Aug 9 | 69' | Tianjin Jinmen Tiger | 13% | Landedgoal after 8m 54s |
| Hammarby IF v BK HäckenAllsvenskan · Aug 9 | 71' | BK Häcken | 13% | Missedno goal in 10 min |
| FC Lugano v FC ZürichSuper League · Aug 9 | 68' | FC Zürich | 13% | Missedother side scored |
| KAA Gent v KV MechelenPro League · Aug 9 | 92' | KV Mechelen | 13% | Missedno goal in 10 min |
| Chongqing Tonglianglong FC v Shanghai PortChinese Super League · Aug 9 | 78' | Chongqing Tonglianglong FC | 13% | Missedno goal in 10 min |
| PEC Zwolle v AFC AjaxEredivisie · Aug 9 | 47' | PEC Zwolle | 13% | Missedno goal in 10 min |
| FC Groningen v FC UtrechtEredivisie · Aug 9 | 47' | FC Utrecht | 13% | Missedno goal in 10 min |
| Shandong Taishan v Tianjin Jinmen TigerChinese Super League · Aug 9 | 59' | Shandong Taishan | 13% | Missedno goal in 10 min |
| PEC Zwolle v AFC AjaxEredivisie · Aug 9 | 46' | PEC Zwolle | 13% | Missedno goal in 10 min |
| FC Lugano v FC ZürichSuper League · Aug 9 | 53' | FC Lugano | 14% | Missedno goal in 10 min |
| Johor Darul Ta'zim v ChelseaClub Friendlies · Aug 9 | 51' | Johor Darul Ta'zim | 13% | Missedno goal in 10 min |
| Shandong Taishan v Tianjin Jinmen TigerChinese Super League · Aug 9 | 53' | Shandong Taishan | 13% | Missedno goal in 10 min |
Read this with the caveats
- The sample is 9586 calls over 912 matches — enough to see the shape, not enough to settle a small bucket. A row with a few dozen calls can move several points on one goal.
- AiGoalBot is in closed beta and the model retrains daily, so the record mixes several builds. Each build's calls are graded only against matches it had not seen.
- This is a measurement of a model, not advice, and past accuracy does not predict future accuracy.