What is SportMind?

SportMind is a football analytics platform powered by six specialized AI agents - Scout, Performance, Tactics, Injury, Finance, and Executive. Select a team, set a budget, choose an objective, and watch each agent independently analyze the squad before the Executive Agent synthesizes everything into a final strategic recommendation.

The core idea: AI should interpret statistics, not invent them.


The Problem We're Solving

Most AI-powered sports tools are black boxes. They generate plausible-sounding numbers - "89/100 confidence," "+2.3 trophies," "€305M ROI" - with no traceable formula behind them. A coach or front office can't act on a number they can't verify.

SportMind takes the opposite approach. Every metric shown is computed from an explicit formula, documented on the in-app Methodology page. The LLM layer narrates and synthesizes. It does not generate numbers.


How We Built It

The analytical layer first. Before any UI, we defined the formulas:

Goals Per 90 (Z-Score): $$Z = \frac{\text{Goals/90} - \mu_{\text{position}}}{\sigma_{\text{position}}}$$

Strikers are only compared to strikers. A positive z-score means above-average output for that position, not just above the league average of all players.

Salary Efficiency: $$\text{Efficiency} = \frac{\text{Predicted Performance}}{\text{Salary} / \text{Market Value}}$$

Identifies undervalued players relative to their wage cost, position-adjusted.

Workload Index: $$\text{Workload} = \frac{\text{Minutes (last 5 matches)}}{\text{Season Average Minutes}}$$

Relative to each player's own baseline, not an absolute threshold, so a naturally high-minutes player isn't penalized unfairly.

Then the multi-agent pipeline. Each agent receives the computed metrics as context and is prompted to interpret and recommend, not to invent numbers. The Executive Agent receives all five agents' outputs and synthesizes them, explaining tradeoffs rather than just listing conclusions.

Data provenance is explicitly tracked. Three headline players have stats verified directly against real 2023-24 season records:

  • Erling Haaland - 27 goals, 31 appearances (Golden Boot, verified vs Premier League official data)
  • Mohamed Salah - 18 goals, 9 assists, 34 appearances (verified vs Liverpool FC official site)
  • Bukayo Saka - 16 goals, 9 assists, 35 appearances (verified vs StatMuse + Arsenal official site)

Remaining squad-depth metrics use realistic seeded baselines, clearly flagged in source code and disclosed in the UI. No speculative projections are shown.


Challenges

The hardest problem wasn't technical, it was epistemic. It's very easy to build a system that looks rigorous but isn't. An LLM will confidently generate "Expected trophy impact: +2.3" if you let it. The discipline of separating what is computed from what is narrated required constant vigilance across every component.

We also had to make an honest call about data coverage. Rather than claim "all data is real" when 47 of 50 players use seeded baselines, we built a Methodology page that discloses exactly what's verified, what's estimated, and why, and reflected that in confidence gauges ranging from 65–75% rather than a uniform, flattering 90%.


What We Learned

  • Transparency in analytics is a feature, not a limitation. Showing your formula is more persuasive than hiding it behind a confidence score.
  • Multi-agent pipelines work best when agents are given computed inputs to interpret, not open-ended prompts to fill with plausible-sounding content.
  • The gap between "looks analytical" and "is analytical" is wider than it appears, and worth closing.

What's Next

  • Expand verified real-data coverage to the full player roster via FBref API
  • Add match-level event data (shots, passes, pressures) for more granular z-score computation
  • Build a formation simulator that uses real positional tracking data
  • Open the query interface to natural language formula construction ("show me all wingers with xG z-score above +1.5")

Built With

Share this project:

Updates

Submission history