Inspiration

When trying to decide what movie to watch, I often look to critic reviews, but many times I end up disagreeing with them. As such, I’d love a more personalized platform that would allow me to determine which movies I should watch based on my watch history.

What it does

WatchLog is a platform that manages a users movie-watching experience. It enables users to maintain a database of movies, receives user feedback regarding movies they like or disliked, and recommends movies that the user will likely enjoy.

How I built it

WatchLog is a flask app connected to a MongoDB. Upon login, the server retrieves user information from the database and populates the Watched page. To add a movie, the user can enter the movie title, upon which the app uses the Online Movie Database (OMDb) API to search for the title, and gets additional information such as director, year, genre, and art. On the recommendations page, the app uses memory-based collaborative filtering to predict good movies for the user.

Challenges I ran into

Implementing collaborative filtering was challenging, and it was especially difficult to test without any existing users. I initially tried item-based CF, but the naive search space of all movies made the computation too intensive. I switched to memory-based CF, and used Pearson correlation to measure user similarity. I generated artificial user data to test, and after a few revisions, it ended up working.

Accomplishments that I'm proud of

Successfully implementing collaborative filtering was the most challenging part, but a lot of the front-end work was also painful.

What I learned

Lots of front-end design and working with a DB.

What's next for WatchLog

Improving the recommendation algorithm would be a logical next step, such as incorporating Bayesian nets, or adding additional data to make the recommendation algorithm more contextually aware.

Share this project:

Updates