See what the AI makes of your FPL squad

Enter your Team ID for captain and transfer ideas. Then check the model’s public record before you trust it.

Try it on my squad See the track record

Free to try with just a Team ID: no account needed, and nothing is for sale yet. Have a demo code? Redeeming one needs an account and opens every built feature for 14 days from redemption.

Four steps from Team ID to a decision

  1. Start with just your Team ID

    Paste the number from your FPL team page. No account needed.

  2. Get calls for your own squad

    A captain call and transfer ideas for your team, with the reasons shown.

    Limit: there is no multi-week planner yet.

  3. Check who is actually available

    Ones to Watch re-checks availability. Any flag takes a player out, and a legal replacement steps in.

    Limit: European fixtures are collected and shown, but they currently carry zero weight in the projections.

  4. See the record before you trust it

    The model’s points forecasts and captain picks are graded in public against what actually happened, misses included.

    Limit: the record is mixed unless the live data says otherwise. The track record page shows where the model is ahead and where it is behind.

    Live from the record
    Current verdictRead live on the track record page
    Compared withFPL’s own forecast
    Open the track record

The details, when you want them

How the model decidesMinutes first, then output, fixture and FPL’s own forecast

The projection is not a rating or a vibe. It is an expected-points calculation, built the same way for every player, and you can read the whole of it in edge/model-v07.mjs. In plain English, in the order it happens:

Minutes come first, because nothing else matters if he does not play. Two separate estimates are blended: what the availability feed expects, and what his own recent minutes imply about his role. From that come the odds he appears at all and the odds he passes 60 minutes, which is what appearance points actually turn on.

Attacking output is shrunk towards what his position and price normally produce. A striker with three good games has not proved he is a three-good-games striker. So his own expected goals and assists per 90 are blended with a prior for his position and price bracket, and his own numbers only take over as his minutes pile up. Early in a season the prior does most of the work. That is deliberate, and it is why the model is calm in August.

The fixture moves it up or down on a fixed five-step curve, multiplied by a matchup term from the two clubs' strength ratings.

Clean sheets, saves, bonus and defensive contributions are each their own term — clean sheets from a difficulty curve and the odds of 60 minutes, saves and bonus from his own rate shrunk towards a positional prior, nudged by his bonus-point score.

Then it is blended with FPL's own expected points. FPL publish a forecast of their own, and the model leans on it hardest when it knows least: most when a player has under an hour of football behind him, least when he has a season of it. The model is not too proud to borrow.

Availability is a rule, not a beliefInjured, suspended or doubtful players are cut or reduced

Availability is a rule, not a belief. An injured, suspended or unavailable player is cut to a token fraction; a doubt is multiplied down. These are not tunable and never will be.

Two things about that, because they are the difference between a model and a guess:

  • FPL's scoring rules are constants in the code, not weights. What a goal is worth by position, what a clean sheet is worth — a tuner allowed to move those would be fitting the sport rather than the model. Only beliefs about players are tunable.
  • Every tunable weight has hard bounds, enforced twice — in the model and again in the database, which refuses an out-of-bounds value. A search cannot quietly discover that minutes do not matter.
Ones to Watch and the European fixturesWhy a flagged player is swapped, and why Europe counts for nothing yet

Ones to Watch re-checks availability instead of trusting a snapshot. The squad is not captured once and left. Any flag at all takes a player out — an official status that is not "available", a resolved doubt, a chance-of-playing below 100%, expected minutes of zero, or a recent news item. There is no 75% threshold: a doubt is a doubt. When a player drops out, the replacement is chosen by exactly the rules that chose the squad in the first place — the same scoring, the same budget cap, the same squad legality — so you get a legal squad, not a hole. Alongside it sits a midweek and international watch, built on FPL's own notes and on European club fixtures collected from UEFA's public match feed.

One piece of honesty about that European feed: the fixtures are collected and wired into the model, but their weight is currently zero. They change no projection today. They are plumbed in, bounded and recalibratable, and like every other weight they only earn one by beating the live weights on every replayed gameweek. Until they do, they are a watchlist you can read, not a factor in the maths.

Learning from your choices (optional)Off until you switch it on

The advice is shaped by your profile, and it can learn from what you actually do. The same projection produces different advice for a manager chasing a mini-league from eighth than for one protecting a lead. On top of that, learning is opt-in: switch it on and the app records your own decisions — transfers you took and ones you rejected, captains you picked over the model's, players you added by hand — and turns them into tendencies that change how advice is framed and which style it reckons fits you.

Two honest limits: it is off until you turn it on, and it only ever touches framing and style-fit. It never touches the projections, the official data or squad legality. Your history cannot talk the model into liking your favourite player.

Why the grading is publicMisses and declined changes are published next to the hits

The grading is public, including the misses. The track record is the model's own report card, published per gameweek and per version, with the bias column left in. It also publishes something most scoreboards leave out: every time the model was offered an improvement and declined it. The promotion rule is that a candidate set of weights must beat the live weights on every replayed gameweek, not on average — so most candidates lose, and the declines are the evidence the rule is real rather than decorative.

What it does not do yetSo nobody arrives expecting it
  • No chat. You cannot ask it questions in a text box.
  • No mini-league simulator, no what-if rank odds, no alerts. Coming.
  • No Opta or paid data. Everything comes from FPL's own public feeds, plus UEFA's public fixture feed. There is no proprietary event data behind this.
  • No multi-week planner. Deliberately, and the bar is in the code rather than in our judgement: the horizon only opens when the model beats FPL's own free forecast on three consecutive finished gameweeks by a stated margin. The track record shows where it stands.
  • The record starts this season. There is no back-tested history, because a back-test you grade yourself is marketing. The record begins when the model started publishing forecasts before deadlines, and it grows by one gameweek a week.

Judge it on the record

The public record is the product. It builds every week whether it flatters us or not, and the version you can read is the version that was frozen before the deadline, not one rewritten afterwards with the answers in hand.

Loading the record…

Try it

Just show me my squadEnter a Team ID. No account needed. I have a demo codeRedeeming a code needs an account. It opens every built feature for 14 days from redemption.

See what the model makes of your own squad.

Try it on my squad →