Future Anthem Blog

Personalising the World Cup - How hard can it be?

Written by Jan Teichmann, Senior Staff Engineer | November 11 2026

Future Anthem had already run casino and sports recommendation engines successfully for years. Why would it be a challenge to extend personalisation capabilities to the World Cup?

Why the World Cup is different

  • The World Cup is a unique competition that runs every four years, meaning we couldn’t rely on historical data from, for example, other national leagues to train our systems

  • The World Cup is much more dynamic and attracts a big number of first-time football punters

  • Engaging in-play personalisation requires real-time recommendations delivered within seconds of live game events

  • The scale of the World Cup produces significant volumes of data

  • There is no mock World Cup to thoroughly test data-driven personalisation systems beforehand, leaving no other option than to deploy and test solutions straight in production

  • Time zone differences mean your engineers are asleep when the action happens. Monitoring, metrics and alerting need to be top-notch and automated

That sounds at least a little scary to any responsible engineer or business. But at Future Anthem, we are experts at solving these very problems.

Built for the Spike

First, we had to build a new real-time ingestion application that is extremely elastic and responsive to the spiking nature of a sport-bet stream. Not much happens on the sport-bet stream most of the time with just 5k to 20k events per minute, that is, until the first goal is scored and over 1M events per minute hit the pipes. No warning, no ramp-up. The only way to solve such a problem is to break it up into independently scalable components that are strung together with performant queues and intelligent backpressure. Thankfully, Kafka provides us with a solution for the highly performant queues and Apache Pekko a solution for distributed and elastic components with intelligent backpressure.

Reacting to the moment

Our personalisation reacts to specific in-play moments, for example, “your bet on the first goal scorer just won”. These triggers can be configured for a range of scenarios based on use cases and requirements. The system must then enrich triggers with personalised recommendations matching the current context of the game and use case. For instance, if the game is in the 3rd minute and the event is the first goal being scored, the enrichment would be for an in-play personalised bet like second goal scorer. Or the game might be in the 88th minute and the enrichment would be for a personalised bet on the next World Cup game or a personalised outright bet. After successfully enriching triggers with personalised and context aware bet recommendations, our PUSH integration delivers these to punters via a client’s app.

This is a straightforward Kafka stream of punter linked events being processed. But we need something that provides personalised bet recommendations as input for our enrichment step. This is again where Kafka provides an excellent fit as we can develop an independent parallel stream processing our ingested common event data. We run one Kafka topic with our ingested data alongside many independent consumers and streams.

World Cup scale, small footprint

While we started with a massive spike of punter linked events, we designed our AI models so that the data compresses heavily at the feature stage. Our original spike is highly duplicated data within the feature domain which allows us to apply intelligent caching and filtering to build out complex AI personalisation models while handling the high data volumes cost efficiently.

Similar optimisations exist for our enrichment stage. Our recommended bets are personalised to the punter, the trigger and the game context. However, the trigger (first goal scored) and the context (3rd minute, England vs France) are the same. Scoring punters by their similarity allows us to apply intelligent caching strategies for the enrichment stage providing real-time personalised bet recommendations for vast volumes of data efficiently.

Something that started off as requirements seemingly requiring a large infrastructure footprint has fitted end-to-end into 24 vCPU and 96 GiB of memory. For reference, this is barely enough to run today’s AI home lab under people’s desks. Because regardless of all the progress in data engineering, machine learning and AI, the real challenge remains getting solutions into production which has always been and always will be an engineering problem.

Ready to put real-time personalisation into production? Book a demo with our team.