Inspiration

Over the summer, I was searching for a Malayalam thriller to watch, but the recommendations from streaming services were either movies I had already seen or lacked compelling stories. Even Google’s suggestions weren’t quite what I was looking for in terms of plot. This experience inspired us to build a movie recommender system that could provide more personalized and relevant suggestions.

What It Does

Our app uses the TiDB vector database to store the plots of numerous movies. When a user provides a prompt, the app searches the vector database to find the closest matches. To avoid recommending movies the user has already watched, we store the user's watch history in a SQL database. The recommendations are personalized based on the user's language and genre preferences, as well as their affinity for specific sample movies.

How We Built It

We developed the backend using Python and Flask, while the frontend was created using HTML and CSS. For data storage, we utilized the TiDB Vector Database and a SQL database. We also integrated Cinemagoer, an open-source Python library, to access movie data.

Challenges We Ran Into

Getting up to speed with TiDB databases was initially challenging. Toward the end of development, ensuring seamless communication between the frontend, backend, and database without any errors proved to be a significant hurdle.

Accomplishments That We’re Proud Of

We were pleasantly surprised by the accuracy of the movie recommendations. The system generated highly tailored suggestions that aligned with our interests, helping us discover many new movies during testing.

What We Learned

We gained experience with new database technologies, explored vector search, and learned about containerization and deployment using Docker on Google Cloud.

What’s Next for AiMo

Our next step is to expand our movie database with data from popular providers like IMDb. A long-term goal is to partner with streaming services so users can watch recommended movies directly on our platform. This would not only enhance recommendation accuracy but also provide a seamless viewing experience.

Built With

Share this project:

Updates