OVERTAKE

How it works

Four layers. Only one of them is an AI, and it is the last one — it reads the numbers, it never produces them.

  1. Layer 1

    We read the public FPL API

    Every manager's squad, transfers, chips and standings are published by the FPL website without a login. We read them politely — never more than twice a second, always with a contact address in the request — and we cache everything. We never ask for your FPL password, and we have no write access to anything.

  2. Layer 2

    We project every player

    Expected points per player per gameweek, with an explicit probability that they start at all. This is deliberately the least clever part of the stack: we shrink hard toward a price-and-position baseline so two good weeks do not fool the model, and we publish the measured error rather than claiming accuracy we do not have.

  3. Layer 3

    We simulate the rest of the season

    20,000 times, over every manager's actual squad, with teammates' scores correlated the way they really are and with the projection model's own uncertainty carried through. The output is not "who scores most" — it is the probability that you finish above each specific person.

  4. Layer 4

    The AI writes it up

    A distribution does not change anyone's behaviour. The AI turns the simulation into one named, specific argument you can act on. It is given only computed numbers, it returns structured data, and every figure it writes is checked back against the simulation before you ever see it. If that check fails twice, you get the numbers plainly instead. The product is allowed to be less impressive; it is never allowed to be wrong.

How accurate are the projections?

Our current mean absolute error is 1.29 points per player per gameweek, measured out-of-sample over the last 3 completed gameweeks.

Measured projection error by gameweek
GameweekMAEPlayers
GW31.14654
GW21.17626
GW11.56610

For context: incumbent FPL tools have Opta data licences and we do not, so their projections will beat ours. That is fine — projections are an input here, not the product. The thing nobody else computes is the probability that you finish above a named person, and that depends far more on the simulation than on the last decimal place of a projection.

Why not just maximise expected points?

Because it is the wrong objective for almost everyone. If you are forty points behind with six gameweeks left, the highest-expected-points move is usually the move that keeps you forty points behind: it is what your rival is doing too. What you need is variance they are not exposed to — and if you are ahead, the opposite. Overtake is the only tool that computes which of those you are in, against each specific person.

Try it