Commission 01 · Visa
Visa Tribuna
WhatsApp had no shared room where the crowd could judge a referee's call, so I moved the room to the server and kept every fan's conversation private.
World Cup 2026 · visatribuna.club · dashboard.visatribuna.club
- 15days from the phone call to the opening match
- 2distinct fan experiences in one platform
- 90svoting window while the referee reviews the call
- 232backend tests protecting the critical paths
A kid with a Panini album
Every four years the Panini album comes back. Same ritual on every continent: you buy the packets at the corner shop, you trade your repetidas with whoever is outside, and somewhere along the way you end up knowing the squads of teams from the other side of the world. I did this as a kid. I was very serious about it.
So when the phone rang and the question was whether I could build a fan experience for the World Cup, I did not need time to think about it. I have loved this tournament my whole life. Somebody was offering to let me build something inside it.
Then I looked at the calendar.
Fifteen days
The call came on the twenty seventh of May. The opening match was on the eleventh of June. The actual requirements did not arrive until the third of June, which left eight days. There was nothing yet. No designs, no architecture, no color palette, no dashboard, no database, no idea of what the product actually was beyond a sentence describing a wish.
Then a second one arrived. Rexona, for a different agency, on its own schedule, with a completely different game. For the stretch where the two overlapped I was building both at once.
A sponsor activation of this kind normally runs two to four months from brief to launch, with a team on it: a creative director, a designer, a backend engineer, someone on infrastructure, a project manager, and a lawyer somewhere in the background.
I did both projects, and I did them by myself. That meant the user experience, the interface, the type, the system architecture, the database design, the operator dashboard, the deployment, the monitoring, and the legal research. All of it, twice, in parallel.
That constraint explains every decision that follows. With two weeks and no team, there was no room to be wrong twice about the same thing. Everything below is a choice made under it.
The clients supplied the starting ideas. They did not hand me finished products. Turning those ideas into complete fan experiences was my responsibility. I conceptualized the user journeys and operator workflows, designed every screen, interaction, state, line of copy, and use of color, then built the frontend, backend, infrastructure, and deployment.
What WhatsApp cannot do
First, where this happened, because it shapes everything. Both activations lived at Tribuna Club, a ticketed fan event built in the north car park of Estadio El Campín in Bogotá, running from the twenty seventh of June to the nineteenth of July. Doors opened at midday, with matches shown across more than two hundred square metres of screen and a few thousand people inside at any one time. You bought a ticket, you came in, and the sponsor stands lined the floor. Visa had one. Rexona had another. That is the room these were built for: not a broadcast and not a national campaign, but a specific floor full of people who had paid to be there.
The request was reasonable and, as described, impossible.
Connect every fan to one bot. Run one big interactive conversation. Let the operator watch all of it from a single screen. A fan scans a code at the Visa stand, the referee walks over to the pitchside monitor, and the whole floor argues about the penalty in one place.
That product does not exist on the WhatsApp Business Platform, and no amount of effort would have made it exist. There is no way to broadcast to a large group and collect everyone's replies into one shared room. Group chats put every member in view of every other member, which is already wrong for a brand activation, and the official group tooling caps out at eight people anyway. Broadcast lists look like the answer until you read closely: they belong to the consumer phone app, not the business platform. A business can certainly send in bulk, but sending in bulk is not a room. It is a stack of private messages, which is precisely the problem.
So the first thing I delivered was not code. It was a document telling the client that the thing they had described could not be built, on the record, before anyone found that out the hard way.
The second thing I delivered was the version that works.
The room is on the server
The reframe is one sentence. The shared room does not exist on the fan's phone. It exists on the server.
Each fan had a private, one-to-one conversation with the Visa number. When a review began, the operator sent the same compact question to every active participant: ¿Fue penal? ¿Fue mano? ¿Fue gol? Fans answered with reply buttons. Their votes returned to the server, where they became one live result and one leaderboard.
The crowd was never inside WhatsApp. The server assembled it.
That was not a workaround. It was the foundation. A leaderboard needs one authority keeping one clock. Fair timing needs a measuring point the fan cannot reach. Deciding who won needs one source of truth about who was right and who was fastest.
This preserved the part of WhatsApp that made it right for the event. There was no app to install, no password to invent, and no new interface to learn while a match was playing. The fan scanned, replied, and went back to watching football.
It also kept every participant private. Nobody entered a giant group chat or saw another fan's phone number. Fans shared the result without sharing their personal information.
Three buttons and twenty characters
WhatsApp has no poll for a business to send. Each VAR question had to go out as reply buttons, with an unforgiving limit: three options, twenty characters each.
That was the entire fan interface. Every bit of nuance in the client's idea had to survive being compressed into sixty characters of button text, clear enough to understand while thousands of people were watching the same replay.
Ninety seconds of suspense
The voting flow had to follow the rhythm of a VAR review. The ninety-second window came from research, not taste: on-field reviews at the 2018 World Cup averaged a little over eighty seconds. The operator could extend that window when the referee needed more time. Once the official call was known, the operator recorded it and the system awarded the correct answers.
The ranking used two things: correct calls first, then average response time. That made the game easy to understand, but it also made the clock consequential. If speed can decide a prize, a timestamp cannot be taken on trust.
So response time was measured when the answer reached the server, not from a time supplied by the fan's phone. The same principle shaped the rest of the scoring: one vote per fan per question, correctness awarded only after the official decision, and every incoming WhatsApp request checked before it could change anything.
Those rules are almost invisible in the experience. That is the point. Fans should feel the tension of making a call before the referee does, not the machinery keeping the contest fair.
A control room that stays out of the way
The operator is not an engineer. On match day, the operator is a person watching football on one screen with a browser open on another, and their attention belongs to the match, as it should.
So I designed the console as a single vertical rail, with only the next action lit. Not a dashboard of everything at once, and not a grid of equally shouty buttons. Start the match. Send the question. Close the vote. Mark the decision. Share the result. Announce the winners. One glowing step at a time. Everything else waits quietly for its turn.
Two details earned their complexity. The match name fills itself in from the live fixture data, so the operator never types it and can never mistype it. The final step, announcing the winners, turns gold and pulses when the match ends, because that is exactly the moment a human being forgets it. The whistle goes, the room empties, attention collapses, and the winners never find out they won.
There was another Visa experience hiding beside it
VAR Tribuna was only half of the platform.
The client also supplied the starting idea for Compras Impulsivas: ask fans to tell the story of their most impulsive World Cup purchase. I turned it into a second complete experience. Fans could type their story or record a voice note in the browser. Operators reviewed the entries by day, selected up to three winners, and the system handled the winner and consolation emails.
The two experiences were deliberately different. One unfolded live with the match, whenever a VAR review began. The other let each fan tell a personal story in their own time. They shared a public home, an operator console, email delivery, privacy controls, and the same event calendar without being forced into the same interaction.
What the public never needed to see
A prize contest turns seemingly minor details into product decisions. The terms framed VAR Tribuna as a contest of skill: the result followed correctness and speed, not a draw. Consent preceded participation. Public standings used masked names, while participant details stayed in protected parts of the system.
That work was not decoration added after the product was finished. It changed the product itself: what data was requested, when consent appeared, how winners were contacted, and what could safely be shown on a public page.
The same discipline applied to reliability. Live football traffic is quiet until it suddenly is not, so vote counting was designed for bursts rather than averages. The backend now has 232 tests, with the heaviest attention on voting, scoring, winner selection, and message delivery. Those are the places where a plausible-looking mistake would still be the wrong result.
From first commit to the first crowd
The repository began on June 7. The World Cup opened four days later. By June 26, the WhatsApp flow had been rehearsed end to end on the production number; the first Tribuna Club operation followed on June 27.
I worked with LLM Orchestrator, the agent system I built to divide research, implementation, review, and debugging into explicit roles. It let me move quickly, but speed was never the acceptance criterion: a change was finished only when the relevant build or test output proved it.
I also set up agents to watch the running system on a schedule, report anything unusual, and stay within reach from my phone. I could be out to dinner, get a message that something looked wrong, understand what had happened, and fix it from the table.
For a couple of weeks I got to answer my system from a restaurant like Tony Stark, and I enjoyed every minute of it.
The finished Visa platform included the WhatsApp experience, the public fan site, the guided operator console, live match data, the storytelling contest, and automated emails. With the tournament over, visatribuna.club and its operator console now run with demo data, preserving the work without exposing real participants.
What stayed with me was not a test count or a technology choice. It was the value of saying that the original room could not be built as described.
Once that was clear, the better product became obvious: keep every fan in a private conversation, assemble the crowd somewhere trustworthy, and let the football remain the loudest thing in the room.
Somewhere, a kid was probably filling a Panini album while I built it.