Independent product case · live MVP

From random picker to taste-aware discovery.

Cine.pick started as a weird little movie randomizer. Fun once, not enough to come back to. I rebuilt it into a mood-first discovery MVP with two paths: quick help when you are tired, and taste profiling when you want to understand what you actually like.

This is an independent project, not a commercial product. I use it to show product thinking, interaction design, visual craft, front-end implementation, and where I draw the line between what shipped and what still needs validation.

Product framing Consumer UX Mobile-first flows Design system AI-assisted build Live MVP
6weeksrebuild sprint
54filmscurated database
2entry modesdifferent user states
5interviewsdirectional research
LiveMVPnot just Figma
Product walkthrough

First, see the loop.

Mood input → quick recommendation → Movie DNA → taste profile.

Two onboarding modes↗ expand
01 / Entry

Two modes, not one archive

New users choose quick relief or taste-building.

Discover path↗ expand
02 / Quick help

No brain cells tonight

Randomizer and short test for decision fatigue.

CineMatch swiping↗ expand
03 / Cold start

Analyze my DNA

Swipe films to build taste without a long form.

Movie DNA profile↗ expand
04 / Trust

Movie DNA

Explain why the recommendation fits.

Guest DNA teaser↗ expand
05 / Conversion

Value before sign-up

The guest sees enough DNA to understand the reward.

Original idea

A randomizer with attitude

The early visual direction was loud, acid, almost Spotify-ish. It solved one tiny moment: “just give me something”.

01Pick a number of films
02Get random results
03Maybe watch one, maybe leave
Early 2023 version of Cine.pick randomizer homepage
Early 2023 version. Visually loud and fun, but still a one-step tool with no memory, no onboarding, and no return loop.
What I changed

From one-off fun to a product loop

The better question was not “can I randomize films?” It was “can the product learn enough about taste to make the next choice easier?”

The tired watcher

“Please decide for me.”

Low energy, no filters, no scrolling. Needs a result fast and a short reason to trust it.

The visual curator

“Show me what my taste says.”

Wants aesthetic discovery, taste patterns, deep search, and a profile that feels personal.

What I wanted to learn

Was “random” actually helpful?

  • Did random choice feel like relief or a gimmick?
  • When did users want fast help versus deeper exploration?
  • Did people need an explanation before trusting a recommendation?
What I heard

People had different decision energy.

  • Some wanted the product to decide quickly.
  • Some wanted to build a taste profile and understand patterns.
  • “Why this film?” mattered more than another beautiful card.
How I used it

I changed structure, not decoration.

  • Archive-first onboarding became two entry modes.
  • Movie DNA became the trust layer.
  • Missing data states became part of the MVP instead of a later polish task.

Honest limit: 5 interviews is discovery-phase scope, not validation scope. This helped shape a coherent MVP, but it does not prove retention, recommendation accuracy, market fit or monetization. Before shipping this as a real product, I would run a 15–20 participant task-based round around the bifurcated onboarding, recommendation trust, and guest-to-registration moment.

Old onboarding archive path
Before

Explore the Archive

A library-first CTA duplicated the top navigation and did not solve cold start.

New onboarding modes
After

Analyze my DNA / No brain cells tonight

The onboarding now asks what kind of help the user needs: build taste or get a quick recommendation.

Quick relief

The Void decides

For tired users, the product should reduce choices instead of asking for more input.

Short test

Enough signal, not a quiz maze

A few questions can create a more interesting result without becoming the whole product.

CineMatch swiping
Taste building

Analyze my DNA

Swiping solves cold start faster than asking a new user to rebuild their whole film history.

Updated entry modes

Split the entry by user state

SignalPeople arrived with different energy: some wanted exploration, some wanted relief.
DecisionStop treating every new user as someone ready to browse.
ChangeTwo CTAs instead of one archive path.
DNA teaser after

Made the DNA teaser legible

SignalThe old teaser looked atmospheric but did not explain why sign-up mattered.
DecisionShow value before asking for commitment.
ChangeClearer profile preview, demo link, and visible taste reward.
Deep dive after

Designed for missing content

SignalA small database means some film pages will not have rich stills or deep dive data.
DecisionDo not let thin data look like a broken product.
ChangeEmpty states and same-vibe collections keep the page useful.
IntentMood, tiredness, curiosity, or a specific aesthetic craving.
SignalRandomizer choice, short test answer, swipe, like, dislike, watchlist.
ExplanationMovie DNA shows themes, tone, pace, and why the match makes sense.
MemoryThe product gets better as the user reacts, saves, or corrects tags.

I did not build a social review feed.

Open reviews would add noise and moderation debt. If Cine.pick ever becomes social, I would start with structured reactions: agree/disagree with vibe tags, suggest a tag from a controlled list, and taste compatibility with friends.

I did not make “where to watch” the main point.

The product is about discovery and taste, not only consumption. Streaming links can help, but they should not flatten the experience into a utility page.

I kept the editorial feel on purpose.

The dark, cinematic UI is not just trend styling. It supports the idea of a niche film journal with product logic underneath.

Empty gallery state when film stills are not available
implemented

No film stills yet

The gallery does not pretend data exists. It says stills are coming and keeps the layout calm.

Fallback content when deep dive data is not available
implemented pattern

No deep dive data

Instead of leaving the editorial section empty, the page can point to films with a similar vibe.

melancholic
agreenot quite
next

Tag feedback

Agree / disagree with a mood tag would help the database learn without opening the door to messy open-ended UGC.

AI helped with
01

Implementation scaffoldingPHP, JS, CSS structure and small interaction states.

02

Debugging and edge casesLayout issues, empty states, small database logic.

03

Content and tag explorationDrafting possible moods, vibe tags, and film metadata patterns.

I owned
01

Problem framingFrom random result to taste-aware discovery.

02

Interaction modelTwo entry modes, Movie DNA, cold start, and scope cuts.

03

Final judgmentVisual system, QA, what to ship, and what not to claim yet.

What shipped

  • Live responsive MVP
  • Two onboarding paths
  • Randomizer and short mood test
  • CineMatch swipe flow
  • Movie DNA profile
  • Edge states for missing content

What I would measure next

  • Time to first useful recommendation
  • Onboarding comprehension
  • Perceived fit of the result
  • Save / watch intent
  • Guest-to-registration intent
  • Return sessions

What I would not claim yet

  • Market fit
  • Recommendation accuracy at scale
  • Retention
  • Monetization
  • Social behavior
  • Large catalogue quality
Reflection

The useful move was not making the app smarter. It was making the first decision smaller.

What this case says about my work

I like products with a strong mood, but I do not want the mood to hide weak logic. This case helped me practice cutting the cute parts, keeping the useful parts, and showing the limits clearly.

The next version would need better recommendation data, a cleaner DNA model, and a proper validation study. I know that. That is the point.