The broadcast desk, explained

From bookmaker odds
to probabilities

The terminal doesn't guess. It takes the market's own prices, strips out the bookmaker's margin to recover fair probabilities, then fits a goal model to read off every scoreline and goal market. Here's the whole pipeline — and what every number means.

I

The pipeline

Four stages. Every figure on the dashboard is the output of this exact sequence.

  1. 01

    Pull the odds

    Every market starts as real bookmaker prices. For each fixture we read the moneyline (home/draw/away) from every bookmaker that prices it, then average them into a consensus — more books, more reliable.

    source · The Odds API
  2. 02

    Remove the vig

    Bookmakers price every market slightly above 100% — that overround is their margin. We strip it out (“de-vig”) so the probabilities are fair and sum to exactly 100%. This is the single most important step.

    method · de-vig
  3. 03

    Fit a goal model

    For each fixture we solve for the pair of Poisson scoring rates whose implied win/draw/loss best matches the fair market. That score matrix gives us every goal market — over/under, BTTS, clean sheets, the most-likely scoreline and the full correct-score grid.

    model · Poisson
  4. 04

    Render the desk

    The dashboard consumes normalised JSON from server-side routes, so the interface is identical whether the data is live or sample. Upstream calls are cached and shared across visitors to respect the free quota.

    output · the terminal
II

The tabs

Eight views onto the same de-vigged consensus and goal model.

Live

In-play scores, recent results and upcoming kickoffs, refreshed while a game is actually on.

Matches

Per-fixture win/draw/loss, expected goals, over/under lines, clean sheets and the correct-score grid.

Winner

Every team's probability of lifting the trophy, de-vigged from the outright market.

Predictor

Pit any two teams — even unscheduled — through the same goal model, with a neutral-venue toggle.

Goal Threat

Players ranked by their chance to score in the next fixture, from anytime-goalscorer odds.

Bets

A backtest of the model's flat-stake picks against real settled results — honest P&L, not a sales pitch.

Edge

Where the fair price beats the best bookmaker price: positive expected-value spots from line shopping.

Groups

Group standings and qualification context for the tournament structure.

III

Where the data comes from

Every board in both terminals, and the feed behind it — including the ones running on sample data. This is the same text the info point beside each board shows, so the two can't drift apart.

NFL terminal

BoardAPI-Sports schedule + The Odds API prices
The schedule and the scores come from API-Sports' American Football feed, which carries the whole calendar — the Hall of Fame game, all three preseason weeks, the regular season and the play-offs — and states each game's stage, week, quarter scores and live clock outright. Prices are merged on from The Odds API, which lists only fixtures a bookmaker is currently quoting and so can't describe a season on its own; the two are matched on the teams and kickoff. A game with no line yet still appears on the board, just without a prediction. Play-off fixtures stay off it until the teams are known. Where a game is marked as having moved, that compares today's de-vigged price against the same market a couple of days earlier, pulled from The Odds API's historical archive — it reports what the books did, not a claim that the model called it. A “public” chip marks where recreational books price a side shorter than the exchanges and low-margin books do: that gap is retail money, so the public price on that side is likely inflated. It is a contrarian marker and not a prediction — it says which side carries the money, never which side wins. Exchange liquidity on preseason games is thin, so treat it as weaker in August than it will be in the regular season. A green +EV badge means one book is paying longer than the whole market's de-vigged price on that outcome — the consensus is treated as fair, and the badge is the gap against the best single quote. Thin markets and implausibly long prices are filtered out rather than shown as free money, and none of it is advice: soft books move and limit fast.
EdgeThe Odds API — best price vs the de-vigged consensus
Prices are averaged across books in implied-probability space and the bookmaker margin — the vig — is stripped out to recover fair probabilities. An outcome is listed when a single book pays longer than that fair price, which is expected value if the consensus is right. Thin markets and implausibly long prices are filtered out rather than shown as free money. The public-money list is a different measure: recreational books shading a line against the exchanges, which marks an inflated price rather than a likely winner. None of it is advice — soft books move and limit fast.
MovementThe Odds API — historical odds archive
Each game's current de-vigged price is compared against the same market a couple of days earlier, pulled from The Odds API's historical archive. It reports what the books did and is not a claim that the model called it. In the preseason a large move almost always means news about who is actually playing, which is why the games that haven't moved are as informative as the ones that have.
StandingsAPI-Sports, falling back to ESPN — live standings
The Odds API serves prices and scores but no standings, so records, points and streaks come from a second upstream, cached for an hour: API-Sports' American Football feed where the plan covers the running season, otherwise ESPN's public standings. Note what the table shows before the season opens — these are preseason records, because that is the phase currently being played; the board switches to regular-season records the moment week 1 starts, and preseason results never carry into them. The 1–7 playoff seeds are computed here rather than taken from a feed: four division winners ranked by win percentage, then the three best remaining teams per conference, the same rule for live and sample rows alike.
LeadersThe Odds API — anytime-touchdown player props
Each player's anytime-touchdown price is averaged across the books quoting it and de-vigged into a probability, then the whole slate is ranked. Regular-season games only: bookmakers don't price touchdown props on preseason games, because nobody knows how many snaps a given player will take. During the preseason this board therefore reads the opening regular-season slate rather than the games being played tomorrow.

World Cup terminal

