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.
To use Decide, click here!
To see some questionable code, the github repo is here!
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!
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:
Define the question
Brainstorm Ideas
Narrow down to final options
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)
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.
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.