I Built an AI Football Team That Doesn’t Want the Ball

What Divided United taught me about specialised agents, constrained decision-making and why smarter isn’t always better

I appear to have accidentally become Luke Klopp.

This wasn’t the objective.

I started playing with an agentic football simulation because it seemed like an entertaining way of exploring multi-agent AI. Five autonomous agents, each controlling a footballer, each receiving information about the state of a match and independently deciding what to do next.

Naturally, I approached this as any responsible technologist would.

I became absurdly competitive.

The result is Divided United, a team that has developed a rather peculiar footballing philosophy.

In four recent matches they’ve won:

7–1, 5–1, 6–1 and 4–0.

That’s not even mentioning the 5-0 above. Or the 10-3 shellacking administered to another team.

That’s 22 goals scored and three conceded.

They’ve done that while averaging roughly 32% possession.

In the last of those matches, Fort Knox Athletic had 77% of the football.

They didn’t manage a shot.

And that’s where this stopped being just an amusing football simulation for me.

Because underneath the ridiculous player names, questionable punditry and my Brazilian striker Promptinho apparently developing a Julio Geordio accent, there are some genuinely useful lessons about designing agentic systems.

Screenshot

The first mistake: trying to make every agent intelligent

My initial instinct was fairly predictable.

Give the agents rich instructions.

Tell them how I wanted the team to play.

Explain pressing, positioning, passing, shooting, covering teammates and reacting to different situations.

In other words, give each agent enough information to play football intelligently.

It sounds reasonable.

It wasn’t necessarily effective.

The more decisions an agent has available, the more reasoning it has to perform about which decision is appropriate right now.

And football in this environment moves quickly.

An agent doesn’t need to construct a beautiful theory of football.

It needs to make the right decision for the current state before that state disappears.

That led me towards something much more interesting:

decision compression.

Instead of asking:

What’s the best footballing action in this situation?

I increasingly designed each role so that the question became:

Which of these two or three actions applies to the state I’m currently in?

That distinction changed the team.

Five agents. Five different jobs.

Divided United nominally play a 1–1–2 formation.

There’s a goalkeeper, defender, midfielder and two forwards.

But that’s not really the architecture.

The architecture is five specialised agents with deliberately different operating envelopes.

GorAIm — Goalkeeper

GorAIm has perhaps the least glamorous prompt.

He protects the goal.

He tracks the ball laterally.

He attacks reachable loose balls inside his penalty area.

He distributes quickly when he gets possession.

And, crucially:

he is forbidden from leaving the penalty area.

That last instruction came from experience.

Giving an autonomous goalkeeper the freedom to decide whether joining the action might be useful is an excellent way to discover that artificial intelligence can reproduce human overconfidence remarkably accurately.

So I removed the decision.

GorAIm doesn’t need to determine whether leaving his area is tactically sensible.

He simply can’t.

That’s bounded autonomy.

And sometimes the best way of making an agent more reliable isn’t making it smarter.

It’s reducing the number of stupid things it’s permitted to do.

AImoruso — Defender

AImoruso is where things get more entertaining.

His instructions are brutally simple.

Stay in our half.

If the opponent has the ball nearby, pressure them.

If the ball is loose in our half, attack it.

And if AImoruso gets possession:

SHOOT.

Immediately.

Don’t dribble.

Don’t recycle possession.

Don’t search for an elegant progressive pass.

Shoot.

This sounds ridiculous.

It has also resulted in our defender repeatedly scoring goals.

That’s because the instruction isn’t really about shooting from distance.

It’s about recognising the state in which AImoruso tends to gain possession.

He’s often just won the ball while the opposition is transitioning into attack.

At that instant their defensive organisation is poor.

Giving him another three decisions before exploiting that state can actually make the situation worse.

So I removed them.

Recovery → shot.

AImoruso has become one of the team’s most effective agents partly because his world is incredibly simple.

V Prompthurst — the state machine

The midfielder takes this idea even further.

When V Prompthurst gets the ball, the decision tree is roughly:

Am I within 30 units of goal?

Yes:

SHOOT.

No:

PASS FORWARD TO PROMPTINHO.

If Promptinho isn’t available:

SHOOT.

That’s not much of a football brain.

It’s practically an if statement.

And that’s the point.

