25 analyst articles per week. Bookmaker odds. Injury reports. Form tables. Fixture difficulty ratings.
The human brain cannot process this.
You read article 25 and you’ve forgotten article 1. All you remember is the last “scout picks” post. Everything else is noise. You spent three hours. You retained nothing.
Efficiency before automation: approximately 0%.
The Build
I’ve been playing Fantasy Premier League for years. Spent 1.5 years building AI-assisted decision systems. In December 2024, I cracked it.
One master skill. Five stages:
Stage 1: Scraper automatically finds all articles since last gameweek. English Premier League only. Relevant sources only.
Stage 2: Indexer creates index.md. Every article parsed. Title, source, key insights, player mentions.
Stage 3: Odds Collector pulls bookmaker data via API. Goals, clean sheets, match outcomes.
Stage 4: Team Analyzer fetches my actual FPL team. Budget, current players, prices, form.
Stage 5: Transfer Advisor. This is where it gets interesting.
4 major stages. Each with 4-6 parallel sub-agents. About 24 AI agents running simultaneously.
xG analyzer. Fixture difficulty evaluator. Form-fixtures correlator. Budget optimizer. Captaincy recommender. Differential identifier.
Output: 4-5 independent transfer strategies. Safe play. Rank chaser. Differential punt. Template. Final recommendation: one strategy the agent “takes responsibility for.”
Results: 19 out of 21 gameweeks with a green arrow. 19 out of 21 transfers were the right call.
It worked.
The Break
The xG analyzer kept recommending Mo Salah.
Salah was in Africa at the Cup of Nations. Not playing next gameweek. Not available for selection.
The xG agent didn’t know this. Why? Because nobody told it. The “available players” list never got passed to that agent. And skills don’t throw errors when data is missing.
They hallucinate.
The model “remembers” from training data that Salah is elite. So it recommends him. The recommendation flows downstream to every dependent agent. Budget optimizer includes Salah. Captaincy recommender considers Salah. Differential analyzer dismisses other options because why would you need a differential when you have Salah.
Garbage in → garbage out → compounded through all 24 agents.
From my notes at the time:
“If the model doesn’t get fresh information explicitly — it just invents it. Skills won’t fail with an error. They’ll just make it up.”
The Chaos
Agent A expects Player IDs. Agent B sends player names.
Agent C outputs summary text. Agent D expects structured JSON.
Agent F needs data that isn’t ready yet. Does it wait? No. It invents the data.
4-5 markdown files. 300-400 lines each. Jump between files trying to trace what goes where. Edit one agent. Unknown downstream consequences.
“I started getting lost in inputs and outputs — which agent passes what to whom.”
The Drowning
“I drowned and felt the full necessity of Skillpad.”
Tried editing markdown directly. Lost track of connections.
Tried dictating fixes to Claude. Unclear which file or agent to target.
Tried running test after test. Unpredictable failures.
“There’s no way to fix this myself without visualization.”
After Skillpad
Loaded the Transfer Advisor files. Saw the graph. All 24 agents. All connections.
Immediately visible:
- Agent 7 expects player IDs. Agent 6 outputs player names. Mismatch.
- xG agent has no “available players” input. That’s the Salah problem.
- Three agents passing the same context in different formats. Duplication. Noise.
Fix the connections. Export back to markdown. Run again.
| Metric | Before | After |
|---|---|---|
| Speed | Baseline | 3x faster |
| Tokens | Baseline | 3x fewer |
| File size | Baseline | 3x smaller |
| Quality | Hallucinations | ”Night and day” |
| Debugging | Hours guessing | Minutes looking |
FPL Results: 19 out of 21 green arrows. Not luck. System.
— Illia Martyn