# The Gaffer has entered the chat.

By Jake Dickinson · Published 2026-09-09

Source: https://jakedickinson.co.uk/notes/the-gaffer/

A fantasy football bot with a point of view. How I built the character, kept the scores separate from the jokes, and learned from the people arguing with him.

## A league needed a voice

The Gaffer is a Slack bot that writes fantasy football round-ups with the manner of a manager who has heard every excuse. He reports the results, questions captain choices and remembers confident predictions that have aged badly. Having an opinion was part of the brief.

I wanted to give a familiar league ritual a character of its own: someone delivers a verdict, everyone disputes it, and a reasonable team selection becomes the subject of an unreasonable amount of discussion.

One exchange exposed the challenge. A participant said they had bought a player. The Gaffer repeated the transfer as fact, even though the squad data did not support it. He could sound like he knew the league without actually knowing whether a claim was true.

That became a useful test for the whole project: could I build a character people enjoyed arguing with, while keeping his claims tied to evidence? The conversations here are paraphrased and identifying details are left out.

## Facts first, personality second

A facts engine pulled information from the public Fantasy Premier League API and calculated the league table, captain choices, bench points and transfers. It passed those results to the language model in a structured data file. Code handled the calculations; the model wrote the report.

The character lived in plain-text files: a voice guide, recurring league storylines and structures for different reports. I could tighten a joke or change the tone without touching the calculations.

Saved gameweek records held the history. Shorter notes captured recent conversations and recurring themes, giving the reports continuity. A prediction could come back later instead of every post sounding like his first encounter with the league.

Match updates, verdicts and a mailbag gave him a schedule. He did not answer every mention immediately. A later reply could feel like a considered response from a stubborn pundit, while leaving people room to talk between posts.

## The mistakes made the rules clearer

The transfer mistake led to a specific rule: something said in conversation stays a claim until it has been checked against the actual squad. Giving those sources different status was more useful than simply asking the model to be accurate.

Player availability exposed another gap. The bot leaned on a player's form without giving enough weight to a warning about their fitness. The league challenged the advice. A confident voice had made an incomplete assessment sound more certain than it deserved.

I needed to acknowledge the miss and improve the checks. A character can admit an error and still keep their voice. Insisting on an answer after the evidence has changed is what damages the exchange.

There was still room for a hunch, provided he labelled it as an opinion. Even his favouritism needed current evidence: the league leader and gameweek winner earned more respect, but hard-coding their names into the voice guide would have left him praising yesterday's winner.

## The people using it helped write it

The complaints were often the most useful feedback. Repeated jokes stopped being funny. Explaining his own process became a verbal habit. A callback fell flat if he remembered the original exchange incorrectly. Each objection gave me something specific to refine.

People challenged predictions, corrected facts and brought other participants into the discussion. Those counterarguments told me more than a thumbs-up on a generated report could have done.

The channel counts put a number on that change: 291 human messages in the first 16 days with The Gaffer, compared with 67 over the preceding 28 days. That is 18.19 messages per day, up from 2.39 — about 7.6 times as many. The season had started four days before launch and two people joined the channel that week, so I could not credit the bot alone.

Clear boundaries helped keep it enjoyable. Criticism stayed with football decisions: a bench selection, a transfer or an overconfident prediction. Personal characteristics and unrelated subjects were outside the character's remit. Attempts to pull him elsewhere were redirected back to football.

## Give the character a job worth returning to

The Gaffer gave a recurring update a recognisable voice and a reason for people to respond. The league provided the subject, the data provided the substance, and the people taking part supplied much of the humour.

For me, the lesson is to design those parts together. What the bot remembers, when it speaks and how it responds to a correction all shape the character as much as the words in its voice guide.

A forceful answer can be entertaining, but it can also make weak evidence sound convincing. The stronger the personality, the more carefully its confidence needs to reflect what the system knows.

If this has sparked an idea for your organisation, get in touch with the team at RKH, where I work. The team can talk through your audience, what you want to build and how RKH could help bring it to life.

Related: [The answer is on Basecamp.](https://jakedickinson.co.uk/notes/the-answer-was-already-in-basecamp/)

[Talk to RKH about your idea](https://www.rkh.co.uk/contact/)
