What's new in OddsIntel — model improvements, new features, and fixes. Both pipeline (engine) and UI changes are listed here.
2026-06-06
Value bets density pass · Real-money tier badge · Calibration upgrade · WC infra · Calendar correction
FeatureValue bets page redesigned for density — the previous 5-section vertical stack (h1 + subtitle + tier explainer + Telegram banner + CLV trust card) collapses to a compact 2-line header with a clickable CLV pill (links to /performance for the full breakdown) and a small Telegram icon-chip. Recovers ~500-600px of vertical space on mobile = 4+ more value-bet rows visible above the fold
FeatureLive in-play picks now surface on /value-bets as a compact 1-row strip showing the top 3 live edges + a "→ /live" link, instead of duplicating the full live grid that lives on /live. Cleaner page, same access
FeatureElite-view per-row chip renamed from "Pro" to "Calibrated" — clearer that the marker indicates the underlying model + bot have cleared the calibration gate, not just that the pick is also in the Pro feed
FeatureAdmin / real-money decision tool: each pending paper bet on /admin/place now carries a composite "Real-Money Tier" chip — ✅ Bet / 🟡 Cautious / 🔬 Paper only. Folds model calibration tier, bot CLV+ROI history, and per-bet warning flags into one operator-only signal with hover-revealed breakdown. Bets are NEVER filtered — pure information
ModelSix markets received fresh Platt sigmoid calibration today (asian_handicap_away -0.5, btts_yes/no, double_chance_1x/x2, inplay_e_under_25). Average ECE improvement: 19% → 4.5% across the six. Bot probability outputs on these markets are now materially more honest
ModelIn-play strategy fixes: inplay_i Favourite Stall now applies a Bayesian Gamma posterior update on prematch xG (was ignoring the 0-0 score information) plus a model-vs-market gate to skip low-data-league overconfidence. inplay_n received the same model-vs-market gate. inplay_o quarantined 62 pre-fix tainted bets (€577 of inflated PnL removed)
ModelCLV backfill against Pinnacle's closing line (n=517, 60 days). bot_ah_home_fav promoted to calibrated cohort (+8.89% CLV). bot_ah_away_dog retired (−29.87% CLV). bot_aggressive_v2 retired (positive CLV but bad odds-band sizing). Five acca/combo bots retired (0W/42L combined)
InfraWorld Cup 2026 odds infrastructure: daily 06:30 UTC cron sweeps The Odds API for WC fixtures during the tournament window (Jun 11 → Jul 19). First sweep landed 5,858 rows across 24 bookmakers including Pinnacle (which is available on WC specifically, unlike other Odds API soccer competitions)
InfraWeekly threshold-check cron — Sunday 06:00 UTC, runs scripts/threshold_check.py and emails the gate-count snapshot via Resend. Prevents the "Key Thresholds to Watch" counts from going stale (the manual run had gone 13 days stale before today's audit)
FixAdmin / real bets page — "Won / lost" tile now shows "Won / lost / void" when voids exist. Hit-rate denominator excludes voids (won/(won+lost) not won/settled). Surfaces the missing-bet math operator-flagged this morning
InfraCalendar correction across PRIORITY_QUEUE.md + MODEL_WHITEPAPER.md — multiple body-text references confused dates with weekdays ("Sunday 2026-06-08" when 6/8 is actually Monday). Bundle name expectation updated: Sunday's cron output will be v20260607, not v_20260608 as some task bodies said
2026-06-05
Landing redesign · Mobile audit · SEO content engine · Unified marketing nav
FeatureLanding page condensed by 49% (706 visible words → 358) in a 4-day copy-density audit. Single load-bearing CLV hero stat replaces the previous 3-stat spread. Tier explainers collapsed. Telegram CTA tightened. FAQ trimmed 5 → 3. Pricing surface demoted to a single CTA on landing (full /pricing page remains)
FeatureMarketing pages now share a single MarketingNav component — landing, pricing, privacy, changelog, terms. Adds an auth-aware profile dropdown for logged-in users and a mobile drawer. Adding a new marketing page = one component import
FeaturePast-fixture recap pages (SEO Phase 3) — every finished fixture now has a /matches/[id]/recap surface with model-quality framing, CLV display, and bot analysis. Includes SEO slugs + quality gates
FeatureTwo new /vs competitor comparison pages — /vs/sofascore and /vs/oddschecker. Plus 3 additional /vs entries (V2 batch). Landing competitor matrix now has every column linked to an in-app comparison page
FeatureLive scoreboard now shows stoppage-time minutes — "90+5'" instead of capping at "90'". Matches the BBC/ESPN convention
FeaturePer-bot drilldown modal on /admin/bots now has a "Performance breakdown" 3-row table — All-time / Since 2026-05-24 / Δ — so the post-model-batch cohort is visible alongside the all-time numbers
InfraPerformance improvements (Lighthouse Fix 2 + 3): team logos converted to next/image for proper optimization; 7 heavy SSR queries wrapped in unstable_cache for sub-second cold loads on /performance and /matches
FixGoogle Search Console Event-schema issues resolved across 6 page types — eventName, startDate.timezone, location.address structured-data fields filled out
FixVercel image quota workaround on team-logo headers (unoptimized flag where appropriate)
FixPostHog event ingestion had been silently blocked by CSP for weeks — connect-src now allows us.i.posthog.com
2026-06-04
WC infrastructure complete · Model card per match · Coolbet anonymous read · Drift signal
FeatureWorld Cup 2026 hub fully built — Overview, Schedule, Groups, Knockouts, Teams, Leaderboard, Top Scorers tabs. Group standings with 5,000-iteration Monte Carlo advancement probabilities. Tier-gated knockout AI predictions (Pro unlock). 17 WC components, 9 supporting libs, 8 backend jobs (achievement detection, bracket scoring, slot sync, daily email, lineup refresh, live xG, match previews, recap tweets)
FeaturePer-match model card with reasoning protected behind a UI layer — the model's debug payload (signal breakdown, edge computation) is summarized into model + market disagreement copy on /matches/[id] without leaking raw JSON
FeatureScore predictions and key-player chip on match detail — Poisson top-5 scoreline distribution plus a key-player surface
FeatureWin-probability route + chart component for live matches — /api/matches/[id]/wp returns goal-event timestamps + next-10-min goal probability; matched widget renders the live curve
ModelPinnacle drift signal landed — opening-vs-closing line move per outcome populated as a training feature. Backfilled across 219 matches via OddsPapi historical (CLV-BACKFILL groundwork). MFV columns pinnacle_drift_home/draw/away now feed the Sunday retrain
ModelFootball-data.co.uk CSV full-extract — 118K Betfair Exchange rows + multiple bookmakers' OU 2.5 closing across 9 bookmakers across ~8.5K matches. Backbone for the OU25-dedicated-model investigation
InfraCoolbet event-search now works anonymously (Imperva cookies only, no JWT) for the ingest path. Closes the silent 6-day outage that started 2026-05-28 when the manual JWT expired and ingest started returning 0 rows
InfraAsian Handicap prototype model (XGBoost on football-data CSVs) — first dedicated AH bundle reaches CV AUC 0.73 on n≈3,200. Not yet wired into production but available for the OU25-DEDICATED-MODEL-INVESTIGATE follow-up
FixCoolbet snapshot ingest banner — /admin/place now surfaces an amber warning when no Coolbet odds_snapshots have arrived in the last 60 minutes. Prevents the next silent outage from masquerading as a wall of "no event" chips
FeatureElite tier: each value-bet row now shows a colour-coded badge with the model's 90-day hit rate in that league (emerald ≥50%, purple ≥45%, amber ≥40%, red <40%). New "★ N strong leagues" filter pill restricts the list to leagues where the model has historically performed at ≥45% — instant focus on the leagues where the model is sharpest
FeatureIn-play picks now show the match minute and score when offered — "In-play · 23' · 0-1" — so you can tell a 3' pick (close to prematch state, model reliable) from a 67' pick (highly path-dependent) at a glance
FixAsian Handicap picks on Elite were silently dropping the stake suggestion. Every Elite row with a recommended size now shows the units regardless of market
Fix100% of Asian Handicap picks had been storing NULL recommended_bookmaker, so /admin/place rendered "—" instead of the actual best book. Fixed — AH rows now surface their best accessible bookmaker like every other market
ModelPer-bot CLV audit against Pinnacle's closing line completed (60d, n=517). bot_v10_all confirmed at +17.5% honest total ROI on n=157 — strongest signal in the lineup. Retired bots' decisions all confirmed correct
ModelInplay strategy calibration audit: inplay_l (Goal Contagion) cleared the 5% ECE gate at 4.96% with +25.8% ROI on n=31, promoted to the calibrated cohort. inplay_i flagged for recalibration (ECE 24.6%, n=11). inplay_j silent failure root-caused to a Bayesian prior shrinkage mismatch and unblocked — strategy now uses a local conjugate Gamma update with lighter shrinkage matching the strategy's design
2026-06-02
World Cup 2026 hub · Pro tier overhaul · Bracket challenge · Global feedback widget
Feature/world-cup hub launched: full tournament UI with Overview, Schedule, Groups, Knockouts, Leaderboard, and Top Scorers tabs — BBC-style top-level navigation, mobile-first carousel, country flags everywhere
FeatureBracket Challenge game — pick the entire knockout bracket (R32 → Final), compete against 5 named AI ghosts + 40 anonymous "Player NNN" variants + the rest of the community on a combined leaderboard. Top 3 humans win 1 month of Elite, free
FeatureStage-gated bracket: each round opens after the previous resolves (BBC pattern), so you don't have to guess your R16 picks before knowing who advanced from the groups
FeatureShareable brackets — every saved bracket gets a unique share URL with an auto-generated OG preview card showing your top picks. Web Share API on mobile, clipboard fallback elsewhere
FeatureGroup standings predictor: pick the order of every group + the best 8 third-place teams (48 picks · up to +192 pts toward the leaderboard)
Feature15 World Cup achievements with badge icons — first to lock, all 12 groups perfect, beat the AI in R32, called the champion, vs-you streaks, and more. Detection runs every 15 minutes during the tournament window
FeatureGemini-generated AI match previews (80-120 words) on each World Cup fixture, surfaced as inline expanders on /world-cup
FeaturePro Tier V2: every value-bet row now shows the selection, odds, and recommended bookmaker (no more directional-only restriction). A new "Live now" auto-refreshing section above the main list surfaces fresh in-play picks every 60 seconds
FeatureCohort transparency: Elite tier sees picks from all 39 active bots; calibrated-cohort picks (also shown to Pro) get a "PRO" badge so you can tell the curated subset from the wider Elite-only set
FeatureLive in-play win-probability chart on every match detail page — updates as the match unfolds. Pro+ feature
FeatureUnified Value Bets feed: every pick now carries a Pre-match or In-play chip plus a status indicator that switches between countdown (4h 45m), pulsing LIVE, and Won/Lost/Void result pills as the match progresses
FeatureCLV trust banner — a single CLV-first hero shown across landing, /value-bets, and /world-cup. Pulls live 30-day ROI + sample size + average closing line value from a server-side cache, no client wait
Feature"Give feedback" button now appears on every page (was previously missing on logged-in routes). Copy rewritten to invite ideas and suggestions, not bug reports — "Tell us what to change"
FeatureBack button: a small top-left pill on every app page so you can always reverse one step without thumbs reaching for the browser chrome
Model70% confidence display cap: picks at >70% calibrated probability now render as "70%+" instead of the raw number. Calibration audit showed the model is overconfident above this threshold on small samples
DataWorld Cup fixtures, lineups, predictions, ELO ratings backfilled across 6,921 historical international fixtures (25 competitions). The national-team predictor runs nightly and feeds /world-cup directly
InfraSentry trimmed to feedback-only — error tracing dropped to zero sample rate so the free tier doesn't get capped. The feedback modal still ships every report
FixMobile polish: tighter /world-cup hero so content shows above the fold, knockout placeholder now a compact 5-row schedule (was 31 stacked TBDs), leaderboard de-cluttered, group carousel sync fixed (swiping cards updates the letter tabs)
FixStarted prematch picks on /admin/place no longer disappear — they stay visible with a "Started Nm" tag and a live in-play edge column so manual placement decisions during early minutes are possible
FixSettled bets dropped from the active Value Bets feed (they were showing as muted gray "LIVE" badges instead of being filtered out)
2026-05-28
426 more leagues · In-play fixes · DNB data fix
DataModel coverage expanded to 426 additional leagues — Kazakhstan, Estonia, Georgia, Ethiopia, Iraq, Peru, Uruguay, Indonesia, and many more. Picks in these leagues were previously filtered out due to insufficient historical data; they now go through the full model and value-bet pipeline.
ModelFixed 6 in-play strategies that were silently skipping 62% of matches because prematch predictions data only covers ~38% of leagues. Strategies now fall back to expected-goals data which has near-100% coverage.
ModelIn-play Post-Equalizer strategy capped at odds 5.0 — data audit showed −50% ROI at 5.0–6.0 and −59% above 6.0.
FixIn-play BTTS bots were silent for 4 days due to a missing column in the candidate query. Fixed — both bots now active.
FixDraw No Bet market data fixed — an API naming mismatch meant DNB odds were stored as zero since the market launched. Real prices now land correctly.
2026-05-27
UI polish · Copy accuracy · Off-season empty state
FixProfile page copy corrected: starred matches now accurately described as pinned to top of your feed
FixWatchlist alerts description updated to accurately say 'starred leagues' instead of saved matches
FixPredictions page now shows a clear off-season explanation (Aug–May cycle) instead of a confusing 'check back tomorrow' message
FixContrast improvements across several pages — low-opacity labels lifted to meet accessibility standards
2026-05-25
Value bets · Performance page · Draw No Bet · Meta-model
FeatureBot consensus chip ('N bots agree') now visible to all tiers on the value bets page, not just Elite
FeatureLine direction chip per pick: ↓ green means the market has moved toward our pick (sharpness signal), ↑ blue means the value is widening
FeatureCompact league, kick-off time, and best bookmaker subtitle on every value bet row for quick line-shopping
FeatureFree tier: highlighted pick now shows last-30-day ROI and sample size as a conversion hook
FeaturePerformance page: platform-wide cumulative P&L chart (90-day, daily buckets) as the headline trust signal
FeaturePerformance page: win streak and losing streak badges with sample-size disclaimer
FeaturePerformance page: calibration table (5 probability buckets) showing model accuracy vs actual outcomes
DataDraw No Bet (DNB) market now available on match pages — real DNB odds ingested from 13 bookmakers
ModelSecond-layer meta-model (B-ML3-V2) integrated into the pipeline — scores each pick's expected closing line value before selection; currently in passive monitoring mode
DataOvernight odds capture at 02:00 and 04:00 UTC — morning value picks now use significantly fresher line prices
2026-05-24
6 new model signals · Asian Handicap overhaul · BTTS in-play bots
Model6 new prediction signals added: season phase (fatigue and urgency patterns in early/mid/late-season matches), line velocity (how fast Pinnacle moves before kick-off), per-league draw rate, xG overperformance (regression-to-mean on expected goals), injury severity weighting (ACL/fracture counts 3× more than a knock), and rolling player ratings
ModelAsian Handicap model overhauled: retired the away-dog bot (12-day backtest: −31.8% ROI), re-activated with a handicap line floor that lifts it to +43% ROI in backtesting, and filtered the home-fav bot to avoid a miscalibrated handicap zone (was −49% ROI on +0 lines)
Feature2 new BTTS in-play bots: one fires on 1-0 / 0-1 score states with active shot creation, one targets 0-0 games entering the final 25 minutes with high shot volume — both calibrating on first real results
2026-05-19
Expanded league coverage · Model improvements · In-play signals
DataModel predictions now cover 13 additional leagues: USA, Brazil, Argentina, Mexico, Japan, Sweden, Norway, Poland, Austria, Denmark, Czech Republic, China, and Russia
ModelImproved in-play signal accuracy — in-play picks now go through stricter evidence filters before being surfaced
ModelAdded BTTS (Both Teams to Score) in-play signals — new market type available during live matches
ModelAdded Under 1.5 goals market to value picks
2026-05-17
Performance page accuracy · Retired strategies
FixPerformance page headline now shows active-strategy ROI separately from all-time ROI — no more mixing active and retired results
FixRetired strategies now shown in a separate collapsible section rather than polluting the active leaderboard
FixPerformance charts now correctly start at each strategy's starting bankroll (not first bet outcome)
FixStrategies with zero bets or no retirement reason hidden from the retired section
2026-05-13
New inplay strategies · Performance quality filter
Model2 new inplay strategies added: Underdog Hold (backs the underdog when the leading team stalls in the second half) and Post-Equalizer (picks up value in the minutes immediately after an equalizer)
FeatureQuality filter toggle on the performance page — switch between all strategies and high-quality-only view
FixValue bets: 'N bots agree' chip repositioned inline with the match name for a cleaner layout
2026-05-12
Value bets display · Odds quality · Mobile improvements
FeatureValue bets page now shows Pinnacle odds and a live edge indicator — see how much value remains vs the sharpest book
FeatureStale pick dimming: value bets where odds have moved significantly are visually dimmed with an explicit status badge
FixAsian Handicap labels now display correctly (e.g. Away +2 instead of Away -2)
FixValue bets page now shows calibrated probability instead of raw model probability
FixMobile layout for value bets replaced with a proper card layout — no more truncated table rows
FixPage load speed improvements: Lighthouse scores improved across SEO, accessibility, and LCP
2026-05-10
Odds quality · Duplicate fixtures cleaned up
FixOver/Under odds cleaned up: 3 unreliable sources removed, plus an implied-sum sanity check to catch malformed lines
Fix1,425 duplicate fixture entries removed — match list and predictions pages no longer show the same match twice
2026-05-07
Match detail redesign · Signal improvements · Predictions expansion
FeatureMatch detail fully redesigned with tabbed layout: Overview, Intel, Context, and Stats tabs
FeatureModel probabilities now shown in the Intel tab — see exact predicted win/draw/loss percentages
FeatureVenue and referee shown in the Context tab for all matches
FeatureTab badge counts — e.g. Intel tab shows number of active signals without opening it
FeaturePredictions pages now show league fixtures grouped by day with team crests and a 2-column grid layout
FixOdds and probabilities correctly hidden for finished matches — Intel tab promoted to primary view post-match
ModelTier D renamed to Tier C across the model — clearer coverage tier labelling