Demo link

link

Inspiration

Most people want to be healthier. One of the most important and effective ways to improve your physical health is through your diet. However there is one issue with diets, they are boring and feel restrictive. A classic example is a gym goer eating chicken broccoli and rice everyday. I'm sure most people don't love this meal plan everyday, yet people still choose to torture themselves, why? It's because of the macronutrients packed in that meal. Surely there is more than one solution to meat your macro nutrient goals. But not everyone has time to do endless research, or go out by 10 cook books and parse them. Can we make this process of finding new and exciting ways to making eating, cooking, and staying healthy fun.

What it does

Input a list of macronutrient requirements, and the application will generate a meal plan for the day that consists 3 recipes that you will hopefully like. Don't like the meal plans, that's fine, click a button and you can get another solution instantly. Our smart algorithm will learn your preferences, and give you a better meal plan after you rate.

How we built it

Our web application consists of three services: a React client service, a backend service that generates and stores the users' preferences, meal plans, and recipes, and a PyTorch ML ranking service that uses those preferences to reorder the users' meal plan to recommend.

Challenges we ran into

Since we did not have to establish a robust logging and deployment, we lost some time trying to debug obscure errors, and had difficulty deploying our services to the cloud and other computers. We also had to manually input some base recommendations rather than an initial survey upon registration that asks what your preferences are to address the cold start problem.

Accomplishments that we're proud of

Creating a running and working baseline example of how the recommendation/curation engine would work. Our user interface is seamless.

What we learned

It is a lot better to take care of yourself, and do work well-rested, rather than try and work as long as possible.

What's next for Macro Meal Planner

For the client service: Add a filter and restrictions section which will filter out recipes with certain ingredients or allergens. For the backend meal plan generation service: Currently, we are using randomized approximations to generate meal plans with 3 recipes that roughly match the users' dietary requirements. This is because the meal plan generation problem is NP-complete, which can be proven by reducing it to the bin packing problem. We could use multi-threading to compute more approximations to get less error, and also run the recommendation faster. Secondly, cacheing meal plans for specific dietary requirements using locality sensitive hashing will help greatly. More users nutritional requirements will be similar, and by caching, number of computations will decrease greatly. For the ML recommendation service: Creating processing where the recommendation system is retrained every time delta when the user-food interaction matrix expands in the numbers of rows (meaning more users join the application, expands in the number of columns (meaning more recipes are added to the application recipe database). So some sort of automated pipeline. Finishing and connecting the api endpoints to front end that allow us to expand the user-food interaction matrix (The logic for this is already written, just not fully integrated). Address the cold start issue by implementing the "new user survey" solution. Picking better tools/frameworks for the implemetation. For example, using pinecone as a db to store users or food vectors and/or embeddings. Making a more cool UI.

Share this project:

Updates