01 / AI agent · Data pipeline · Solo
Armband
An AI manager for Fantasy Premier League: an agent that acts on your team, built on a tested data pipeline.
Connect your FPL team and give the agent, called the Gaffer, a job: pick the best XI, choose a captain, make a transfer, or rate the lineup out of 10. It makes the changes on your pitch, shows the working behind every decision, and you choose to Apply or Revert.
Independent project, not affiliated with the Premier League or Fantasy Premier League.

- Year
- 2026
- Context
- Solo project: design, engineering, deployment
- Stack
- TypeScript · Next.js · React · Claude API (Anthropic) · Supabase/Postgres · GitHub Actions · Zod · Vitest
- typical answer
- ~8s
- typical answer
- per answer
- ~$0.001
- per answer
- tests
- 280+
- tests
- architecture decision records
- 15
- architecture decision records
What it is
You connect your FPL team and see your 15 players on a pitch, with the numbers that matter. Then you give the Gaffer a job: pick the best XI, choose a captain, make a transfer, or rate the lineup out of 10. It makes the changes on your pitch, and you choose to Apply or Revert. It also shows the working behind every decision.
What I built
- 01The agent. Claude Haiku 5.5 on Anthropic's Messages API, with a streaming tool loop I wrote myself. It has its own FPL tools: player lookup, market search, fixture runs, a transfer rules check, and actions on a draft of the team. It runs inside the Next.js app on Vercel. A typical answer takes about 8 seconds and costs about a tenth of a cent.
- 02Code computes, the model decides. Every number comes from a unit-tested insight engine: form, xGI per 90 scaled by minutes played, minutes risk, fixture difficulty and captain score. The best XI is an exhaustive search over the legal formations, and every transfer is checked against FPL's rules (positions, max 3 per club, the bank). The model chooses and explains; it never invents a figure.
- 03The data pipeline. Scheduled jobs on GitHub Actions snapshot the official FPL API, detect price changes and injury news, and score what matters. One batched webhook per run goes to Make.com, which posts alerts to Telegram. Failure alerts bypass Make, and a dead man's switch watches the nightly sync.
Screenshots




Engineering decisions
- Security
- Postgres with three schemas, row-level security and read-only views.
- Abuse protection
- 5 questions per account for life, kept even if the account is deleted and re-created, plus daily spend caps.
- Validation
- Zod at every external boundary.
- Tests and docs
- 280+ tests, and 15 architecture decision records.
- Cost
- Runs entirely on free tiers.