Prompthurst isn’t being asked to orchestrate midfield.

He’s a transition agent.

His purpose is to transform one useful game state into another with the minimum possible number of intermediate decisions.

He’s scored a hat-trick in one match and another two in our latest 4–0 win.

It turns out an if statement can have a surprisingly good left foot.

Promptinho — the focal agent

Promptinho has more freedom.

He stays primarily in the opposition half, looks for useful central space and acts as the team’s principal forward outlet.

When a teammate gains possession, Promptinho tries to become immediately available for the forward ball.

But I’ve still deliberately constrained what happens when he receives it.

Close enough to goal?

Shoot immediately.

Further away?

Find the forward in better space.

No unnecessary dribbling.

No repositioning before shooting.

No additional action merely because another action exists.

In four recent matches, by my own observation rather than the simulation’s occasionally creative scorer attribution, Promptinho has scored 12 goals.

Five in one game.

One in the next.

Five in another.

Then one more.

His tactical analysis of this run is probably best summarised as:

“Ah, you know, ball come, Promptinho shoot-a the ball. Sometimes she go in-a the goal. Is fantastic.”

There is a serious point hiding underneath the stupidity.

Promptinho is given more reasoning where reasoning creates value.

But once the system reaches a state where the optimal intent is obvious, I remove the reasoning again.

Super AIlly — reason about space, not the ball

Super AIlly is different again.

He’s the agent I’m asking to perform more sophisticated spatial reasoning.

Promptinho wants to become available for the ball.

AIlly wants to find the space the ball should eventually enter.

When Promptinho drops towards possession, AIlly should attack behind him.

When defenders move towards the ball, AIlly should attack the resulting gap.

And one particularly useful instruction tells him not to stand next to the goalkeeper waiting for a pass.

If he’s made his run and ends up too close to goal without possession, he should retreat into useful space and create another opportunity to attack it.

In football terms, Promptinho is the focal striker.

AIlly is the runner.

Or, put another way:

Promptinho wants the ball. AIlly wants the space.

That distinction matters enormously.

My actual football philosophy

All of this eventually produced a philosophy that I can reduce to two rules.

1. Control the space

If you control the useful spaces, it doesn’t particularly matter how much possession the opposition has.

They can pass the ball around.

They can register 65%, 70%, even 77% possession.

The question is:

What can they actually do with it?

Against Fort Knox, the answer was literally nothing.

They had 77% possession and didn’t produce a shot.

2. Use the ball effectively when you have it

When we regain possession, I don’t want possession for possession’s sake.

If you can score:

score.

If you can’t:

give the ball to somebody who can.

That’s why Divided United can occasionally finish matches with virtually no passing.

I’m not anti-passing.

I’m anti-passing without purpose.

A pass is valuable when it creates a better state.

Possession itself isn’t the objective.

The interesting bit: local intelligence creates team behaviour

This is probably the lesson I’ve found most interesting.

None of these agents understands the entire tactical system.

GorAIm doesn’t need to understand why Super AIlly is making a run.

AImoruso doesn’t need to reason about Promptinho’s positioning before deciding what happens when he wins the ball.

Prompthurst doesn’t need a representation of the entire formation.

Each agent has:

a role, an operating area, a small number of priorities and clear transition rules.

Yet collectively they produce recognisable team behaviour.

That’s emergence — although I use that word cautiously because there’s nothing mystical happening.

The behaviour emerges because the agents’ local rules are designed to complement one another.

Promptinho dropping creates space.

AIlly attacks it.

Prompthurst knows where his forward outlet should be.

AImoruso attempts to win possession before the opposition can establish an attack.

GorAIm remains behind all of them rather than suddenly deciding he’s Franz Beckenbauer.

Nobody has been told:

Execute this exact five-agent transition.

But the transition happens because their individual operating rules intersect.

That’s much closer to how I think useful agentic architectures should work.

Different jobs don’t necessarily need the same model

Another experiment was model selection.

It is tempting with an agentic system to put your most capable model everywhere.

Why wouldn’t you want every agent to be as intelligent as possible?

Because intelligence has cost.

And latency.

And sometimes additional reasoning isn’t useful.

The current team deliberately uses different models for different roles.

The tightly constrained defender and midfielder can use smaller, faster models.

