CxCortexscoreCx
LeaguesPricing7/1030dCortex PicksPicksSign in
CxCortexscore

AI-powered football analytics. Confidence-rated reads on every match, with the full track record of every call public.

Product

TodayFixturesLeaguesCortex PicksSkipped picks

Pricing

PlansTrack recordMethodologyNotes

Legal

Responsible useFAQTermsPrivacy
18+

Cortexscore publishes statistical and AI-generated football analysis for entertainment and informational purposes only. We are not affiliated with any sportsbook and our content is not financial, investment, or betting advice. Past performance does not guarantee future results. If betting affects you or someone close to you, see Responsible use for help.

© 2026 Cortexscore.Last read 14d ago
Football match predictions are probabilistic. We don’t promise wins — we publish picks only when the numbers line up.
Methodology

How Cortex decides when to publish.

Cortex doesn’t grade every match. It grades the ones the data supports. This page is what those rules look like, in plain English.

What Cortex readsWhy Cortex abstainsWhat the confidence labels meanThe international caveatHow results are gradedStale-read guardVersion history

What Cortex reads

Every read is built from a structured pre-pack pulled from API-Football. The pack feeds the model the same numbers you can see on the match page:

  • Last-5 form for both teams (W/D/L plus goals scored / conceded).
  • Head-to-head: last 12 meetings, aggregate score, recent results.
  • Market odds with implied probabilities, plus a single named bookmaker for context — not as a recommendation.
  • Latest injuries and suspensions.
  • League standings: rank, points, form, goal difference.
  • Rolling 5-match stats per team: xG, possession, shots, corners, pass accuracy.
  • Announced starting XI when available, with each player’s season per-90 numbers (shots, tackles, key passes, cards).

The pack is one structured payload. The model isn’t looking at images, social posts, or anything you can’t audit.

Why Cortex abstains

When the model can’t identify a quantifiable gap between its own read and what the market is pricing, it returns an abstain — a refusal to publish a pick. Five named reasons drive an abstain:

line_efficient

Market price already matches our read.

thin_data

Too little upstream signal to ground a confident call.

conflicting_signals

Form, head-to-head, and news disagree.

small_sample

The underlying stat lacks the appearances behind it.

high_variance

Outcome distribution too wide — derbies, cup ties, early season.

Abstains stay public on the fixture, the same way published picks do. We don’t graduate them out of the record to make the win-rate look better.

What the confidence labels mean

  • HIGH (65–100): the rule that governs everything new we publish. Requires three aligned signals plus a quotable consensus gap.
  • MEDIUM (60–64): published before May 2026. Not used for new picks — the calibration audit revealed this band only hit 44% over 167 settled picks, so the publish floor was lifted to 65.
  • Anything below 65 is an abstain.

The international caveat

National teams play 8–12 competitive fixtures a year — roughly a quarter of a club’s sample. Last-5 form mixes friendlies with qualifiers, sometimes months apart. Per-player minutes are sparse and split between competitive and friendly windows.

For international fixtures (FIFA World Cup, UEFA Euros, Copa America, Nations League, World Cup Qualification) Cortex lifts the publish floor from 65 to 70, leans harder on each player’s club-season form, and abstains more often. The win-rate target is the same. The volume is not.

How results are graded

A settle cron runs every 10 minutes. It looks at finished fixtures, walks the cached pick payload, and records a win, loss, or voidfor each market. Match winners settle on the full-time result. Player props settle against the relevant stat in fixture statistics; a player who didn’t take the field settles as void. Period markets settle off the live events feed.

Every settled row appears on the track record page. We don’t hide losses. The whole reason the page exists is to make “does confidence actually mean anything?” auditable from the outside.

Stale-read guard

A published pick can go stale between publish time and kickoff — a player picks up an injury, a starting XI changes, a score-vs-timeline mismatch shows up post-match. When that happens the original card stays visible (audit visibility matters) but is marked as stale, and the homepage will not surface the pick as a featured read.

Version history

V3.12026-05-21Livescore exit — focus on pre-match calibration
Cortexscore stopped publishing live scores. Realtime polling worker, in-play event timeline, live statistics, and the /live route were retired. The product is now strictly pre-match AI predictions + post-match grading via the public ledger — no commodity livescore surface diluting the positioning. API quota dropped ~65% the next day; the savings funded the WC peak.
V32026-05-04Calibration tightening
Publish floor lifted from 60 to 65 after a 390-pick audit revealed the 60–64 band hit only 44%. Player tackles and player shots got hard ABSTAIN gates (per-90 floor + opponent context + sample-size minimum). Anti-correlation rule blocks publishing overlapping period markets on the same fixture.
V22026-04Structured risk notes + abstain
Abstain became a first-class output. Risk notes moved to a structured enum (late_team_news, market_distortion, public_bias, weather, ref_tendency, small_sample, h2h_outlier, tactical_shift) so the UI can group them. Player-prop schema gained mandatory evidence fields.
V12026-03Initial release
Match-winner only, free + paid tier separation, basic 1X2 + BTTS + over/under 2.5 markets.
About these numbers.

Every pick we publish lands on a public ledger that records the outcome, the band, and the matchup. The counts here reflect what's already settled — they describe what happened, not what will happen. Football matches are independent events, and a settled record doesn't guarantee future results.

See the live track record →Common questions