Football

Scouting

I watch matches, write player reports and build tools to check what I write. The reports below are public versions adapted from my originals; the method and the data projects behind them are linked too.

Reports

2

Player report

Ahmad Mendes Moreira

Kalamata FC · Super League Greece · second striker / left winger · player report

A technically gifted, left-footed attacker whose game is built on passing, quick decisions and chance creation. He finds solutions in tight spaces, combines well and has a wide passing range, from short combinations to long balls in behind. His main weakness is defensive commitment: he rarely drops to help, does not track runners and is passive when crosses come in. He also protests frequently to referees. His best role is as a creative second striker in a front two, freed from heavy defensive duties.

Three full matches (v Aris, Volos and Panathinaikos, 2026/27) plus highlights

Match report

Bernardo Martins ("Benny")

Panetolikos 0–1 Kifisia · Super League Greece 2025/26 · single-match report

Kifisia's main creative reference in a 4-4-2, playing as the more advanced of the two central midfielders and drifting left to support the winger and link with the strikers. Comfortable receiving under pressure, agile when turning out of tight areas and always looking to play forward; he won the penalty that decided the match. The same risk-taking style produced a high number of possession losses, and his main weakness in this game was errors in passing and decision-making.

One full match on video (84 minutes before being substituted)

Method

Method

How I write a scouting report

Structure, rules and what stays out

My reports follow the same structure and the same rules, so that a reader can tell observation from conclusion, see the sample behind each judgement, and check the claims later.

The method behind the player and match reports on this site

Data projects

3
CompleteIndividual · Personal project

Goalkeeper Scouting

A full-stack scouting platform for goalkeepers, built from raw match-event data. Every keeper is compared only with peers from the same competition and season, and the sample size is always shown next to the number.

11 techs · Python

  • Python
  • FastAPI
  • PostgreSQL
  • SQLAlchemy
  • Alembic
  • pandas
  • +5

Automated tests 288 passed, 1 skipped

In developmentIndividual · Personal project

Claim-to-Evidence Scouting

A scouting report makes claims — "creates a lot of chances", "doesn't track runners". This project tests each one against league data and my own video coding, using rules written down before the data is collected.

10 techs · Python

  • Python
  • pydantic
  • pandera
  • pandas
  • Hypothesis
  • pytest
  • +4

Automated tests 97 passed

CourseworkIndividual · Information Systems Integration course

FC Porto squad data integration

A KNIME workflow that takes a Transfermarkt export of 32,405 players, isolates the FC Porto squad, cleans and joins player attributes with market valuations, and writes the result to CSV, JSON, XML and Excel, plus two charts.

5 techs · KNIME

  • KNIME
  • CSV
  • JSON
  • XML
  • Excel

Source data CSV of 32,405 players from the Transfermarkt database

Principles

  1. Show the sample

    How many matches, minutes and actions. A number without its sample doesn't go into a report.

  2. Compare with real peers

    Same position, same competition, same season. Comparisons across contexts look precise and aren't.

  3. Player versus team plan

    Separate what the player chooses from what the coach asks for before judging either.

  4. Claims that can be tested

    Write so that someone else — or Claim-to-Evidence — can check it, with rules fixed before the data.