-
FilmCompass — your next great watch starts here.
-
Four ways to discover: your taste, your mood, actor and language, or Ask FilmCompass.
-
Qloo-powered recommendations based on favourite films, with IMDb ratings and match explanations.
-
Describe what you’re craving in natural language and refine your preferences through conversation.
-
Horror discoveries with posters, IMDb ratings, explanations, and watchlist controls.
-
Verified actor matches on mobile, filtered by language and genre.
-
A cinema-inspired mobile experience with a floating ticket and moving movie posters.
Inspiration
Finding something to watch can turn into endless scrolling. I wanted to build a movie discovery experience that understands what someone enjoys and explains why a recommendation fits.
FilmCompass is my first hackathon project, combining my love of movies with learning how to build a useful application.
What it does
FilmCompass offers four ways to discover movies:
- Your Taste: choose favourite films and get related recommendations grounded in Qloo’s taste graph.
- Your Mood: request a genre or mood, with optional runtime limits.
- Actor & Language: explore recorded cast credits and film-language information.
- Ask FilmCompass: describe what you want naturally, then refine your preferences through conversation.
Results show available posters, IMDb ratings, genres, runtimes, and match explanations. Users can save films to a browser watchlist and mark titles as watched to hide them from recommendations.
How I built it
The interface uses HTML, CSS, and JavaScript, with Node.js API functions hosted on Vercel.
Gemini interprets natural-language requests into structured preferences that the server validates. Qloo resolves favourite movies and generates related recommendations using its cultural taste graph. FilmCompass then applies verified filters and ranks the returned shortlist using available IMDb ratings from OMDb.
Wikidata supplies recorded actor filmographies and original-language information for the dedicated actor and language discovery paths. These results are labelled separately from Qloo taste recommendations.
Upstash Redis and browser caching reduce repeated movie-data requests.
Why Qloo matters
Qloo powers the core taste-based discovery experience. Rather than asking an LLM to invent a list of similar movies, FilmCompass retrieves related films from Qloo’s graph.
Gemini handles interpretation, Qloo supplies taste-grounded candidates, and verified metadata helps explain and refine the results.
Challenges I faced
Movie titles can be ambiguous, punctuation and accents vary, and provider metadata is sometimes missing. I added release-year choices, title suggestions, and clear unavailable states.
API quotas were another challenge. I introduced shared caching, lazy rating lookups, request limits, and quota backoff to reduce unnecessary calls.
Actor discovery also taught me that an affinity with an actor is different from a verified cast credit, so I built a separate filmography lookup.
What I learned
I learned how to connect APIs securely, validate AI output, handle incomplete data, and test integration boundaries. I also learned that a useful AI experience needs reliable tools and honest explanations alongside good design.
Accomplishments
I built and deployed a working public application with four discovery routes, conversational refinement, transparent recommendations, browser watchlists, and a cinema-inspired responsive interface.
What’s next
I want to expand regional and language coverage, improve discovery reliability, and explore optional watchlists that sync across devices.
Built With
- css3
- google-gemini
- html5
- javascript
- node.js
- omdb-api
- qloo
- upstash
- vercel
- wikidata
Log in or sign up for Devpost to join the conversation.