PopChoice

AI that gets your taste

Started as a Scrimba AI engineering course project. After finishing the course I kept building — turning it into a real full-stack system to learn the parts that tutorials skip: vector databases, background job pipelines, monorepo tooling, and containerized deployments. The movie recommendations are real.

This project's source code is available here.

What it does

PopChoice takes a 5-question taste quiz — favorite film, preferred era, current mood, tone, and a favorite actor — and transforms your answers into a vector embedding using the OpenAI API. That embedding is compared against a curated library of 400+ pre-analyzed films stored in PostgreSQL with the pgvector extension. If the local collection doesn't yield a high-quality match, the system automatically falls back to a broader search across the TMDb database. The closest matches surface as recommendations, each with a GPT-generated explanation of why it fits your specific taste profile. Genre is just one dimension; the system captures cinematographic style, narrative complexity, and emotional tone.

The process

01

You answer 5 quick questions

Tell us your favorite film (and optionally why you love it), whether you prefer classics or new releases, your current mood (pick multiple genres!), the tone you're after, and your favorite actor. It takes about 60 seconds.

02

We build your taste profile

Your answers are transformed into a rich taste profile that captures nuances beyond genres: cinematographic style, narrative complexity, and emotional tone.

03

AI searches our film database

Using AI, we find the films in our database closest to your taste profile. Every film has been pre-analyzed for tone, pacing, themes, and emotional resonance.

04

You get curated results

We surface your top match plus 5 additional great options, each with a personalized AI-written explanation of why it fits your taste.

Under the hood

Frontend

Next.js 16App Router and server components for streaming renders and full-stack TypeScript
React 19Concurrent rendering and Actions for a highly responsive quiz experience
XStateQuiz logic modeled as a formal state machine — predictable flow, zero if-spaghetti
Tailwind CSS 4Utility-first styling driven by CSS custom property design tokens

AI + Data

OpenAI text-embedding-3-largeTaste profile encoding into 3072-dimensional vectors for high-signal semantic search
gpt-5.4-miniFast, cost-effective generation of personalized recommendation explanations
PostgreSQLPrimary database for 400+ curated films, metadata, and vectors
pgvectorSelf-hosted vector similarity search with automatic fallback to TMDb for broader discovery

Infrastructure

RedisHigh-performance coordination layer for job queues and API rate limiting
BullMQBackground job processing for the movie data backfill and discovery pipeline
CoolifySelf-hosted deployment platform for the containerized web app, worker services, and databases
TurborepoMonorepo build system with high-performance caching and task orchestration
DockerContainerized deployment for consistent environments across all services

FAQ

Does PopChoice require an account?

No sign-up needed to use PopChoice — just answer the quiz and get your picks. You can optionally create a free account to save your results.

How does group mode work?

Each person answers the 5 questions on the same device. Just pass it around. PopChoice then finds films that score well across everyone's taste profiles.

How accurate are the recommendations?

The AI analyzes multiple film attributes (not just genre), which leads to surprisingly accurate taste matching. Movie taste is subjective, so we give you 6 options.

Where does the film data come from?

Our film database is curated from public film metadata, including ratings, runtime, director, genre tags, and thematic analysis performed by our AI pipeline.

All of this runs in the background. What you see: a 60-second quiz and a film worth watching.

Ready to find tonight's film?

60 seconds. 5 questions. The perfect movie.

Start the Quiz
The Movie Database logo

PopChoice uses the TMDB API but is not endorsed or certified by TMDB.

Visit The Movie Database