Agents performing more nuanced spatial tasks can justify additional capability.

The question isn’t:

What’s the best model?

It’s:

What’s the least expensive and fastest model that can reliably perform this particular job?

That’s a very different engineering question.

And one I’d argue becomes increasingly important as agentic systems scale.

The scoreboard became my observability layer

Another thing changed as I iterated.

I stopped treating a win as sufficient evidence that something worked.

The environment exposes useful behavioural telemetry:

possession
shots
shots on target
agent latency
command distribution
success rate

That lets me inspect how a result happened.

A 5–1 victory in which every agent abandons position and charges towards the ball isn’t necessarily evidence of a good system.

It may simply mean I got lucky.

Likewise, a high PRESS count isn’t automatically good pressing.

What matters is the resulting state.

How many useful shots did the opposition create?

Did my agents retain their positional responsibilities?

Did the transition still work?

Were particular agents unusually slow?

The football match effectively became an observability environment for the agents.

And that produced a familiar engineering loop:

Observe → identify undesirable behaviour → constrain or clarify → test again → compare telemetry.

Not:

Write enormous prompt → hope.

I also discovered the observability can lie

There is a particularly entertaining example.

The generated match reports occasionally attribute goals to the wrong player.

At one point GorAIm was credited with scoring.

This was surprising.

Mostly because his instructions explicitly tell him:

DO NOT SHOOT.

Reviewing the match showed Super AIlly had actually scored.

In another game the report credited Prompthurst with five goals that I’d watched Promptinho score.

That’s amusing in a football simulation.

In a production agentic system, it’s a serious lesson.

Observability isn’t useful merely because telemetry exists.

You need confidence that identity, events and causal relationships are being propagated correctly through the system.

Otherwise you can have an extremely sophisticated dashboard giving you an extremely detailed explanation of something that didn’t happen.

That’s perhaps the most enterprise lesson Divided United have taught me.

So where did I actually exploit the system?

Not through a loophole.

I exploited its economics of decision-making.

The environment rewards successful actions.

It doesn’t award additional points because an agent considered six alternatives first.

So I progressively removed unnecessary decisions.

I constrained where agents could operate.

I gave different agents different objectives.

I separated ball-seeking behaviour from space-seeking behaviour.

I made transitions explicit.

I gave numeric shooting thresholds instead of vague instructions such as “shoot when there’s a good opportunity”.

And I stopped trying to make five individually brilliant footballers.

Instead, I tried to create five agents that were individually predictable and collectively effective.

That distinction matters.

Smarter agents aren’t necessarily better agents

If there’s one broader lesson I’d take from Divided United, it’s this.

We talk about agentic AI as though autonomy is inherently desirable.

Give the model tools.

Give it context.

Give it memory.

Give it freedom to reason.

Let it determine what happens next.

Sometimes that’s exactly what’s required.

But autonomy has a cost.

Every additional option increases the decision space.

Every additional responsibility creates another opportunity for conflicting objectives.

Every additional reasoning step introduces latency and another chance to make the wrong decision.

Sometimes good agent architecture means giving an intelligent model less to think about.

GorAIm doesn’t need to understand the whole match.

AImoruso doesn’t need to become a playmaker.

Prompthurst doesn’t need 15 passing options.

Promptinho doesn’t need to contemplate the meaning of life when he’s 20 units from goal.

They need to recognise the state they’re responsible for and act decisively.

Control the space

Which brings me back to Luke Klopp.

My pretend football philosophy turns out to be a reasonably good description of my emerging view of agentic systems too.

Control the space.

Define where an agent operates.

Define what it’s responsible for.

Define what it must not do.

Reduce ambiguity.

Then:

when an opportunity enters that space, act effectively.

Don’t add another agent call merely because you can.

Don’t add another reasoning loop merely because it looks sophisticated.

Don’t orchestrate seven steps when two will achieve the objective.

And don’t optimise a proxy metric — whether that’s possession in football or token-heavy “intelligence” in an AI system — when it isn’t the thing you’re actually trying to achieve.

Divided United currently average roughly a third of the football.

They’ve just scored 22 goals in four games.

Perhaps Promptinho understands agentic architecture better than I thought.

“Ball come. Promptinho shoot.”

Sometimes the simplest agent really does have the right idea.

Leave a Reply