Transparency

Methodology & Data Sources

Every number on this site comes from structured feeds — not hand-entered scores or commentary. This page documents what we pull, how often it updates, and how to read the metrics.

Data sources

  • American Soccer Analysis

    RSL match results, xG, team season stats, player goals added, Western Conference standings

    Refresh: Hourly via GitHub Actions pipeline

  • Fixture Download

    MLS upcoming fixtures (ASA only publishes completed matches)

    Refresh: Hourly with the RSL pipeline

  • Understat

    Arsenal match results, xG, Premier League standings, and player season stats

    Refresh: Weekly via GitHub Actions pipeline

  • FBref

    Planned — richer match stats, shooting, and passing detail (requires browser scraper)

    Refresh: Planned

Key metrics

Expected goals (xG)
Chance quality model — how many goals a team or player would expect from the shots they took. Outscoring xG suggests strong finishing; underperforming suggests the opposite.
Goals added (g+)
ASA's positional baseline metric. A forward and centre-back are each measured against their own peer group, so compare within a player's row — not across positions.
Expected points (xPts)
Points a team would expect from underlying performances. Comparing actual points to xPts shows whether results are running hot or cold.
Fixture difficulty
Upcoming opponents rated easy, medium, or hard by their current Western Conference table position — top third, middle third, or bottom third.

Sync & freshness

RSL data is written to Supabase by a Python pipeline (scripts/data-pipeline/fetch_rsl_data.py). Dashboards revalidate hourly. The "As of" timestamp on each dashboard reflects the latest row update in the database — not when you loaded the page.

Completed matches prefer ASA over Fixture Download when both exist for the same date. Upcoming fixtures come from Fixture Download only.