Product Flow Evidence
Source and test evidence for the current PopChoice recommendation flow.
Canonical behavior lives in Product Behavior Specs. This page keeps the portfolio-facing path short and points directly to source.
Current path
| Step | Status | Behavior | Primary evidence |
|---|---|---|---|
| Landing | Production verified | The public landing presents PopChoice and leads into the quiz. | Production, landing source, browser test |
| Match depth | Production verified | The first quiz decision is Fast Pick or Normal Match. | Quiz intro, state machine, capture |
| Audience | Production verified | The second decision is Solo, Duo, or Group. | Audience component, state-machine tests, capture |
| Same-device setup | Shipped in development | Solo uses one participant; Duo uses two; Group accepts three to six. Duo/Group pass the device between participants. | Quiz page, group setup, e2e matrix |
| Taste signals | Production verified for the Fast Pick intent/hard-avoid screens; remaining detail is Shipped in development | Normal Match asks optional reference movie, era, mood, tone, discovery appetite, hard avoids, and optional actor. Fast Pick asks intent, hard avoids, and discovery appetite. | step view model, Fast Pick steps, normal steps, hard-avoids capture |
| Submit/progress | Shipped in development | The quiz creates a persisted recommendation, moves to /results/{slug}, and renders polling/progress states while work is pending. | submission hook, create API, result client, controlled deterministic capture |
| Completed result | Shipped in development | A stable result URL renders the top pick, alternatives, explanation/evidence, and solo/Duo/Group-specific copy. | results view, result e2e, deterministic Duo result |
| Failed result | Shipped in development | A persisted terminal failure stops polling, explains that the recommendation did not finish, and starts a fresh quiz rather than retrying the same record. | result client, poll stop condition, controlled deterministic capture |
| Feedback/follow-up | Shipped in development | Eligible viewers can submit correction feedback. More like this records useful feedback; Try another records not-for-me feedback; both request the one allowed more-picks batch. | feedback panel, feedback API, more-picks API |
| Share/reload | Shipped in development | The result uses its current stable URL for Web Share or clipboard fallback and can reload from persisted data. | share implementation, result GET API, same deterministic result after reload |
The progress and failed screenshots use controlled status changes in the disposable E2E database. They prove the persisted read model and real result UI for those states; they do not prove worker timing, a real BullMQ retry, or a production failure.
Anonymous and account behavior
Shipped in development. Anonymous visitors can complete a recommendation
and reopen/share the stable result URL. Account-scoped history and durable movie
memory require sign-in. Result feedback is shown only when the fetched record
sets viewerCanRate; a shared viewer does not inherit the owner's rating
permission. Evidence: persistence projection,
movie-memory API,
auth/recommendation e2e.
Shipped same-device mode versus planned rooms
Shipped in development. Duo and Group share one device and answer sequentially. The persisted request contains an array of participant answers.
Planned. Room persistence, invite links, independent participant sessions, readiness state, QR invites, and projector/Kahoot-like presentation are tracked under issue #359 and child issues #467–#470. They must not be described as current group behavior.