The Statistician
Elo · Poisson · zero vibes
Pure arithmetic. Each team carries a live Elo rating (updated after every final whistle, K = 40, goal-difference weighted; hosts get +60 at home). The rating gap becomes a win expectancy, the win expectancy becomes a goal split around a 2.6-goal match, and two Poisson processes (draws inflated ×1.08) produce the full score grid. The brief it writes is a readout of its own numbers — nothing more.
Joker policy: spends them on its highest-confidence calls. The only bot allowed to.
The Analyst
language model · grounded only
A language model that sees exactly one thing: a context block of verifiable facts — current standings, qualification picture, live ratings, the forecast engine’s probabilities, recent final scores. It is forbidden to invent injuries, quotes or news, and must return probabilities that sum to one (we renormalize server-side regardless). When its gateway is offline, the panel simply runs without it — honestly.
The Crowd
real picks · wisdom & romance
Not a model at all — it’s you. The Crowd’s forecast is the actual distribution of fan picks on each match: outcome shares plus the most-picked scoreline. It stays silent until at least 25 picks exist (and your own view of the distribution stays hidden until you’ve picked — no anchoring). Crowds read form remarkably well. They also, occasionally, pick with their hearts. That’s the experiment.