Changelog

This page tracks all updates and improvements to the Daily Sport Pick automated betting tips bot. The bot is continuously improved to deliver better, more accurate football betting tips every day.

Version 3.3.0 2026-04-07

  • Champions League page: fixed H1, logo and betting record showing Europa League content
  • Homepage: removed hardcoded ML banner with stale accuracy stats
  • Homepage: removed duplicate Telegram CTA block
  • ROI tooltip: updated odds range from 1.20-1.60 to 1.20-2.50, win rate to 60%+
  • All 13 competition pages: fixed duplicate Betting Record title
  • AI model statistics: added context note below ensemble accuracy explaining low score
  • AI model statistics: filtered Recent Predictions table to Tier 1/2 leagues only
  • How Our AI Works: fixed broken link /ai-model-statistics/ to /stats/ai-model-statistics/
  • Statistics page: fixed Serie A and Serie A Italy duplicate competition names in DB
  • Yoast SEO: confirmed meta descriptions on all key pages

Version 3.2.0 2026-04-04

  • dsp_hero shortcode with live DB stats (win rate, model accuracy, matches trained, win streak, ROI popup)
  • dsp_telegram_cta shortcode with live Telegram member count via API (cached 1 hour)
  • dsp_email_cta shortcode moved above the fold on homepage
  • dsp_bankroll_curve shortcode with Chart.js graph on statistics page
  • dsp_league_accuracy shortcode on all 13 competition pages with live model accuracy
  • generate_og_image() 1200×630 OG image per analysis post with Yoast meta
  • generate_story_card() 1080×1920 Instagram Story pipeline with base64 logos
  • post_instagram_story() Graph API Story posting in social pipeline
  • FAQPage JSON-LD schema added to analysis posts
  • inject_internal_links expanded with more terms and correct /tips/ URLs
  • bt-tips-grid id=today-tips anchor for hero CTA button

Version 3.1.0 2026-04-03

  • Pipeline split: fetch_odds moved to 03:00, bot –no-social at 07:00, –social-only at 09:00
  • Pinnacle replaces Unibet as quality filter bookmaker
  • Odds range widened: 1.20-2.50 (was 1.30-1.60)
  • MIN_BOOKS reduced to 2, MAX_SPREAD increased to 0.40
  • Match limit increased to 30 (was 15), max per league to 3 (was 2)
  • Championship (league 40) and more Tier 2 fixtures now included
  • Expected goals from ensemble_details passed to Claude prompt
  • Claude prompt: more markets added (Over 1.5, Under 3.5, AH +0.5, Double Chance)
  • Claude prompt: min 3 main picks, min 35 ensemble score for extra picks
  • retry_social.py: pidfile added, rate limit handling improved
  • Google sitemap ping added after each WordPress analysis post
  • SEO: Yoast title template fixed (removed trailing separator dot)
  • SEO: meta descriptions added for all competition, learn and stats pages
  • Newsletter: auto-delete bounce handling for 550/551/553 errors
  • Linkbuilding: AlternativeTo, PeerPush, NextGen Tools submissions

Version 3.0.0 2026-04-02

  • Backtester built: backtest.py compares GB accuracy per competition on settled ml_predictions
  • Backtest results stored in backtest_results table with tier-aware minimum match thresholds
  • Tier 1/2 competitions require 50+ matches, tier 3/4 require 20+, tier 5/6 use default weights
  • Backtest cron: every Sunday 04:30, auto-adds competitions as data grows
  • GB accuracy range across 10 competitions: 57.5% (Bundesliga) to 68.8% (Champions League)
  • Publication filter added: ENSEMBLE_MIN_SCORE variable in bot.py (currently 0 = inactive)
  • Filter activates when ensemble_score >= threshold, ready to enable ~end of April with sufficient data
  • Foundation laid for dynamic per-competition ensemble weighting (pending ~4 weeks of ensemble data)

Version 2.9.0 2026-04-01

  • Ensemble prediction system: GradientBoosting (66.5%), Poisson and Dixon-Coles MLE running in parallel
  • Home/Away split ELO ratings — accuracy improved from 56.6% to 66.5%
  • Poisson model live: daily predictions with score matrix and O/U probabilities
  • Dixon-Coles MLE model live: scipy L-BFGS-B optimisation per league, rho correction for low scores
  • ensemble.py: combines all models into confidence score 0-100, stored in ml_predictions.ensemble_score
  • Cron extended: 06:10 poisson –predict, 06:20 dixon_coles –predict, 06:30 ensemble.py
  • Consensus odds: minimum 3 preferred bookmakers required, max 0.25 spread between bookmakers
  • Match ranking: deterministic scoring before Claude (tier + ELO signal + implied probability + market consensus)
  • Extra picks: bot now generates up to 3 extra picks (is_extra=1) in addition to 3 main picks
  • Settle logic: post_results only fires when all 3 main tips (is_extra=0) are settled
  • Extra picks excluded from social result posts
  • Dynamic season detection: get_season() function replaces all hardcoded season values
  • New league mappings: Primera Division Uruguay, Liga Profesional Argentina, Segunda Division Spain
  • match_time now correctly passed from match object to tip via context coupling