LiveAPI-Football — live fixtures feed
Scores come from API-Football (/fixtures), including the live elapsed minute, and refresh automatically while this tab is open. The Odds API scores feed is a fallback.
MatchesThe Odds API — bookmaker H2H, de-vigged
Match win/draw/loss probabilities come from a de-vigged consensus of bookmaker moneyline (H2H) odds. Goal and scoreline markets are read off a Poisson model fitted to that same consensus.
GroupsAPI-Football — group standings
Group tables come straight from API-Football (/standings) and update as results land. The top two of each four-team group advance.
WinnerThe Odds API — outright winner market, de-vigged
Tournament-winner odds are a de-vigged consensus of the 'FIFA World Cup Winner' outright market across every available bookmaker.
PredictorModel — Poisson over de-vigged team strengths
For unscheduled pairings there is no direct market, so team strengths are derived from the de-vigged outright odds and run through the same Poisson model used everywhere else.
Goal ThreatAPI-Football — tournament top scorers
The leaderboard is real top-scorer data from API-Football (/players/topscorers), ranked by goals then assists. If unavailable it falls back to The Odds API anytime-goalscorer probabilities.
BetsBacktest: API-Football · live tracker: The Odds API
The backtest replays finished WC2026 fixtures against their real pre-match consensus odds (captured offline from API-Football) through the same tested engine. The live tracker settles model-favourite bets against live results from The Odds API.
EdgeThe Odds API — best price vs de-vigged consensus
The value list compares every bookmaker's best price against the sharp de-vigged consensus for the same outcome, and shows only those where the price beats fair value (+EV). It shares the matches odds cache, so it costs no extra quota. Alongside it, the goals-market edges compare our Poisson read against API-Football's own over/under prices per fixture. An empty list is the normal state of an efficient market, not a failure.
InjuriesAPI-Football — injuries & suspensions
Team news from API-Football (/injuries): players ruled out or carrying a late fitness doubt, deduped to each player's latest status. Availability materially affects match outcomes.
SignalsFusion — Market + Model live · Social & Online coming
termee fuses independent signals per match. Two are live and genuinely fused: the Market signal (a de-vigged consensus of bookmaker odds) and a second Model read (API-Football's own win/draw/loss prediction). The Social signal (sentiment across X, Reddit, TikTok and YouTube) and the Online signal (virtual online-league results) are modelled placeholders, shown but not yet contributing, until their feeds are connected.
IV

What the numbers mean

Every term on a match card, in plain language. The same definitions power the in-app tooltips.

Win / Draw / LossW/D/L
The chance the home team wins, the match is drawn, or the away team wins. The three add up to 100% — they're a de-vigged consensus of bookmaker moneyline odds.
Expected goalsxG
The average number of goals the model expects each team to score in this match. It's the scoring rate that feeds every goal market below — not a prediction of the exact final score.
Both teams to scoreBTTS
The probability that both teams score at least one goal (i.e. the final score is not a clean sheet for either side).
Clean sheetCS
The probability a team concedes zero goals — i.e. keeps a clean sheet. 'CS BRA' is the chance Brazil's opponent fails to score.
Over / UnderO2.5
The probability the two teams combine for more than a given number of goals. 'O2.5' is the chance of 3 or more total goals; the Under is simply 100% minus the Over.
Most likely scorelineMost likely scoreline
The single exact score with the highest probability under the model. Even the likeliest scoreline is usually well under 20% — football is high-variance, so treat it as the modal guess, not a forecast.
Correct-score gridCorrect-score grid
A heatmap of every exact scoreline's probability (home goals down the side, away goals across the top). Brighter cells are more likely; it's the full picture the 'most likely scoreline' is drawn from.
De-vigged (vig removed)VIG
Bookmakers price every market slightly above 100% — that overround is their margin (the 'vig'). We strip it out so the probabilities are fair and sum to exactly 100%. The 'VIG' figure is how much was removed.
Bookmaker consensusbooks
These numbers aren't one bookmaker's view — they're an average across every bookmaker that priced the market. 'N books' is how many fed this fixture; more books means a more reliable consensus.
Consensus odds (decimal)ODDS
The actual decimal price a bet would get, averaged across bookmakers — still including the margin. Decimal odds of 2.50 means a winning £1 stake returns £2.50 (£1.50 profit). These are the real prices behind the de-vigged percentages.
Win probabilityWin %
Each team's chance of winning the game, from a de-vigged consensus of bookmaker moneylines. The NFL market is two-way (no draw priced), so the two percentages add up to 100%. The split bar underneath shows the same number visually — the centre tick is 50/50.
Point spreadSpread
The bookmakers' points handicap for the game, shown against the home team. 'Chiefs -3.5' means the market makes the Chiefs a 3.5-point favourite: they must win by 4+ to 'cover'. A plus number means the home side is the underdog and can lose by up to that many points and still cover.
Cover probabilityCover %
The chance the home team beats the spread — wins by more than the handicap — de-vigged from the spread market's two prices. It hovers near 50% by design: bookmakers set the line so both sides are roughly a coin flip.
Game total (over/under)O/U
The market line for the two teams' combined points, priced as Over or Under. 'O 44.5 52%' means a 52% de-vigged chance the teams combine for 45+ points. Higher totals mean the market expects a shootout; lower, a defensive grind.
Model pickModel pick
The side the de-vigged bookmaker consensus makes the favourite, with its win probability. Because these probabilities come from the market itself, betting the pick at market prices has no built-in edge — it's a read on expectations, not betting advice.
Playoff seedSeed
The team's current playoff position in its conference: seeds 1–4 go to the four division winners (ordered by record), seeds 5–7 to the three best non-winners (wild cards). Seven teams per conference make the playoffs; the 1 seed gets the only first-round bye.
Point differential+/-
Season points scored minus points allowed. A positive number means the team has outscored its opponents overall — a steadier quality signal than the win-loss record, which can swing on close games.
Anytime touchdownAnytime TD
The probability a player scores a touchdown at any point in their next game, de-vigged from bookmaker anytime-TD props. Rushing and receiving TDs count; a quarterback's passing TDs do not.
V

The honest part