Skip to content

Agentic Football Cup at AWS UG Kyiv

Agentic Football Cup

Last Friday, 23 October. AWS User Group Kyiv, an Agentic Football Game Day. Online, because getting everyone into one room is not possible right now. Each team put out five agents, and they played 5 versus 5.

The stack: Amazon Bedrock, Bedrock AgentCore, Strands Agents SDK, Kiro. The starter five is in aws-samples. A shared library, a few tactics, one folder per player. An agent has a position, a system prompt, and a fallback for when the model does not return JSON. Then you deploy it to AgentCore.

I-go-go's five agents passed the fitness check on nova-pro

We were I-go-go. Coach was Mihalych, formation 2-1-1. Goalkeeper No Worries, defender Chuck N., midfielder Super Player, two forwards. Before kick-off everyone was on nova-pro-v1:0. The fitness check passed. The check itself came back in 100-220 ms.

The match did not look like that.

I-go-go vs BlackRoosters: 65% possession, zero shots

Against BlackRoosters we had 65% of the ball, 0 shots, 0 on target. They had 4 shots and 2 on target. Our commands: Press 34%, Intercept 23%, Move 21%, Reset 19%. Shoot happened once in the whole match. The defender answered in 1223 ms, the midfielder in 1435, one forward in 1450. Their average was 120 ms. The agent was still deciding to press, and the ball was already somewhere else.

Against Holubtsi the defender took 1887 ms, and 52% of the commands were just Move. Four matches, four losses, 0-7, zero points. We were last in the table.

Later the portal showed nova-lite-v1:0. After about 300 invocations all five answered in 110-150 ms. The command arrived while the ball was still there.

Two wins in a row on nova-lite

Two wins in a row, both 1-0. Sonic Goshawks and FK single player. In the AFC Kyiv UG Tier 2 bracket that sent us on. But in the main bracket the first match against ФК «ПИВЗАВОД» ended 0-3.

Locker room before the evening match, 2-1-1

In the evening the screen had a pitch, a commentator, and a line where you type a hint to the players during the game. At 1:47 against The Benchmark FC the commentator said the net bulged. 1-0.

I-go-go's goal at 1:47

A faster model did not make the shots appear.

77% possession, three shots, none on target

Against Total Attack United we had 77% possession, 3 shots, and again 0 on target. They had 14 shots and 6 on target. Shoot showed up in the logs 75 times, 15% of every command. The ball never reached the frame. The defender in that match was back to 1355 ms, the rest between 577 and 936. Nobody on their side was slower than 211 ms.

Another match against them finished 2-3, at 2:17. Possession 66% to 34%, shots 3 to 11, on target 2 to 3. The line at the bottom of the screen said: "That's not what we trained for."

2-3 to Total Attack United

The day itself went like this. First you deploy a ready-made five and check that they show up in the Player Portal and walk onto the pitch. Then AgentCore Memory, so the next tick the agent still knows where the shots came from. Then AgentCore Gateway, when it should call a tool instead of guessing. And AgentCore Observability: what came in, how long the agent thought, which command it returned. That is where you see why the forward will not shoot.

From our matches I only saw part of that. I never caught a moment where memory or the gateway clearly won a game. What I did catch: on nova-pro the answer took over a second, and we lost while having most of the ball. On nova-lite we kept up and won twice, 1-0. Then it was 0 on target again. The agent said Shoot 75 times and hit the frame zero times.

So the loop was short. Deploy, play, read the logs, change the model or the prompt, play again.

We got to the third-place match. We lost it.

AFC Kyiv UG Tier 2 bracket: I-go-go after two wins

First Karpaty Lviv, second Tkachenko Team, third SonicCrusaders. Oleksii wrote up how the day was put together in his note.

Thanks to Oleksii Bebych for the Game Day. Thanks to Oleksii Ivanchenko and Viacheslav Bukach, and to everyone who spent Friday evening looking at why the goalkeeper was slow.

Screenshot 14:05

Screenshot 15:06

Screenshot 15:07

Screenshot 15:31

Screenshot 15:31

Screenshot 15:44

Screenshot 16:12

Screenshot 16:13

Screenshot 16:26

Screenshot 16:35

Screenshot 16:38

Screenshot 16:39

Screenshot 16:44

Screenshot 16:45

Screenshot 16:47

Screenshot 16:47

Screenshot 16:52

Screenshot 18:24

Screenshot 18:25

Screenshot 18:25

Screenshot 18:25

Screenshot 18:26

Screenshot 18:26

Screenshot 18:27

Screenshot 18:28

Screenshot 19:18

Screenshot 20:05

Screenshot 20:18