Skip to content
← all work

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.

Armband banner: the orange captain's armband logo next to the words "Your FPL team. Deadline-ready." and the line "Meet the Gaffer: an AI manager that checks every figure".
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

  1. 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.
  2. 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.
  3. 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

Armband demo with an FPL squad on a green pitch. The Gaffer panel answers "Pick my best XI and captain" with a 4-4-2, Haaland as captain and Tavernier as vice-captain, and the plan above the pitch has Apply changes and Revert buttons.
Armband demo after a transfer request. The Gaffer swaps Schade for Neto, shows the tool calls it ran and the bank left after the move, and marks Neto as the new player on the pitch.
The signed-in Dugout page: the user's team on the pitch with gameweek, total points and bank, and the Gaffer panel offering jobs like rate my lineup, make a transfer and pick a captain, with 5 of 5 questions left.
Armband on a phone: the squad on a pitch with the substitutes bench below it and the start of the Gaffer panel.

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.