← All posts
8 min read

How to build a football data science portfolio

Five projects that take you from your first SQL query to AI-powered tools, following the data scientist roadmap one step at a time — with a real GoalPro dataset to practise on.

Portfolio Careers Data Science Football Analytics Getting Started Datasets

Why a portfolio matters

In football analytics, a public portfolio is the standard way to stand out. Clubs want to see that you can take raw data and turn it into something useful, and a set of real projects proves that far better than a CV alone.

The good news is that you don't need to build everything at once. If you follow the data scientist career pathway, each stage of the roadmap gives you a new skill — and each skill can become a portfolio project.

Start with real GoalPro data

To help you get going, I'm sharing a real, anonymised dataset from GoalPro: player stats from grassroots matches, captured by the platform. Every player and venue has been replaced with an ID, so no one can be identified. Use it for every step below.

GoalPro grassroots match dataset

CSV · 18 columns · one row per player per match

↓ Download CSV 23 KB
261player-match records
19matches
149players
2venues
match_player_idmatch_idvenue_idmatch_total_xpplayers_in_matchplayer_idpositionresultgoalsassistsshotsdribblesinterceptionstacklesblocksplayer_match_xpis_captainhighlight_count
RECORD-0001MATCH-0001VENUE-0001010PLAYER-0001Forwardl23181866080FALSE1
RECORD-0002MATCH-0001VENUE-0001010PLAYER-0002Forwardl852424720122FALSE1
RECORD-0003MATCH-0001VENUE-0001010PLAYER-0003Forwardl1111660038FALSE1
RECORD-0004MATCH-0001VENUE-0001010PLAYER-0004Forwardw342116880101FALSE1
RECORD-0005MATCH-0001VENUE-0001010PLAYER-0005Forwardl53193144093FALSE1

The first five rows. Scroll sideways to see every column.

What each column means
match_player_idUnique ID for one player's record in one match
match_idID of the match
venue_idID of the venue where the match was played
match_total_xpTotal XP for the match (always 0 in this release)
players_in_matchNumber of players who played in the match
player_idAnonymised ID of the player — the same player keeps the same ID across matches
positionPlayer's position: Forward, Midfielder, Defender, Goalkeeper or Unknown
resultResult for the player's team: w = win, l = loss, d = draw
goalsGoals scored
assistsAssists
shotsShots taken
dribblesDribbles
interceptionsInterceptions
tacklesTackles
blocksBlocks
player_match_xpGoalPro XP the player earned in the match
is_captainTRUE if the player was captain
highlight_countNumber of highlight clips for the player in the match

The plan: one project per roadmap stage

Here's how I would do it. Each step builds on the one before, so your portfolio grows with your skills.

  1. SQL
  2. Python
  3. Visualisation
  4. Data Science & ML
  5. GenAI

These are the five stages of the football analytics roadmap.

Start with SQL: find insights in a dataset

Download a football dataset — like the GoalPro one above — and load it into a database. Then use SQL to answer real questions: who creates the most chances, which teams concede late goals, how a player's output changes over a season. SQL is the foundation of almost every data job, and it's the quickest way to start finding insights.

Football project idea

Start with the GoalPro dataset above, then try a bigger public one such as StatsBomb's open data or a Kaggle football dataset. Answer five questions you're genuinely curious about.

What to show

  • Your SQL queries, clearly commented
  • A short write-up of what you found and why it matters

Try it with the GoalPro dataset

  • Who are the top 10 players for goals plus assists?
  • Which venue sees more goals per match?
  • Do captains win more often than other players?
Roadmap stage: SQL →

Rebuild it in Python

Take the same analysis and convert it into Python. Using pandas to load, clean and analyse the data shows you can work in the language most clubs use, and charts with Matplotlib, Seaborn or Plotly make your findings easier to understand.

Football project idea

Recreate your SQL insights in a Jupyter notebook and add charts — for example, a shot map or a comparison of players' chance creation.

What to show

  • A clean, well-organised notebook on GitHub
  • Charts that each tell one clear story

Try it with the GoalPro dataset

  • Load the CSV with pandas and recreate your SQL answers.
  • Chart goals against shots to find the most clinical finishers (goals per shot).
  • Find the players who've played the most matches and how their stats change.
Roadmap stage: Python →

Build a dashboard people can use

Turn your insights into a dashboard that someone else can explore. This shows you can think about your audience — a coach, a scout or a fan — and not just the code. Add filters so people can find their own answers.

Football project idea

A player comparison dashboard where a scout can filter by position, age and league, built in Tableau, Power BI or a Python tool such as Streamlit.

What to show

  • A live link people can click and use
  • Screenshots plus a short explanation of who it's for

Try it with the GoalPro dataset

  • Build a player leaderboard people can filter by venue and position.
  • Add a player page showing their stats match by match.
Roadmap stage: Visualisation →

Take on bigger, messier data and build models

Real data is large and messy. Work with a bigger dataset, clean it properly, and use it to build a machine learning model. This is what separates a data scientist from a data analyst: you're not just describing what happened, you're predicting or finding patterns.

Football project idea

Build an expected goals (xG) model from shot data, or a player similarity model that finds look-alike players from their stats.

What to show

  • How you cleaned the data and the choices you made
  • How you tested the model and what its limits are

Try it with the GoalPro dataset

  • Clean it first: 95 rows have the position Unknown, match_total_xp and highlight_count never change, and one match_player_id is used twice. Decide how to handle each.
  • Build a model that predicts a win or loss from a player's stats, or one that explains how player_match_xp is earned.
Roadmap stage: Data Science & Machine Learning →

Use AI to make your insights shine

Finally, use large language models (LLMs) to turn your analysis into something people love to use — polished match reports written from your data, or an interactive tool where someone can ask questions in plain English and get answers back.

Football project idea

A scouting assistant that turns your player data into a written scouting report, or a chat tool that answers questions about a team's season.

What to show

  • A working demo or short video of it in action
  • A note on how you checked the AI's answers are accurate

Try it with the GoalPro dataset

  • Use an LLM to write a short match report for each match_id from the stats.
  • Build a tool where someone can ask, in plain English, “who was the best defender at venue 2?”
Roadmap stage: GenAI →

Tips to make your portfolio stand out

Start small. Your first project only needs a dataset, a few SQL queries and a curious question.

Keep exploring

See the full roadmap

Find out what a data scientist actually does, what to learn, and every topic on the route into football analytics.