A technical look at how BetBot's prediction model works. From data inputs and scoring weights to AI market selection and automated result verification.
The quality of any prediction model is determined by its inputs. BetBot pulls structured data from professional football APIs before every prediction cycle, ensuring nothing is stale or cached from previous days. Here is exactly what feeds into the model.
Live bookmaker odds form the primary input. BetBot prioritizes Bet365 (bookmaker ID 6) as the primary source, falling back to any available bookmaker when Bet365 is not listed. Odds are fetched for 1X2, Over/Under, and BTTS markets. These numbers represent the market's consensus on match probabilities and carry enormous predictive weight.
Team form is computed from recent match results. Goals scored, goals conceded, wins, draws, and losses over the last matches build a picture of current trajectory. This captures momentum — a team winning five in a row plays differently than one losing five, even if their season-long statistics look similar.
Team profiles provide season-long attacking and defensive metrics. While form captures the short term, profiles capture the long term. A mid-table team on a hot streak will still show an average profile, preventing the model from overreacting to small sample sizes.
League standings are fetched once daily and cached. The gap between two teams' positions directly feeds the scoring model. Injury and suspension data is pulled per fixture, particularly for the goalscorer pipeline where excluded players must be filtered out. Head-to-head records capture historical patterns between specific opponents.
Bet365 primary, with bookmaker fallback. 1X2, Over/Under, and BTTS markets are fetched fresh for every cycle. The market's pricing is the model's strongest input signal.
Per-fixture injury reports from the API. Critical for the goalscorer pipeline, which must exclude unavailable players. Also provides opponent injury context for AI reasoning.
Short-term form captures momentum. Season-long profiles provide stability. Both feed the scoring model independently, balancing recency against sample size.
Daily standings cache for position gap scoring. Head-to-head records capture rivalry dynamics and historical patterns that pure statistics may miss.
Fixtures, odds, team statistics, standings, injuries, and H2H records are fetched from api-sports.io. Requests go through a retry-enabled wrapper with timeout handling. Season detection adapts to calendar-year and European league cycles.
Five factors are combined: odds quality (30%), form (25%), team profile (20%), position gap (10%), and H2H bonus. The resulting value score ranks all fixtures. Only the top 8 proceed. Heavy computation runs in executors to avoid blocking Discord's event loop.
Top candidates are sent to the AI model with structured prompts. Temperature is set to 0.35-0.5 for consistency. The AI evaluates Over/Under, BTTS, 1X2, Double Chance, and Handicap, selecting the market with the strongest data support. Output is 30-45 words of reasoning.
A background loop checks outcomes every 30 minutes. Predictions are pattern-matched against final scores. Each entry in results.json stores date, fixture ID, prediction text, odds, final score, and win/loss outcome. Scorer picks verify against match events.
Live odds from Bet365, team form, season-long profiles, league standings, head-to-head records, and injury/suspension reports. All fetched fresh from professional APIs before each prediction cycle.
The AI evaluates five market types — Over/Under, BTTS, 1X2, Double Chance, and Handicap — with full statistical context. It selects the market where the data most strongly supports a prediction within the 1.40-3.50 odds range.
A background loop runs every 30 minutes. It checks completed fixtures, pattern-matches predictions against final scores, and logs outcomes permanently. Scorer picks are verified against match events for the specific player.
Full automation. No human selects matches, picks markets, or decides which results to track. The algorithm treats every league equally, and all predictions are permanently logged with no ability to delete outcomes.
Automated predictions, transparent tracking, free on Discord.
Add to Discord