PopChoice

Movie night, without the endless scroll

PopChoice helps solo watchers, couples, and groups choose a film for tonight. Tell it the mood, the audience, the hard avoids, and how adventurous you feel. It turns that context into a short list with one clear top pick.

Find My Movie

What it does

Reads the room

Fast Pick and Normal Match adapt to solo, duo, or group watching instead of treating every movie night the same.

Respects hard avoids

Mood, tone, discovery appetite, and dealbreakers shape the match before genre or popularity gets a vote.

Learns with feedback

Signed-in users can build movie memory, so watched, liked, and wrong-mood signals improve future results.

The process

01

Choose speed and audience

Start with Fast Pick or Normal Match, then choose whether the result is for you, a duo, or a group on the same device.

02

Share the mood and limits

Give PopChoice the current vibe, hard avoids, discovery appetite, and optional reference films so the match has real context.

03

AI blends sources

The matcher combines local cache, TMDB discovery, metadata enrichment, and signed-in movie memory when those signals are available.

04

You get a decision, not a wall

See the top pick, compare alternatives, share the result, ask for more picks, and teach PopChoice what worked for next time.

Builder note

PopChoice started as a Scrimba AI engineering course project, then grew into a real full-stack system for learning the parts tutorials often skip: vector search, background job pipelines, monorepo tooling, and containerized deployments.

This project's source code is available here.

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. You can start the quiz and get picks without signing up. An account adds saved history and movie memory, so feedback can improve later recommendations.

How does group mode work?

Everyone answers on the same device, then PopChoice looks for overlap and acceptable compromise across the group. Duo gets the same first-class treatment for two people.

Where do the movie candidates come from?

PopChoice starts with its local cache and can expand into TMDB-backed discovery when broader coverage is useful. Strong candidates are enriched and reranked before the final answer.

Why leave feedback after a result?

Feedback is not just a rating. Watched, liked, not-interested, and wrong-mood signals can shape future matches for signed-in users.

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?

A short quiz. 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