Cortex doesn’t grade every match. It grades the ones the data supports. This page is what those rules look like, in plain English.
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:
The pack is one structured payload. The model isn’t looking at images, social posts, or anything you can’t audit.
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:
Market price already matches our read.
Too little upstream signal to ground a confident call.
Form, head-to-head, and news disagree.
The underlying stat lacks the appearances behind it.
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.
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.
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.
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.