TL;DR
Spain 55%, Argentina 45%. Locked and timestamped three days before kickoff. The number came from three independent methods: a validated statistical model, an LLM that argues with it, and a simulated crowd of 50 AI fans. Total model spend: under $20. The bias we found along the way is the real story.
The Prediction
| Method | Spain | Argentina |
|---|---|---|
| Statistical model (Poisson + Elo) | 55.5% | 44.5% |
| Model + LLM judge | 56.9% | 43.1% |
| Simulated crowd of 50 agents | ~52% | ~48% |
Three methods, built separately, none allowed to see the others. All three land in a four-point band. Most likely score: 1-0 Spain. A 30% chance of extra time, 18% of penalties, and penalties are a coin flip no model can call.
If Argentina win, we were not wrong. A 45% event happens 45% of the time. What Monday's follow-up article will grade is our calibration across every claim, not the coin.
Signal 1: A Statistical Model That Earns Its Number
We had 102 tournament matches to learn from. Small data punishes ambition, so the model uses three features: Elo ratings updated match by match through the tournament, squad market value, and expected-goals rates shrunk toward the mean.
Two details mattered more than any modelling choice. Argentina played two matches that went to 120 minutes, so we recomputed every score at the 90-minute mark from event data; leave that out and the model thinks Argentina score faster than they do. And we tested honestly: on leave-one-out validation the model beat a naive Elo baseline (log-loss 0.860 against 0.876). A modest, real edge. With 102 matches, anyone claiming more is overfitting.
Output: Spain 1.22 expected goals, Argentina 0.79. Spain 55.5% once extra time and penalties are simulated.
Signal 2: An LLM That Argues, Inside Strict Limits
The model cannot know that Argentina's squad is four years older and carried 240 extra minutes. It cannot know that Spain's defensive record was built against opponents who never ran in behind, which is precisely how Argentina attack. So we gave the model critics: four analyst agents covering tactics, statistics, psychology, and one whose only job is to attack whatever the others conclude.
A judge model reads all four briefs. It is never asked for a probability. Ask a language model for a probability and you get a round number near 60/40 with nothing behind it. Instead the judge outputs a bounded correction to the statistical prior, capped at a size that can move the forecast a few points at most, with its reasoning on the record.
It moved Spain up slightly, accepting the fatigue argument and rejecting four others by name: Messi's farewell, champion mystique, the comeback-specialist label, the pro-Argentina crowd. All narrative, it said. No data. Result: 56.9%.
The Finding We Did Not Expect
Then the control run. Same briefs, same judge, every name masked. Spain became Team A, Argentina became Team B, Messi became Player B1.
The blind judge moved the number the other way.
Read that again, because we had to. We built the guardrails expecting fame to pull the judge toward Argentina. The opposite happened: seeing the famous names made the judge discount pro-Argentina arguments as hype, arguments it accepted on merit when they were anonymous. The correction against bias was itself a bias, worth about 3.5 percentage points.
Key Insight
One extra API call found this. It cost forty cents. If your organisation has a language model anywhere in a decision loop — credit review, claims triage, vendor scoring — this is the audit you have not run: not "is it biased" but "in which direction, by how much, and does your fix overshoot". Ours did.
Signal 3: A Crowd That Does Not Exist Yet
The third method is the strangest. We seeded an open-source agent-society engine with the match briefing and let it generate 50 personas: fans of both sides, pundits, journalists, a betting analyst. They spent 144 simulated hours arguing on a synthetic Twitter and Reddit. 1,535 actions.
The crowd's analyst consensus: Spain 52, market near pick'em. Three points from our model, reached from a single briefing document. It also predicted the shape of the real argument: emotion running Argentina's way by two to one, analysis running Spain's, the referee as the likely flashpoint. The same technique simulates customers before a product launch, and a follow-up article will explain how.
Now Replace "Match" With the Thing Your Business Predicts
The football is a demo. Here is the same engine with the nouns swapped:
| In this article | In your business |
|---|---|
| Match outcome probability | Deal-win probability, demand forecast, churn risk, credit default |
| Tournament stats (structured data) | ERP transactions, CRM pipeline, sensor and sales history |
| Injury news, tactics, fatigue | Support tickets, analyst notes, market chatter, sales-call transcripts |
| LLM judge with a bounded correction | Risk-officer overlay that cannot silently override the model |
| Blind-name bias probe | A fairness audit that measures direction and size, not a checkbox |
| Simulated crowd of 50 fans | Simulated buyers, users and committees reacting to your launch |
| Publishing before kickoff | Forecasts logged before outcomes, so calibration is provable |
Each signal maps to an engagement we run for clients:
The forecasting engine. Your pipeline or demand data, a validated statistical core, and an LLM layer that reads what the numbers cannot: the ticket that hints at churn, the procurement email that stalls a deal. Every LLM adjustment bounded and logged, so the forecast survives an audit. Retail demand, logistics capacity, deal scoring, claims triage: same machine.
The bias audit. If a language model touches any decision in your stack, we run the masked-versus-named test on your real cases and hand you a number: which direction it leans, by how many points, and whether your existing guardrails overshoot the way ours did. One of our runs found the correction itself was the bias. Yours might too.
The market simulation pilot. Fifty synthetic customers built from your CRM segments, arguing about your next launch, price change or feature cut for a simulated fortnight. You get the objection list before your sales team hears it live, and you can interview the synthetic CFO who said no. Two weeks, scoped, with a backtest against a past launch so you can see the accuracy before you trust it.
The architecture does not care that it learned on football. One weekend, under $20, every claim published before the event it predicts. That last part is the point: we grade our own work in public, and we will grade yours the same way.
Frequently Asked Questions
What is your FIFA World Cup 2026 final prediction?
Spain 55%, Argentina 45%, most likely 1-0, with a 30% chance of extra time and 18% of penalties. Published and timestamped before kickoff.
Why combine machine learning with an LLM?
The statistical model is calibrated but blind to context: fatigue, tactics, model criticism. The LLM sees context but cannot produce a calibrated number. Bounded correction gives you both, with an audit trail.
Can this predict business outcomes?
The same pattern runs demand forecasting, churn risk, deal scoring and credit decisions. The football version exists so you can check our work against a public result.
What did it cost?
Under $20 in total model usage across all three methods.
Sunday we find out. Monday we grade ourselves in public, whatever the result.
About J33.AI
J33.AI is an enterprise AI consulting firm: decision engines, agentic simulation, and the governance around them. With over 15 years of experience in digital transformation, we build predictive analytics and AI agent systems that hold up in production, and in public.
Want the Business Version of This Engine?
Forecasting engines with bounded LLM corrections, bias audits with a directional number, and market simulation pilots scoped to two weeks. See how we automated a logistics booking flow on WhatsApp, or how we cut LLM memory costs with quantization, then explore the rest of the blog.
Contact Us