02Plataforma
Plataforma de Dados
Perfil estatístico · CF União de Lamas
Um export do Wyscout são 115 colunas de valores por 90 minutos e várias centenas de linhas, e por si só não responde a nada. Isto transforma-o numa base a que se podem fazer perguntas — percentis face a jogadores comparáveis, perfis por posição, radares, comparação — e acaba onde o scouting acaba de verdade: numa folha de relatório com uma recomendação escrita.
- Papel
- Metodologia, conceção e desenvolvimento
- Stack
- React · TypeScript · Vite · IndexedDB
- Entrada
- Exports .xlsx do Wyscout
- Corre
- No browser — nada sai da máquina
Construída contra um export real
- colunas lidas
- 115colunas lidas
- grupos posicionais
- 8grupos posicionais
- local
- 100%local
- para desenhar a tabela
- <50mspara desenhar a tabela
01O problema
O export são dados, não informação
O Wyscout dá uma folha de cálculo. É completa e é inútil como está: 115 colunas de valores por 90 minutos, várias centenas de linhas, e nenhuma forma de lhe fazer a única pergunta que interessa — quem, nesta posição, nesta liga, é melhor do que aquilo que já temos.
Ordenar uma coluna dá depressa a resposta errada. Um valor por 90 favorece quem jogou menos. Um número bruto compara um extremo com um defesa central. Um zero na coluna do valor de mercado parece um jogador livre e não um espaço em branco.
A ferramenta existe para tornar o export respondível, com as comparações bem montadas antes de alguém ler um número no ecrã.
02Abordagem
Três decisões que fazem quase todo o trabalho
A coorte é o grupo posicional
Um percentil só vale aquilo contra que foi medido. Por defeito cada jogador é ordenado contra o seu grupo posicional dentro da sua liga — um lateral com 80 em cruzamentos deve ser lido contra laterais e não contra centrais. O universo pode passar a toda a liga, e cada coluna mostra o N que tem por trás, porque um percentil tirado de treze jogadores é uma afirmação diferente de um tirado de duzentos.
A cor transporta informação, não decoração
Uma só cor de destaque marca aquilo em que se pode clicar. Toda a restante cor no ecrã é um percentil, numa escala contínua de vermelho a verde com a legenda sempre visível. Nada está pintado para parecer desenhado, por isso correr os olhos por uma coluna já é uma leitura.
Desconhecido continua desconhecido
Valor de mercado a zero e data de contrato vazia são tratados como desconhecidos e não como valores. As colunas só de guarda-redes ficam nulas para os restantes, não a zero. Nenhum nulo entra num percentil. A alternativa — deixar um espaço em branco contar como número baixo — classifica em silêncio meia liga como fraca numa coisa em que nunca foi medida.

03A importação
Uma importação que se pode contestar antes de acontecer
Os exports do Wyscout não são limpos. O cabeçalho nem sempre está na primeira linha. Os nomes das colunas trazem acentos, espaços a mais e os erros de escrita do próprio fornecedor. Um cabeçalho aparece duas vezes — uma para jogadores de campo, outra dentro do bloco do guarda-redes. O importador foi feito para o ficheiro que chega e não para o ficheiro que se desejaria.
Nada é confirmado antes de ser mostrado. A pré-visualização diz quantos jogadores encontrou, que colunas detetou como identidade, como métrica e como ignoradas, e o que parece errado: duplicados, colunas sem dados, jogadores sem minutos. Uma coluna mal classificada pode ser corrigida antes de se gravar seja o que for.
Cabeçalhos encontrados, não assumidos
O leitor procura a linha onde a tabela começa e normaliza cada nome de coluna — minúsculas, acentos fora, espaços colapsados — para que três grafias do mesmo cabeçalho caiam no mesmo sítio.
Métricas detetadas, não listadas
Uma coluna conta como métrica quando pelo menos 80% dos valores são numéricos, aceitando vírgulas decimais e sinais de percentagem. A direção e a categoria são inferidas do nome, e ambas ficam editáveis.
Nada se deita fora
As colunas que o importador não reconhece ficam guardadas junto ao jogador em vez de serem descartadas, para que uma decisão de hoje não custe informação amanhã.
Substituir ou juntar
Um export novo da mesma liga substitui-a. Dois ficheiros que dividem uma liga por posições juntam-se, casados por nome e equipa, com as colunas novas acrescentadas.
04O índice
Um número, e o que está por trás dele
O índice de perfil é a média dos percentis de um jogador nas métricas que definem a sua posição, e exige dados em pelo menos metade delas antes de sequer aparecer. É a ordenação por defeito da tabela — o primeiro ecrã já é um ranking.
É de propósito um número raso com um rasto fundo. Clicar leva ao radar, depois a todas as métricas por categoria com a sua barra de percentil, depois ao valor real e ao N contra o qual foi ordenado. Uma única cifra serve para ordenar várias centenas de jogadores; não é um argumento enquanto não for aberta.

