This studio was about taking human decisions and solving them using computer friendly algorithms. This was often counter-intuitive, making simple to solve problems into processes with several steps and variables. We wanted to make them thorough so they considered all factors, and we wanted to prompt the user for info with a simple and user-friendly website.
The issue we’ve tried to address is that it is very difficult to find restaurants to eat at when one has multiple or severe allergies. We decided to create a website that takes in a list of allergens to avoid, as well as cuisine types that the user prefers, and returns a list of restaurants in order of most to least likely to work. To do this it takes into account ingredients lists for individual dishes, as well as kitchen contaminations for more severe allergies. It also considers type of food and Yelp rating.
At the start of our brainstorming process, we looked at existing websites that try to help people with dietary restrictions find food. We also decided which data points we wanted to factor into in our decision. We then discussed priorities; for example, avoiding deadly allergens is more important than great customer service, so a restaurant’s rating should not be our top priority like on a site like Yelp. We skipped ahead after that to start the page layout so we could visualize the product before going into the fine details.
Then, we moved on to the algorithm. This was the hardest part, as we realized there were many more factors that we had not accounted for (ingredients lists do not necessarily account for synonyms or allergens, restaurants may introduce new ingredients so the customer should always call ahead). The proper way to represent the complex relationships between the huge number of ingredients used in food is with a semantic graph database, a huge web of ingredient names with relationships between different ingredients being categorized.
This would let our software know the difference between, for example, “yogurt shake” (contains dairy) and “coconut milk yogurt” (dairy-free). To simplify this process, we eventually decided to use a point based suggestion system. Our system searches for all user-submitted allergens and their synonyms in every meal for restaurants nearby and assigns the restaurant a point for each collision between a potential allergen and an ingredient on the menu. We then display the restaurants in order of most likely to least likely to work for the user.
We designed a simple input system for restaurants that could be sent to them en masse, allowing us to uptake and update our restaurant data more effectively than alternatives like AllergyEats that rely on users submitting data. This strategy of 100% user-submitted information works well for major chains like McDonalds, but fails to give users information for smaller restaurants. We didn’t have time to code this restaurant-facing interface, but we wrote a proof-of-concept for the restaurant ranking which is entirely functional. We also wanted to add options for different types of food, selectable with checkboxes. This would make our algorithm more complex, but we’ve included it in our mockups.