
Football Intelligence Lab — Match Forecasts
Football Intelligence Lab
Match Forecasts, xG, Risk & Model Consensus
Version 1.0.5
Football Intelligence Lab is a premium, non-wagering football-research Agent
for individual matches and complete fixture slates. It combines independent
model estimates, Model Expected Goals, scoreline scenarios, multi-model
consensus, availability context, uncertainty, data confidence and professional
football-tech dashboards.
Important safety boundary: Every request is screened before reasoning,
browsing, calculations or tool use. Any request with a wagering objective is
refused in full. The Agent does not process bookmaker odds, remove vig,
calculate fair prices, EV/value/edge, Kelly, stakes or bankroll allocation;
select bets or betting markets; construct parlays; calculate combined
wagering probabilities; or offer to complete those tasks later.
Forecast disclaimer: Model probabilities and expected-goal forecasts are
analytical estimates, not guarantees. They are intended for non-wagering
football research only.
What the Agent provides
Match Analysis
For a neutral request such as:
Analyze Arsenal vs Liverpool.
The Agent can return:
- Home/Draw/Away model estimates;
- Model Expected Goals;
- likely scoreline scenarios;
- Goals, Strength, Form, Context and Availability submodels;
- quality-adjusted Model Consensus;
- Model Disagreement;
- favorite-vulnerability context;
- availability impact;
- rest and schedule-congestion context;
- uncertainty;
- data confidence;
- key match drivers;
- standalone HTML Match Intelligence Dashboard.
Model Consensus
The Agent shows available submodels separately and does not force unsupported
models to produce a number. Effective weights are adjusted by evidence quality
and renormalized across active models.
Favorite Vulnerability Context
The Agent can describe whether a model favorite appears structurally vulnerable
because of factors such as disagreement, absences, rest disadvantage,
congestion or opponent trend. This is not an upset probability and not a
betting signal.
Availability Impact
Public team-news and availability evidence is used conservatively. The Agent:
- does not diagnose injuries;
- does not infer availability from silence;
- keeps unconfirmed reports partial;
- does not invent player importance;
- labels derived structural impact as model/context output.
Full Slate Mode
For a neutral request such as:
Analyze today’s Premier League fixtures.
The Agent can generate:
- all resolved fixtures;
- model probabilities by match;
- total Model Expected Goals;
- model agreement;
- favorite-vulnerability context;
- uncertainty;
- data confidence;
- a full slate table;
- a standalone HTML Slate Intelligence Dashboard.
Data Quality Review
The Agent can show:
- verified evidence;
- partial evidence;
- model-derived fields;
- unavailable fields;
- source attempts;
- freshness concerns;
- observed xG coverage;
- active and inactive models;
- major evidence gaps.
Mandatory runtime preflight
Version 1.0.5 moves the boundary into the required Skill runtime path and makes
the deterministic gate the first mandatory action for every request.
Before research or calculation, the Agent must run:
python scripts/runtime_safety_gate.py \
--mode input \
--response-only \
--text '<complete verbatim user request>'
When the gate blocks, the Agent returns only the fixed refusal and ends the
turn. It must not continue with probabilities, xG, scorelines, tactical context,
tools or dashboards in that response.
Before sending a substantive allowed response, the Agent must also run the gate
against the complete draft using --mode output.
The boundary is based on intent and applies independently of the teams,
competition, sport or event named. “Research only”, hypothetical, educational
or entertainment framing does not bypass it.
Model stack
Goals Model — 35% base weight
Uses recent scoring and concession evidence, observed xG when sufficiently
available, competition baseline, bounded rest/congestion context and
conservative availability adjustments.
Produces:
- Model Expected Goals;
- 1X2 model distribution;
- scoreline scenario distribution.
Strength Model — 25%
Uses an Elo-style historical-results framework with a modest home-advantage
term and observed draw-rate context.
Form Model — 20%
Uses recency-weighted points, goal difference and observed xG trend when
available.
Context Model — 10%
Uses only supported rest and schedule-congestion evidence. It does not invent
travel, motivation or psychological factors.
Availability Model — 10%
Uses public status evidence and source-supported importance only. It does not
perform medical inference.
Dynamic consensus
Base weights are adjusted by evidence quality. Unavailable models receive no
effective weight, and the remaining weights are renormalized.
xG labeling
The Agent distinguishes:
- Observed xG — completed-match xG explicitly reported by a source;
- Model Expected Goals — the package’s forward-looking goal expectation for
an upcoming fixture; - Unavailable — when neither can be responsibly supported.
Forecast goal expectation is never presented as observed provider xG.
Data acquisition
The Agent works from natural match and slate requests; users do not need to
provide source URLs.
Preferred public source families include:
- official competition fixture and result pages;
- official club fixtures and team news;
- Football-Data.co.uk public CSV;
- public FBref team logs when accessible;
- StatsBomb Open Data for supported competitions and matches;
- public Transfermarkt availability context as supporting evidence;
- other accessible public sources with clear attribution.
Bookmaker-odds columns are ignored and discarded even when present in a public
results dataset.
Public sources can change or become inaccessible. Collection failures must be
recorded and handled with fallbacks rather than fabrication.
Dashboard UI/UX
The visual system uses a professional football-tech × fintech language:
- dark navy canvas;
- high-contrast typography;
- cyan and teal analytical accents;
- amber and rose for uncertainty/risk context only;
- aligned metrics;
- generous spacing;
- responsive layout;
- standalone local HTML/CSS/SVG;
- no sportsbook-style calls to action.
Match dashboard
- Match Header
- Match Probability
- Model Expected Goals
- Scoreline Scenarios
- Model Consensus
- Favorite Vulnerability Context
- Uncertainty and Data Confidence
- Availability Impact
- Match Context
- Key Match Drivers
- Prominent Disclaimer
Slate dashboard
- Slate Header
- KPI Cards
- Slate Intelligence Table
- Vulnerability vs Expected Scoring Map
- Slate Summary
- Prominent Disclaimer
Package structure
football-intelligence-lab/
├── SKILL.md
├── agents/openai.yaml
├── capafy/
├── config/
├── schemas/
├── scripts/
├── templates/
├── references/
└── workflows/
The Capafy production ZIP is intentionally lean. Development tests, adversarial
review prompts, changelog files and sample outputs are not included in the
runtime package, reducing irrelevant context and eliminating alternate
instruction paths.
Local engine usage
Match mode:
python scripts/football_intelligence_engine.py \
--input normalized-match.json \
--mode match \
--json-out match-output.json \
--html-out match-dashboard.html
Slate mode:
python scripts/football_intelligence_engine.py \
--input normalized-slate.json \
--mode slate \
--json-out slate-output.json \
--html-out slate-dashboard.html
Runtime configuration note
The deterministic gate only protects the live Agent when the runtime actually
loads the submitted Skill version and follows the mandatory entrypoint. For a
Capafy resubmission, verify the Agent version, package upload, runtime model and
credential configuration—not only the model name displayed on the public card.
A full, instruction-following runtime model is preferable to a lightweightMini variant for this sensitive boundary.
APIs externas
football-data.co.uk · github.com · fbref.com · transfermarkt.com