05Ecrãs
Os ecrãs de que o trabalho precisa
Cada um existe porque um passo do trabalho precisou dele.
Ligas
Um cartão por liga, com o número de jogadores, de métricas e a data da última importação. Cada liga tem o seu próprio dicionário de métricas.
Tabela de percentis
Filtros à esquerda, colunas de identidade fixas, métricas escolhidas à direita, cada célula colorida pelo percentil. Alternar entre valor e percentil, guardar conjuntos de colunas, exportar a vista atual.
Ficha do jogador
Dados biográficos, contrato e valor de mercado, o radar, e todas as métricas por categoria com a sua barra de percentil.
Radar
O perfil da posição por defeito, com métricas a acrescentar, remover ou reordenar, um segundo jogador sobreposto de qualquer liga, valores reais nos rótulos, e exportação em PNG.
Comparar
De dois a seis jogadores em colunas, métricas agrupadas por categoria, o melhor valor de cada linha destacado, radares sobrepostos até três.
Shortlists
Jogadores de várias ligas numa só lista, cada um com nota editável e estado, e um instantâneo que sobrevive a reimportar a liga.
Perfis de posição
Para cada um dos oito grupos: os códigos Wyscout que lhe correspondem, e as métricas que alimentam o radar e o índice.
Relatório
A folha imprimível, aqui em baixo.
Cópia de segurança
Tudo para um ficheiro JSON e de volta, com um aviso quando a última tem mais de quinze dias.
Manual
O manual escrito, apresentado dentro da aplicação em vez de guardado numa pasta que ninguém abre.

06O relatório
Onde os dados encontram o olho
O último ecrã é uma folha que se imprime. Leva o cabeçalho do clube, a identificação do jogador, o índice de perfil com a fiabilidade por trás dele, os percentis, e como ele se situa face ao plantel — e depois um campo vazio para o que foi visto ao vivo ou em vídeo, e uma recomendação: contratar, seguir, descartar.
Esse campo vazio é o objetivo de toda a ferramenta. Tudo o que vem antes reduz várias centenas de jogadores aos poucos que merecem uma tarde de sábado; a folha é onde essa tarde fica escrita ao lado dos números, e onde alguém tem de se comprometer com um veredito com os dois à frente.

07O meu contributo
O que aqui é meu
O modelo analítico e o código, ambos. As decisões acima são o trabalho; a interface é o que as torna usáveis numa terça-feira.
O modelo
Os oito grupos posicionais e o mapa de códigos Wyscout, as métricas que definem cada perfil, o método de percentil e a regra da coorte, e o índice construído sobre eles.
O importador
A deteção do cabeçalho, a normalização dos nomes, a resolução das colunas duplicadas, a inferência das métricas, a regra do desconhecido em vez do zero, e a pré-visualização que relata tudo antes de gravar.
Engenharia
React e TypeScript sobre Vite, IndexedDB através do Dexie para persistência, uma tabela escrita à mão e um radar SVG desenhado à mão, e uma cópia de segurança que cabe num ficheiro.
O output
O radar e a sua exportação PNG, as exportações de vistas, e a folha de relatório imprimível que o departamento usa mesmo.
08Para um departamento
O que isto dá a um departamento de scouting
Uma shortlist que começa no sítio certo
Os dados reduzem várias centenas de jogadores a um punhado que vale a pena ver. Ver continua a decidir — mas parte de uma lista defensável e não de quem foi mencionado por último.
Comparações que se podem contestar
Cada percentil mostra a coorte e o N que tem por trás. Um número que ninguém consegue contestar é um número que ninguém devia pôr num relatório.
Uma folha, as duas metades do trabalho
O relatório põe o perfil estatístico e a observação escrita na mesma página, que é onde a recomendação tem de ser feita de qualquer maneira.
Sem subscrição, sem upload
Corre num portátil, offline, sobre exports que o clube já paga. Um clube sem orçamento para analytics pode na mesma trabalhar assim.
Limites honestos
O que não é
Uma ferramenta a funcionar, construída para um departamento e uma forma de trabalhar. Vale a pena ser explícito:
- Os percentis são sempre relativos à liga do próprio jogador. Comparar entre ligas compara o domínio dentro de cada uma, não o nível entre elas, e a aplicação avisa quando se misturam.
- Uma coorte pequena torna o percentil frágil. O N está sempre no ecrã, mas lê-lo é trabalho de quem usa.
- Lê exports do Wyscout em português. Outro fornecedor, ou o mesmo noutra língua, exige escrever os nomes das suas colunas.
- Os dados vivem num browser, numa máquina. É esse o objetivo, e também significa não haver partilha, não haver sincronização, e ser preciso o hábito real de fazer cópias.
- Interface em português, sem camada de tradução.
A seguir
Trabalho de Scouting
Observação e análise