Movie Recommendation Website
A Python-based collaborative filtering engine that scrapes Letterboxd ratings to generate personalized movie recommendations using SVD.
Learn moreMovie Recommendation Website
Overview
For the Fall 2024 semester Loyola's AI Club completed a Python-based movie recommendation system that scrapes user movie ratings from Letterboxd and generates personalized movie recommendations using collaborative filtering techniques.
My Role
As president of the club and leader of the Model group I was responsible for overseeing the development and implementation of the recommendation algorithms, coordinating data collection efforts, and ensuring the integration of the model with the web application as well as coordinating and collaboration between different teams for my role as president.
Tech Stack
- Python
- Flask
- PostgreSQL
- scikit-learn
- TailwindCSS
- Heroku
Model
The recommendation pipeline takes a Letterboxd username, scrapes the user’s movie ratings, and combines them with a large global ratings dataset. A collaborative filtering model (SVD or Baseline using scikit-surprise) is trained on the merged data to predict ratings for movies the user hasn’t seen. Candidates are filtered using a configurable popularity/obscurity threshold, then ranked to return top-N recommendations.
In addition, a content-based system uses TF-IDF and cosine similarity on movie metadata (genres, languages, countries) to surface similar films.
Application
A full-stack Flask web application with server-side rendering using Jinja2. The UI is styled with TailwindCSS and enhanced with vanilla JavaScript. PostgreSQL and SQLAlchemy manage users, movies, ratings, and watchlists, with Flask-Login handling authentication and sessions. Cloudinary is used for user profile image storage. The app is production-ready and deployed using Gunicorn in a Heroku-style environment.