PopChoice Docs
Portfolio evidence

Recommendation Scenario

One reproducible deterministic PopChoice recommendation example.

Feedback-memory repeat avoidance

Shipped in development. This is the deterministic fixture taste-feedback-memory-repeat-avoidance. It exercises filtering and result shape without OpenAI, TMDB, Redis, PostgreSQL, or production writes. It is not a claim about live model quality. Source: fixture, runner, and scoring.

FieldReproducible value
Mode / audienceMemory-aware, hybrid-fast, solo viewer Riley
Taste signalsNo reference movie; mood Mystery + Heartwarming; era Balanced; tone Gentle; brief: “Need a softer reset after recent misses.”
Direct hard avoidsNone in the quiz answer for this fixture
Feedback-derived constraintsFamiliar Romcom is watched, Three-Hour Epic is wrong mood, and Gore Carnival is not interested
Candidate source strategyhybrid-fast: at least one local-cache and one tmdb-discover result are required
Bounded candidate setSix fixture candidates: Cozy Mystery, Familiar Romcom, Three-Hour Epic, Gore Carnival, Ensemble Comedy, Family Adventure
Selected filmPopChoice E2E Cozy Mystery
AlternativesPopChoice E2E Ensemble Comedy; PopChoice E2E Family Adventure
Explanation“For the solo viewer, Cozy Mystery respects feedback memory: it avoids watched titles, wrong mood signals, and rejected picks.”
Forbidden resultsFamiliar Romcom, Three-Hour Epic, and Gore Carnival
Passing thresholdAt least 90 points, three result movies, three metadata-complete candidates, and the required explanation terms

Run it with the default deterministic gate:

npm run eval:recommendations

The generated report is written to apps/web/test-results/recommendation-evals/report.json and is intentionally ignored by Git.

What the fixture proves

Shipped in development. The evaluation contract checks that the returned main title belongs to the allowed set, memory-derived excluded titles do not appear, source distribution meets the configured minimums, the explanation contains the expected concepts, and the result has enough alternatives and metadata.

What it does not prove

Anecdotal / unverified. It does not measure recommendation accuracy, real-user satisfaction, live model behavior, production latency, catalog coverage, or whether the same inputs would select the same real film from the current production catalog.

Controlled two-taste follow-up

Shipped in development — protocol ready, provider run not performed. The Controlled Duo quality protocol uses Amélie and Mad Max: Fury Road as contrasting references, four fixed real-film candidates, shared hard constraints, one optional ranking call, and a separate owner-review step. Its default command makes zero provider calls.

This follow-up is intentionally separate from the deterministic 32/32 report. Adding a prepared protocol must not inflate the CI count or imply that subjective quality has passed.

On this page