Skip to content

Instantly share code, notes, and snippets.

@mayfer
Last active March 2, 2019 22:23
Show Gist options
  • Save mayfer/9a4c8865da6d2b6ea6d0b41876cca95e to your computer and use it in GitHub Desktop.
Save mayfer/9a4c8865da6d2b6ea6d0b41876cca95e to your computer and use it in GitHub Desktop.
The democratic pizza

The democratic Pizza

The goal: let a group of people who don't know each other order the optimal pizza

Assumption: If an interactive tool is designed with this goal in mind, I predict the same tool will be immensely useful to solve many other problems.

The pizza must not be half-assed. It must achieve maximal satisfaction within the group.

The pizza will be ordered at the end of voting. No human input may be used to fine-tune the final order. The goal is to handle all edge cases in the formalized voting flow.

Maximal satisfaction will be hard to both define and achieve. But let's give it a shot.

Scenarios

Let's start with some concerns. Let's exaggerate a bit

  • Pricing vs. size: One large pizza might be cheaper than two small pizzas, even though they are the same amount of pizza
  • Dietary restrictions: Vegetarians, Vegans, Gluten concerns etc.
  • Topping preferences: Bob hates mushrooms, Alice thinks ham causes cancer
  • Topping combinations: Cindy will only allow pineapple if it's Hawaiian (i.e. combined with ham)
  • Budgets: Dan prefers if price is kept to a minimum (no more than 3 toppings)
  • Choosing a pizza place: Some prefer Dominos, some prefer the local pizzeria
  • How much pizza to order
  • How much to tip

How can all this be broken down into a protocol that can help guide the group through the decision making progress?

We know we can find a good-enough solution by simply conversing, but the goal here is to find a formalized methadology.

Breaking it down

Basic polling is the obvious answer. Let's see where it might fail:

1. The "least hated" might be better than "most loved"

We poll users first for how many toppings we want. Top answer is 4.
Next, we poll users for which toppings they want. The top 4 answers end up including "mushrooms", which although popular, turns out to be absolutely hated by 3 people out of 7.
This "hate" factor ends up getting missed by the poll, which showed a majority support for mushrooms by 4 people.
An alternative topping, green olives, only has the support of 3 people, but is not hated and acceptable by the remaining 4.
This is a scenario where a seemingly less popular option is actually a far better option.

2. It might be better to change strategies than have majority win by a small margin

Let's assume a situation where you have 2 vegetarians and 3 meat eaters.
If the pizza was vegetarian, the 3 meat eaters would be quite disappointed.
If it was a meat pizza, the vegetarians would simply have to not eat (or pick their toppings off)
A compromise might be to order two smaller pizzas, one meat one vegetarian. It may cost more this way, but solving this paradox may be worth the additional dollars.

3. Each person may not be invested equally in the pizza venture.

Alice thinks ham causes cancer.
The rest of the crew likes ham, and thinks Alice is being cray.
As per the "least hated option" method, the intial solution may be to just skip ham and use the next best option.
But Alice is also not very hungry and will probably just eat one slice. Could it be best if she was just ignored? Maybe she can just grab a slice with not much ham on it and deal with it.

4. Certain votes are only valid as combinations

Most of the group likes Hawaiian pizza. Pineapple becomes the second most popular topping. However the other popular toppings are Pepperoni, Mushroom and Olives.
The group knows that adding pineapple to this combination would be an abomination.
The tool must be able to take this into account, and present Pineapple only in combination with Ham and nothing else.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment