Abstract
Streaming platforms keep adding more titles every month, and at some point that stops being a good thing. Scroll through any app for ten minutes and you'll see what we mean — rows and rows of posters, half of which mean nothing to you, and no real sense of why any particular movie showed up there. Most search bars are still just keyword matchers underneath, so they're fine if you already know the exact title you want, but pretty useless if what you actually want is "something like the last movie I watched." That's the gap we tried to close with FilmIQ Studio Pro. Instead of matching words, we use Sentence-BERT to turn each movie's overview, genres, cast, director and keywords into one dense vector that captures what the movie is actually about, and then a K-Nearest Neighbors model finds the closest movies to whatever you pick, using cosine similarity. There's no need for ratings history or past clicks — the recommendation is built purely from the movie's own content. Around that core engine we added a few things that made the app genuinely nicer to use day-to-day: mood-based browsing across six moods, a "Surprise Me" button for when you can't decide, a watchlist that persists for the session, and an analytics tab built with Plotly so you can poke around the dataset itself. Everything runs in Python — Streamlit for the UI, Pandas and Scikit-learn underneath, Sentence Transformers for the embeddings, and the TMDB API for poster art. What we ended up with is proof that you don't need a mountain of user data to make recommendations feel personal — sometimes the content itself is enough.
References
- TMDB 5000 Movie Dataset. [Online]. Available: https://www.kaggle.com/datasets/tmdb/tmdb-movie-metadata
- N. Reimers and I. Gurevych, "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks," in Proceedings of EMNLP-IJCNLP, 2019. [Online]. Available: https://arxiv.org/abs/1908.10084
- F. Pedregosa et al., "Scikit-learn: Machine Learning in Python," Journal of Machine Learning Research, vol. 12, pp. 2825-2830, 2011. [Online]. Available: https://jmlr.org/papers/v12/pedregosa11a.html
- Streamlit Documentation. [Online]. Available: https://docs.streamlit.io
- Plotly Documentation. [Online]. Available: https://plotly.com/python/
- The Movie Database (TMDB) API Documentation. [Online]. Available: https://developer.themoviedb.org/docs
- Sentence Transformers Documentation. [Online]. Available: https://www.sbert.net
- Python Software Foundation, Python Documentation. [Online]. Available: https://docs.python.org




