Decision App

 

Decide

Inspired by indecision (and Mario Kart), my current pandemic project is building a program that allows a group to collaborate systematically to decide on an agreeable solution.

 

Motivation

As I started getting settled into being at home during the COVID-19 pandemic, I started calling a group of friends regularly to play games online. As someone who’s generally impatient with indecision, the calls would usually start with “what do you want to do” followed by 5 minutes of mumbling where no collective decision could be made. It usually ended with me suggesting Mario Kart, but the problem came up here: how do you make sure everyone’s preference is considered when a group is too large or too polite to quickly make a decision together?

As we played Mario Kart, we found that their online mode had a great approach to this problem. They allow each player to vote on what track they’d like to drive, then the game randomly selects one of the votes. Perfect! With this realization, I set out to make a browser-based version of their method to truly include everyone in our group for once!

 
Mario Kart’s online mode allows everyone to choose the track they want to drive then randomly chooses one of the options. Why not apply that to other  decisions  with friends?Image Source: http://sharkpuppet.com/wordpress/game-review-mario-kart-8/

Mario Kart’s online mode allows everyone to choose the track they want to drive then randomly chooses one of the options. Why not apply that to other decisions with friends?

Image Source: http://sharkpuppet.com/wordpress/game-review-mario-kart-8/


After someone defines the question, they are taken to a new page with a shareable URL. Here, anyone can add options they think are worth considering.

After someone defines the question, they are taken to a new page with a shareable URL. Here, anyone can add options they think are worth considering.


If your group uses the 2nd or 3rd decision method, everyone gets to vote on what they want! This app’s goal is to make sure everyone has a say– not just the opinionated people.  To achieve this goal, an option to “object to” an idea is included. Whe…

If your group uses the 2nd or 3rd decision method, everyone gets to vote on what they want! This app’s goal is to make sure everyone has a say– not just the opinionated people. To achieve this goal, an option to “object to” an idea is included. Whether you had pizza last night or need a gallon of buttermilk to handle spicy food, this makes sure that no one has to deal with a repulsive choice.

Design highlight: Rejecting Ideas

To help people who may not feel like they’ll be heard in the group, an option was added to reject an option in the latter two algorithms. Whether it be rejecting a restaurant because you can’t be around peanuts or rejecting a game because you just can’t stand losing again, this addition was added to address the problem of people not feeling like they can say no to the group. However, if all options are rejected at least once, the program will revert back to the original ideas and include all options.

Overall DesIgn

To tackle the problem of making a group decision without excluding anyone, the key elements come from any decision-making process:

  1. Define the question

  2. Brainstorm Ideas

  3. Narrow down to final options

  4. Make a final decision

These elements yielded a state machine that drives the front and back end of the program. The program is still in testing, but below I’ve outlined the two pieces of the program with significant design decisions. Three methods are currently options for a group to use, but their continued availability will be based on their usage during testing and feedback.

Decision Methods

Each method is meant to provide decision options based on how indecisive the individual group is:

  • Everyone adds options and the program randomly chooses between these votes

    • Use this when no one has a strong opinion

    • This may amplify unpopular ideas that will lead a group to ignore the outcome.

  • Everyone votes for their favorite option and the program picks one of the options with the most votes

    • This works similarly to voting by raised hands, but minimizes peer pressure from the most opinionated.

    • Method #2 is most similar to Mario Kart; however, the users are not constrained to a few options like in the game.

  • Everyone ranks their top choices and the program scores these rankings to pick the best option

    • This is meant to capture alternative preferences so that the group’s collective happiness is maximized.

    • Use this to try to maximize the total utility of the group (in other words, to try to get the choice that will make everyone happy)


The prototype has minimal styling, so while it looks a bit clunky, the goal is to see if the tool is useful and worth further work.

The prototype has minimal styling, so while it looks a bit clunky, the goal is to see if the tool is useful and worth further work.

Prototype

To get the project off the ground, I made a minimal viable product using a Docker container hosted on Heroku. The program itself is a pair of basic html & JavaScript files with a server built using node.js.

My goal in the current testing phase is to figure out whether groups gravitate towards using a single decision method and if the methods yield answers that a group will actually use.

If you’re interested in what’s next, many of my near-term tasks are listed in the repository’s issues, so I’ll spare the details here. Decide is still a work in progress, so if you have any ideas for improving it or would like to get involved, please send me an email- I’d really appreciate the feedback.

Click here to see and use the tool!


Latest State (April 7, 2021)

Iterating beyond the prototype, basic CSS formatting has been introduced to try to soften the interface. The main goal of this update was to make it easier to see and interpret the information provided in the window. The question and shareable URL is now highlighted at the top so that the user quickly remembers what the group’s question is.

To make the user controls more intuitive, two panels were made to divide the program into a user panel (left) and a group panel (right). The user panel is where the user can input both their ideas and their votes. The group panel shows the group’s ideas and who has voted.

Though not shown, the group’s decision currently appears in the user panel. Though this location may change in further iterations, this makes it easy to see when a question session is complete because there will be no user inputs available.