Back to projects

Bilingual AI decision product · Functional local prototype

PlayNext

A movie and series decision assistant that turns mood, time and streaming constraints into a small, explainable shortlist grounded in real catalogue data.

Local prototype · Production deployment is not published yet

PlayNext request screen with a mood prompt and editable viewing preferences
The request surface combines free text with explicit controls before recommendations are generated.

Problem

Finding more titles is easy; choosing one that fits the moment, time and available services is harder.

Target users

Viewers who want a small, trustworthy shortlist instead of another endless catalogue.

My contribution

Product strategy, UX, React frontend, API architecture, recommendation logic, AI boundaries and testing.

Technologies

React, TypeScript, Fastify, Zod, TMDB, OpenAI API, Vitest

01

The decision problem

The product narrows a high-choice catalogue using mood, runtime, content type, exclusions and Danish provider availability. The goal is a confident decision, not a longer recommendation feed.

Human control

Users can inspect and correct interpreted preferences before recommendations run.

Real catalogue evidence

TMDB metadata and provider availability remain the source of truth for every candidate.

02

Product flow and refinement

Free text becomes an editable preference summary. Deterministic filters create a valid shortlist, and users can reject, replace, request similar titles, edit preferences or restart.

Mobile PlayNext preference request screen

03

Architecture and AI boundaries

The React client, Fastify API and shared Zod schemas keep interface state, server secrets and validation separate. AI extracts preferences and may rerank only an allowlisted shortlist; it cannot invent titles or metadata.

  1. Viewer request

    Bounded text and explicit controls describe the current need.

  2. Preference extraction

    Structured AI output is validated and remains editable.

  3. Catalogue and filters

    TMDB data passes hard filters and inspectable scoring.

  4. Optional reranking

    AI can reorder only validated candidate IDs with grounded evidence.

  5. Explainable result

    The interface shows match reasons, compromises and provenance.

  6. Deterministic fallback

    Recommendations still work honestly when AI is unavailable.

04

Testing, limitations and reflection

The local project includes schema, API and React tests plus browser QA from 360 to 1440 pixels. Production deployment and external usability testing have not yet been completed.

Status: Automated and responsive QA completed · External usability testing is planned.

Planned test details

Objective and participants

Test with 3–5 streaming viewers whether the request, preference correction and recommendation refinement flow remains understandable.

Tasks

  1. Describe a viewing need and interpret the extracted preferences.
  2. Correct one preference before requesting recommendations.
  3. Reject one result and request a replacement.
  4. Explain why a recommendation matches and where it compromises.

Observe and measure

Record completion, critical errors, assistance, hesitation, wrong turns and confidence in the explanations.

Pending evidence

Usability findings and resulting product changes remain pending until external sessions are completed.

What worked well

Deterministic validation keeps the product useful and explainable even when AI is unavailable.

Biggest challenge

Balancing a simple decision flow with provider, runtime, genre and AI failure states.

What I would improve

Deploy the edge architecture, add observability and test the complete flow with real viewers.

Next project

StudyMate AI

AI study prototype · Product and technical UX