Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

mariia-tt/PickyEater

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Picky Eater

A personalized recipe recommendation web app. It learns your taste from ratings, knows what's in your fridge, and respects your dietary restrictions.

Main view


What it does

  • Personalized recommendations — the more recipes you rate, the better it gets
  • Fridge-aware — tell it what ingredients you have and it prioritizes recipes you can actually make
  • Dietary filters — filter by vegan, gluten-free, and other diet labels
  • Search — keyword search and semantic (meaning-based) search powered by sentence embeddings
  • Cold-start support — works even for brand new users by falling back to popular recipes

Recipe modal


How it works

Recommendations go through three stages:

  1. Retrieval — a Two-Tower neural network scores all recipes against the user's taste profile and returns the top 100 candidates. New users fall back to a popularity ranking based on Bayesian average rating.

  2. Ranking — a LightGBM model re-scores the candidates using features like nutritional fit, fridge overlap, and retrieval score.

  3. Diversification — Maximal Marginal Relevance (MMR) picks the final results, balancing relevance with variety so you don't get ten pasta dishes in a row.


For a full walkthrough of the data pipeline, model training, and evaluation see notebooks/notebook-picky-eater.ipynb.


How to run

1. Install dependencies

uv sync

2. Add your artifacts

The app expects trained model files in an artifacts/ folder at the project root. This folder is not included in the repo (it's too large). Train the models using the notebooks in notebooks/ or get the artifacts separately.

3. Start the server

uv run uvicorn app.main:app --reload

Then open http://localhost:8000 in your browser.


Made for food lovers, picky eaters, and everyone in between :)

About

Recipe recommender using Two-Tower retrieval, LightGBM ranking, and MMR diversification

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.