Version 2.8.0 2026-03-31

  • Tipcard now shows only main 3 tips (is_extra=0 filter applied)
  • X (Twitter) tokens renewed and working
  • retry_social.py now loads .env.twitter correctly
  • Analysis page: league standings added per match (both teams, position/points/W/D/L/goals)
  • Standings only shown when both teams are found in standings data
  • Standings responsive on mobile: W/D/L/Goals/GD hidden on screens < 600px
  • Author box extended with Bluesky, YouTube and LinkedIn social links
  • Analysis table: zebra striping for alternating row backgrounds
  • Analysis table: form dots added for first 3 tips
  • Analysis table: kickoff time (UTC) added per match
  • Analysis post: odds badge with tip text injected below each match h2 heading
  • AF_SETTLE_MAP: added Liga Leumit Israel (382), Ligue 1 Senegal (403), Primera Nacional Argentina (129)
  • Season 2026 configured for Primera Nacional Argentina (league 129)

Version 2.7.0 2026-03-30

  • AF_SETTLE_MAP expanded from 20 to 119 competition mappings (all tier 1-6 leagues)
  • Added: Africa Cup of Nations – Qualification, Persha Liga, Liga Leumit, HNL, NB I, A-League, MLS, J1/J2/J3 League, and 90+ more
  • Added: CONMEBOL Recopa, CAF Super Cup, Copa del Rey, Taca de Portugal, FA Cup, DFB Pokal and other cup competitions
  • Fixed: pending tips can now be settled for all supported competitions
  • Fixed: predict_all.py NameError – get_team_elo() was referenced as get_elo(), backfill for 23-27 March completed
  • Added international break detection – bot now warns Claude when fixtures fall within FIFA international windows
  • Added prompt rule: during international breaks, skip matches with abnormal odds or uncertain squad availability
  • Fixed odds reliability: minimum 2 preferred bookmakers required before accepting odds for a fixture
  • Switched from first-bookmaker odds to consensus odds (average across all preferred bookmakers)
  • During international breaks: Tier 2 (internationals) gets priority over club fixtures
  • During international breaks: Tier 4/5/6 (obscure club leagues) are skipped entirely
  • Added known nations whitelist for friendlies: expanded to 60+ nations
  • Prompt updated: bot now picks 1-3 tips instead of forcing exactly 3 on low-match days
  • Added Extra Picks: bot now generates 3 additional picks (website only, not on social media)
  • Extra picks stored in DB with is_extra=1 flag and shown in separate block on homepage
  • Added kickoff time display on tip cards (UTC)
  • Backfilled 950+ ML predictions for 23-27 March with results settled

Version 2.6.0 2026-03-27

  • Video generator v2: animated captions synced to voice-over
  • Captions visible without sound using SentenceBoundary timing
  • Pillow-based caption overlay with black background and white text

Version 2.5.0 2026-03-27

  • Raised minimum odds filter from 1.20 to 1.30
  • Added preferred bookmaker check: matches without Bet365/Bwin/Unibet/Pinnacle are skipped
  • Removed Saudi Division 1 (ID 308) from league whitelist
  • Only odds from preferred bookmakers are used when available

Version 2.4.0 2026-03-27

  • Expanded tier system from 3 to 6 tiers
  • Tier 1: Top European leagues + Champions League / Europa League
  • Tier 2: Major international tournaments (Libertadores, Club World Cup)
  • Tier 3: Second divisions top-5 + strong world leagues (Scottish Prem, J1, MLS, Argentina)
  • Tier 4: Third divisions + Scandinavia + Eastern Europe + Middle East
  • Tier 5: National cups + lower divisions + smaller European leagues
  • Tier 6: International Friendlies (fallback only)
  • Scottish Championship moved to Tier 3
  • Tier priority added to AI selection prompt

Version 2.3.0 2026-03-27

  • Dynamic league coverage: from 14 fixed leagues to 316+ fixtures per day
  • New get_matches() using single API call to /fixtures?date=TODAY
  • Whitelist of 130+ leagues based on all_leagues_raw.json
  • Maximum 2 matches per league in candidate list
  • Increased candidate pool from 8 to 15 matches passed to AI
  • Introduced tier system (initially 3 tiers)
  • Added hard odds filter 1.30-1.60 enforced in code

Version 2.2.0 2026-03-23

  • WordPress plugin v2.2: added standings, top scorers and assists shortcodes
  • Added Font Awesome 6.7.2 in footer
  • Added health check cron at 08:15 UTC with Telegram alert
  • Added Instagram Reels support
  • Added Facebook video posting
  • Added generate_cover_image() for 1080×1080 thumbnail

Version 2.1.0 2026-03-20

  • Added YouTube video pipeline with edge-tts voice (en-AU-WilliamNeural)
  • Added thumbnail generation via make_yt_thumbnail()
  • Added YouTube OAuth2 token authentication
  • Added Bluesky posting
  • Added X (Twitter) posting with AH abbreviation and emoji support

Version 2.0.0 2026-03-18

  • Migrated from The Odds API to API-Football Pro
  • Added DB columns: home_form, away_form, home_logo, away_logo, home_stats, away_stats, h2h
  • Added tipcard generation with team logos, form and H2H data
  • Set odds range to 1.20-1.60
  • Added bookmaker filter: Bet365, Bwin, Unibet, William Hill, Betway, Pinnacle
  • Added GA4 tracking (G-CYBQPCMC7F)
  • Integrated injuries endpoint (/v3/injuries)
  • Integrated API predictions endpoint (/v3/predictions)

Version 1.0.0 2025-01-01

  • Initial bot launch
  • Basic tip generation using Claude AI
  • WordPress integration
  • Telegram posting
  • Newsletter via SMTP
Scroll to Top
Telegram Bluesky Twitter Facebook Instagram YouTube LinkedIn