01Platform
Scouting Platform
CF União de Lamas
The scouting department runs on this. It replaced a spreadsheet with a database that holds players, match observations, an evaluation model and the recruitment decisions that follow from them — so a judgement made in October can still be read, and argued with, in March.
- Role
- Methodology, design and development
- Stack
- React · Express · MongoDB
- Access
- Three roles — editor, viewer, coaching staff
- Database
- 96 players since September 2026

01The problem
A department produces information and loses memory
Scouting generates a lot of material and keeps very little of it. Notes live in a notebook, a shortlist in a spreadsheet, the reasoning in the head of whoever watched the match. The information survives the week it was produced and not much longer.
Six months later the questions that matter are the hard ones. Why was this player dropped? Who else did we watch in that position? Was the decision based on one match or five, and against what kind of opposition? Without a record, recruitment falls back on the most recent impression.
The platform was built to close that gap. Not to make scouting faster — to make it accountable.
02Approach
Three decisions the rest follows from
One evaluation model, applied every time
Every observation is scored on the same position-specific attribute grid, so two players in the same role are measured on the same terms. The grid feeds four dimensions, the dimensions feed a weighted rating, and the rating a player carries is the mean of all his observations. No number is loose.
The verdict is the unit of work
A player carries a verdict — sign, keep watching, needs another observation, not progressing — alongside a read on current level, ceiling and profile, and the league level he is projected to reach immediately, in the medium term and in the long term. The database is a snapshot of where every decision stands.
Built around a scouting week
Schedule, watch, record, review. The schedule shows the fixtures worth attending, the observation is filled in the same evening, and the recruitment screens read from it. A tool that does not get used on a Sunday night is not a tool.

03Modules
Seven modules
Each one exists because the work needed it, not to fill a menu.
Database
Players, filters and search; a profile with bio, classification and the full observation history.
Observations
Match records evaluated on a position-specific attribute grid. A player's rating is the mean of his observations.
Recruitment
Shadow team, per-position lists and player comparison, with a printable market report.
Planning
Squad and structure by position, for the current season and the next.
Schedule and competitions
Weekly plan, matches watched, fixtures and standings.
Leagues, clubs and contacts
A catalogue of the leagues and clubs being followed, and the agent contacts behind them.
Home
KPIs and coverage by position — the first screen of the week.

04Evaluation
How a rating is built
Every observation is scored on an attribute grid specific to the position. The attributes group into four dimensions — technical, tactical, physical and mental — which are weighted into a single rating on a 1 to 5 league-level scale. The question it answers is not how good the player looked, but what level he could play at.
A player's rating is the mean of his observations, so it moves as evidence accumulates instead of being fixed by the first match he was seen in.
Dimensions
- Technical
- Tactical
- Physical
- Mental
The scale is anchored to pressure
What separates a 7 from a 4 is not how good the action looked, but the pressure it was executed under. The same 1–10 scale runs through the whole grid.
- 9 – 10
- Executes well under heavy pressure
- 7 – 8
- Executes under some pressure
- 5 – 6
- Executes without pressure
- 3 – 4
- Fails under pressure
- 1 – 2
- Fails even without pressure

05My contribution
What is mine in this
The methodology, the product decisions and the code. I wrote it alone, while working as the club's scout — which is why it fits a scouting week rather than a specification.
Methodology
The attribute grid for each position, the four dimensions and their weights, and the pressure-anchored scale behind every score.
Product
The information architecture: what a scout sees first, what a verdict commits you to, what has to come out on paper.
Engineering
React and Vite on the front, Express and Mongoose over MongoDB on the back, session authentication with three roles.
Operation
Used daily in a working department. Every change came from something that did not hold up on a Sunday night.

06For a department
What this gives a scouting department
A shared language
Any scout joining the department grades the same attributes on the same scale. Reports become comparable instead of personal.
Coverage you can see
The home screen shows coverage by position, so a position nobody has watched reads as a gap rather than as silence.
Decisions that survive the season
Every verdict sits on a visible chain — attributes, dimensions, rating, observation history. A decision can be revisited without re-watching the player.
Printable where it has to be
Shortlists and market reports export to PDF, because a meeting still runs on paper.
Not tied to one club
The club name, the squad structure and the attribute grid are configuration, not code.
Honest limits
What it is not
A working tool used daily in one club, published so the approach can be read — not software ready to be installed somewhere else. Worth being explicit:
- One club, one dataset. A single database and a single club, with no separation between clubs or between users' data.
- Local only. It runs on localhost over plain HTTP — no hosting, no HTTPS, and backups are a manual script.
- Built around one workflow. Positions, the four dimensions and the 1–5 scale are fixed in code; the attribute grid inside them is configurable.
- Portuguese interface, with no translation layer.
- One user means untested paths. Any bug someone else hits will be a new one.
Next
Football Data Platform
Statistical profiling