The RecipeRecommender is a system that gives personalized recipe recommendations and was developed by Per Starke in the scope of his Bachelor Thesis in order to find out which recommendation algorithms work best in the context of recipe recommendations
Value Proposition
The system has the main purpose of being used for the study of the thesis to collect the data needed to find out how good different recommendation algorithms work.
Additionally, it offers a platform for individuals, athletes and nutrition coaches to get personalized recipe recommendations that optionally match required macronutrients.
Key Stakeholders
- Researches, that use the system to collect data and evaluate recommendation algorithms
- Users, that want to get personalized recipe recommendations
- Nutrition coaches, that use the system to get personalized recipe recommendations for their clients
- Raters, people who helped with getting initial ratings for all recipes to provide a basis for making recommendations
Core functions
- Recipes from the underlying recipe database can be displayed.
- Users can rate these recipes.
- Two different recommendation algorithms (a collaborative filtering ItemKNN algorithm and a content-based algorithm) are used to make personalized recipe recommendations.
- Ratings for recommended recipes are collected for evaluation / answering the research question.
Quality Requirements
- The system has a good user experience
- The system can be used on different devices
- The development effort is adequate for the scope of a Bachelor Thesis
- The recipe database is large and diverse enough to make good recipe recommendations for users with various different tastes
Business context
Neighbor | Description |
---|---|
Spoonacular Food API | A food API used to create the recipe database. |
Rater | Gives initial ratings for recipes to create a sufficiently large rating database before making recommendations. |
User | Uses the ‘Recipe Recommender’ to get personalized recipe recommendations. |
Coach | Can access user accounts that he/she manages and give ratings and get recommendations in the user’s name. |
Researcher | Views and evaluates the research data that can be gained with the ‘Recipe Recommender’. |
Core Decisions
- Using a public GitHub repository for the development and the collaboration with the thesis supervisor, using GitHub Issues and a Kanban-board for a good overview
- Using an efficient tech-stack
- Using the Spoonacular API for creating the recipe database
- Manuel deployment of the system to the server it runs on
- Using csv- and json-files instead of having a relational database
- Not having any automated tests
Components / Modules
Building block | Description |
---|---|
Recipe Collector | Creates a recipe database using the Spoonacular API. |
Similarity Calculator | Calculates the similarity between recipes. |
Initial Rating Collector | Allows raters to give initial ratings to recipes to have a sufficiently large rating database before making recommendations. Contains a graphical user interface (GUI). |
User & Coach App | The piece of the software that users and coaches use, makes personalized recipe recommendations. Contains a GUI. |
RatedRec Writer | Writes the ratings that are needed to answer the research question into a file. |
Ratings | A CSV file containing all given ratings for recipes. |
Recipes | Several CSV and JSON files containing recipe information and recipe similarities. |
Rated Recommendations | The ratings and corresponding information needed to answer the research question. |
Technologies
Python and additional libraries:
CSV and JSON files as data storage