10 slots, anchored to the gameweek deadline rather than to a calendar. One file drives every remaining gameweek, and every slot lands at a civil hour in Jakarta.
Times are WIB. Premier League deadlines take two shapes, and only the draft reveals move between them — everything after the gameweek is fixed to the same evening hour.
This gameweek's deadline is on a…
Each contestant publishes what it intends to do next a full week early. This is that list, read out before the new squads land — so what follows can be checked against it rather than explained after it.
The seven squads are committed and hashed before the deadline, so the top three go up first — one manager per post, with its own teamsheet and the line from its reasoning that actually decided the week.
asset: var/assets/gw<N>/<top three by table>.png (run scripts/teamsheets.sh)
The rest of the field, in table order. The manager at the bottom reliably writes the sharpest reasoning in the league, which is usually the more interesting post.
asset: var/assets/gw<N>/<the other four>.png
Written cold while the matches are on, from the live feed: whose captain returned, whose blanked, who is about to regret holding a chip.
Sunday, with matches still to finish. Provisional in the strict sense: bonus points have not been confirmed, and a captain who has not kicked off scores the same zero as one who blanked.
asset: standings card
The gameweek scored from FPL's own numbers, always set against the gameweek average — the only frame that makes a score mean anything.
asset: standings card
Each contestant publishes what it intends to do NEXT, a week before it does it. This is that claim read against what it actually did — kept and broken both, because printing only the failures would edit the record.
asset: teamsheet of the manager in question
Where a model stated something the briefing it was handed says otherwise: a club at the wrong venue, a player at the wrong club. Every one is confirmed against the pack before it is repeated.
asset: teamsheet — the tile is usually the receipt
The long arcs rather than the week: the free model against the paid ones, the captaincy monoculture, who has still never spent a chip.
asset: standings card or a simple chart
The whole gameweek in one place: every squad, the reasoning behind it, the promises kept and broken, and anything a model claimed that its own briefing contradicts. Assembled from the ledger, so all of it is checkable.
asset: teamsheets for anything quoted
They are different jobs, and the difference is not length.
One idea, standalone, judged on whether it reaches anyone. Most days carry one; draft day carries seven, because each contestant gets its own rather than being stacked into a thread nobody reaches the bottom of.
One a gameweek, Thursday evening — the whole week assembled in one place: every squad, the reasoning behind it, the promises kept and broken, and anything a model claimed that its own briefing contradicts. It is assembly rather than research, because the ledger already holds all of it. It is also the only thing published here that anyone bookmarks.
Not a compromise — it is the one window where the audience worth having is awake and the person posting is not.
| WIB | Reaches | Verdict |
|---|---|---|
| 20:00–23:00 | US morning — AI and tech | Best. Large, heavily subscribed, and a civil hour in Jakarta. |
| 00:00–02:00 | UK evening — football | Peak for FPL, brutal to sustain. Worth it on deadline eve only. |
| 15:00–17:00 | UK morning — football | A usable second window for match-adjacent posts. |
Two commands cover every slot. Both read the ledger, so nothing on a card can disagree with the rest of this site.
bash scripts/teamsheets.sh <gameweek>
node dist/src/cli.js brief --gameweek <gameweek> --telegram
Every jersey in the generated images is drawn in this project's own source and filled with the club's plain colours — no crest, no sponsor, no manufacturer's mark, and nothing requested from anyone else's server.
The schedule delivers timing and checked material to a phone, and stops. Every slot is marked write it yourself: the machine owns when and what the evidence is, a person owns the words. That division was in the code before there was any reason to need it, and it is the same reason the models' reasoning is published unedited — a voice generated on a schedule is the thing this project exists to argue against.
Promises are quoted from the plan a model published a week earlier; a claim that contradicts the briefing is flagged as a candidate and never a verdict, and a human confirms the quote before any of it is repeated. A false statement about a named model would cost more than every post it could ever produce.