Thousands of offline visitors, tens of thousands of transactions, real-time analytics, tropical downpours, and Lewis Hamilton's 100th victory.
The Task: Develop a system for registration, points accrual and redemption, merchandise tracking, and visitor activity analysis at a company’s promo pavilion during the 2021 Formula 1 Sochi Grand Prix.
📦 What the Client Needed:
Until 2022, Rostelecom was an official partner of the Sochi Formula 1 Grand Prix. As a partner, they set up a large promo pavilion near the Rostelecom-branded grandstand to attract race spectators and showcase their products. The creative agency Geometry developed the concept for the stand and a plan to engage and motivate visitors. According to this concept, every visitor to the stand would go through a "game track" that started with a simple registration and obtaining a virtual pilot badge, giving access to various brand zone activities along the track. By completing tasks unique to each zone, participants could earn game points, which they could then spend on branded merchandise.
This was the scope of work for the software development.
This was the scope of work for the software development.
🧠 Preparation
We needed to design the entire user journey, from registration to "purchasing" prizes in the online store.
Starting with registration. To simplify and speed up the process (which was crucial with thousands of attendees), we decided to have it done on the visitors' own devices. This eliminated the need for registration booths or dedicated devices, avoiding queues at the start of the route. The simplest and most convenient way to direct users to the registration landing page? A QR code, placed in the entrance area.
Next, how to ensure guests could earn points as they moved from zone to zone? Each visitor needed a unique identifier, which would be requested by the operators of the interactive zones. We generated unique six-digit IDs along with QR codes so that staff could scan them with their smartphones instead of manually entering them.
During UX discussions, we decided that in addition to the identifier, participants should also have a personal account where they could see the real-time status of their game track progress. We added features to display accumulated points and a full list of interactive zones where points could be earned, so participants could track their progress and plan where to go next to earn more currency for better prizes. Since the event lasted four days, and each participant could visit the stand on any of those days, we added an interface that displayed their results on different dates, creating a motivation for attendees to improve their "lap time," just like in F1. To further incentivize, the personal account also displayed a list of all the prizes available for purchase with accumulated points.
The points economy was calculated so that to earn even the smallest prize, visitors had to not only visit all the zones but also showcase their knowledge in a quiz on racing movies.
We tackled the personal account functionality, and then turned our attention to the interface for the staff.
First, only a select group of people could have the authority to assign points. If the link to the admin panel leaked, anyone could increase their game balance without any effort. We added Google account authentication and distributed additional permissions to the staff.
Second, we needed to allow staff members to move between different interactive zones, so the system had to let them select the activity for which they were awarding points.
And most importantly, the interface had to be as simple and straightforward as possible, allowing quick visitor identification and smooth transactions. In the end, the staffs' smartphone screens had just three elements: zone selection, a field for entering the participant’s ID, and a "grant points" button, which became active when the database found a user with the entered ID who hadn't already received points for that location on that day. The number of points awarded at different zones varied, which was built into the system logic to avoid burdening the staff. When the ID was entered or scanned from the visitor’s QR code, the interface displayed the participant’s name as registered, allowing a more personalized interaction.
Among the various stand activities, quizzes stood out as they offered the most points and were held on stationary iPads. Participants were asked to answer 10 questions based on racing movies. To increase the variation in points awarded at the stand, the quiz used a points system similar to Formula 1’s: 25 points for 10 correct answers, 18 for 9, 15 for 8, and so on.
Participants could engage in all the activities over the four days, with points being calculated separately each day. However, repeating the same quiz daily wouldn't be interesting and could lead to participants easily maxing out their scores on repeated attempts.
So, we developed four sets of 10 questions. When a participant took the quiz for the first time, they were randomly given one of the four sets. If they returned the next day, they were given one of the remaining sets they hadn’t seen yet. And to prevent anyone from taking all 40 questions in one day and recording the answers, we implemented a feature that ensured they would be given the same set of questions on any repeat attempts within the same day.
Throughout the stand’s operation, large screens displayed a leaderboard showing the top 10 players with the highest points that day.
The leaderboard was constantly shifting as players exchanged their points for prizes, which reduced their balances and allowed new participants to climb into the top positions.
Points for prizes were deducted by staff during the distribution of merchandise. They also scanned the participant’s QR code to see their current balance. Depending on the participant’s account balance, the interface displayed a list of only the prizes they could afford.
Of course, we also needed a way to monitor all transactions, view user points and stats, and track merchandise distribution in real-time.
🏎️ Grand Prix
When the client first asked us to prepare for thousands of offline visitors, we were skeptical, thinking the actual turnout would be in the hundreds. After all, the audience for such events is usually quite sophisticated and affluent (with tickets ranging from 15,000 to 500,000 rubles), and we doubted that this crowd would be lured by free raincoats and power banks. How wrong we were!
The interest was overwhelming! During breaks between races, people poured out of the stands, some heading for food and others to the partner promo pavilions.
Rostelecom’s pavilion was objectively the most engaging. While other partners offered sticker sets in exchange for personal data, our stand stood out by providing genuinely interesting activities and valuable, high-quality merchandise. In my years in events, I’d never seen a company give away such high-quality clothing, umbrellas, backpacks, thermoses, etc. I’m not sure how much was spent on merch, but it was definitely worth competing for!
And compete they did, faithfully completing all the checkpoints where they were subtly informed about Rostelecom’s products and services. The number of participants even exceeded the client’s optimistic forecast, and by the third day, we had to raise the "prices" of some merchandise to ensure it would last until the end of the event.
It was fascinating to watch the stand's activity on the admin dashboard, seeing zone activity graphs, staff performance, and all the ongoing transactions.
This interface quickly alerted us to a potential issue on the first day: clever staff members had started awarding each other points as if they had completed all the tasks, just to claim some merch for themselves. This was swiftly dealt with by simply sending a screenshot of their transactions to the group chat. Someone replied, "Wait, you can see everything?" and the point manipulation stopped immediately.
Unpredictable Sochi weather added some excitement to our work at F1. On Saturday, the third day of the Grand Prix, a torrential downpour hit, accompanied by powerful winds. Our open stand was drenched by almost horizontal rain, creating a risk of electrical short circuits. Many interactive zones had to be powered down, dismantled, and stored in technical rooms, while the stand itself became a refuge for dozens of people seeking shelter from the storm.
The weather led to the cancellation of some Formula 2 and Formula 3 races. Fans (and us too) worried that the main Formula 1 race might also be called off due to the rain. Fortunately, by 4 PM, the rain began to subside, allowing a few races to take place on Saturday. And on the final day of racing, Sunday, the weather became a major player in the Formula 1 race. Just 7 laps from the finish, rain began to fall, completely changing the course of the race. Lando Norris of McLaren, who failed to switch to rain tires in time, lost the lead to Lewis Hamilton, who had been chasing him all race. Hamilton's strategic advantage earned him the win, marking his 100th Formula 1 victory.
🏆 The Results:
Despite the challenge being outside our usual scope of work, the pitcha.ru team handled it brilliantly (the client agrees), and we even got to immerse ourselves in the sporting atmosphere, thanks to full-access passes.
🚶♂️➡️ What’s Next?
The Grand Prix ended. But it seemed a waste to throw away the result of several weeks' work!
After discussing it with the team, we decided to turn the results of this project into a scalable product and launched the service ExpoBoost.
The transaction system, prize shop, and admin panels we developed have proven highly effective in enhancing the appeal of exhibition pavilions through engagement and gamification. As a result, you can still find our web service in use at exhibitions, originally created for the Formula 1 Grand Prix. For example, this solution is currently operational at several exhibition pavilions at VDNH in Moscow for the "Russia" exhibition.