top of page
Search
  • Writer's pictureRotem_D

Designing a World Cup betting pool with Qualtrics

This past month, almost everybody had a world cup betting pool. I was able to convince my friends to have one as well. It’s a great way to spend time with them (while actually living thousands of miles away). Also, it offered me a way to collect some data and work with it!!


For the 2022 World cup, I suggested we will select the result of every game. In the early rounds it meant choosing a winner or a tie, and then for the knock-out rounds, only a winner.

Essentially, it is a data collection exercise, so I opted to automate the process and build a tool which would allow us to select the results of every game daily using a Qualtrics link. In this post, I will focus on the instrument that I designed, and show multiple examples of how I aligned my instrument to several user requirements. In addition, I’ll display some results using different visual tools in R.


The Instrument

With the users (my friends) in mind, I had to overcome several design challenges.

First, the time lag – my friends are 8 hours ahead of my US central time zone, which meant I must design a data collection tool that would be easy to work with across multiple time zones. A closely-related challenge was to ensure that when we select the results each day, only the relevant games will be displayed (to avoid repeated selection). One additional feature I wanted to integrate is to restrict the selection so that it would be possible to choose an outcome until a few hours prior to the games kick-off.


So, what did I do?

My design software of choice is Quatrics - it has many features that offer a lot of flexibility in creating surveys to collect data.

I began by plugging all the early round games and displaying them in separate blocks, one for each game day.


For the entire project, my main concern was to make it easy to see the relevant games and select a result. So, I planned it in a way to ensure that voting for each set of games would be available starting on the day before. At the same time, I also needed to ensure that voting is possible only prior to the games’ start.

These design restrictions can be addressed using Qualtrics date options. The first step is to include an embedded data feature to the Survey Flow tab and defining it as a variable type date. I used the ISO date version which populates the data with UTC time that I use to design all time-related aspects of the survey. Important note - the embedded data feature must be added to the survey flow before all survey blocks!!


Once the embedded date data is defined, I added to each game a logic restriction.

My idea is to open the voting the day before the games, starting around 12pm Israel time, and close it about 2 hours prior to kick-off of the first game of the day (meaning that voting is possible until around 10am Israel time, the day of the relevant games).

The time lag with Israel was the tricky part – Qualtrics is designed for US mountain time and Israel is 9 hours ahead (US central time zone is one hour ahead of mountain time). All those required some planning before setting the time restrictions for each day.

Here is how it looked from Qualtrics side for the games played on November 22, 2022.

In this example, the option to select results opens (is available) on November 21 at 4am US Central time (12pm Israel) for the games of November 22. Voting will close on the game day (11/22) on 2am US central time (10am Israel time).


I followed the same logic for the knock-out rounds. This time, since there were less games, and the gap in times was shorter, I restricted selection of the results to noon Israel time (4am US central time) the day of the game(s). Below is the logic display for the semi-final games.



One last design point – not everyone can vote using a laptop or a desk computer.

In fact, it is more likely that most people will use their mobile phone - so it was essential to make it mobile friendly. From a design standpoint, it means larger and clearer fonts and not too much clutter that distracts a smaller screen.

Here is the mobile display of the intro screen (each participant select his name from a drop-down menu) and voting on a day's game.




Data and Results

When it comes to the results, I made it a priority to be able to share the outcomes with my friends as soon as possible once each day’s games ended. To accomplish that, I managed all collected data using a large Excel spreadsheet. Then, I uploaded different data forms to Quarto (R) and created an html page to display all the relevant results in an easy to use format (especially for mobile users). Below I will share some of the visual tools I created. For the full version, you can get to the complete html page here.


The preliminary rounds games: every correct guess was worth 3 points. Here is the final leaderboard using a barplot with some added features.


What do we have here?

For starters, the text on the bars provides information on the number of total correct guesses (for all games). Also, since some of the dudes missed a few games, I included two rectangles next to the bars to provide more info.

The first displays the number of games the person voted (preliminary rounds had a total of 48 games), and a second with correct guesses percentage (win %) which provides more context considering that not everyone voted for all the games. I built one more thing for the games in this round - using the Kabelextra package, I tabulated everyone's selections for every game (it is way too big for this post so check the full html or the code).


For the knock-out rounds, I used other tools to display the results. First, building on the total points from the preliminary rounds, I added a Lolli-pop plot for the points leaderboard at these stages. For these set of games, every correct guess (only winners this time) is worth 4 points.

In the plot above, I update the total points values using geom_point and used alpha transparency scale to have the total number of points at the top (point) of each bar. Then, I added two sets of labels - one for the number of correct selections (in the yellow label boxes) and the other for the total win % (the blue label boxes). The ipsum theme from the hrbrthemes package gave it a nice looking background and structure.


As we got closer to the finals, one dude suggested to display each person's selection of a winner before the games begin. He figured it would inspire more group debates before and during the games.

I went to work and came up with the plot using the geom_tile for a nice and clear look. In the figure below, every knock-out stage is separated using facets. Then, all relevant games and how each dude selected are detailed in the panels.

The version here is color-coded based on the results of the games – blue for correct and red for incorrect bet. When I shared it with my friends prior to a game, the choices were all colored with a grey background. The geom_tile provided the flexibility to create a tabular-like display within a (gg)plot.


One last visual: prior to the start of the knock-out stages, I asked each dude to select a finals winner. Then, I used image tools and the countries' flags to build a nice-looking figure to present it. The display (with my short commentary on it) was updated as games progressed and teams were knocked-out of the tournament. Here is the post-finals version.

The Bottom line

I started this project with the goal (no pun intended) of doing something with my friends and also using it to collect some data. It was a very interesting project which taught me a lot about how to think about the users of a product, and how to design it in a way that placed significant emphasis on making the experience easy and user-friendly. Qualtrics provided me with multiple features and options to build such tool and make all necessary changes as I go.

Plotting the results was the real fun of this project and allowed me to find additional R solutions to display the data using interesting and engaging formats.


As always, the full project details are available on my Github.






39 views1 comment

Recent Posts

See All
Visuals 1: Map
Visuals 2: Treemap
Visuals 3: Donut Charts
Visuals 4: Tables
bottom of page