case://study-013
AI / ML
Project 013

Lumi

Lumi is a couple's movie recommendation system. Reads both partners' rating histories from Supabase, asks Gemini 2.5 to write smart category rows that account for what both have already seen, lets each partner veto a candidate from a Tonight's Pick stack, refreshes the whole feed at 05:00 UTC every day via Vercel cron. Once one partner rates a movie 4.5★+, it surfaces in the other's "things they loved" row.

Two-seat
Mode
05:00 UTC daily
Refresh
Read-only
License
AI / ML
Category
The Problem

What Wasn't Working

Most recommendation engines aim wide — they want a billion users in a content carousel, which is why one Ghibli movie gets you twelve Pixar suggestions. Couples want the smaller problem: two people, one couch, one shared evening.

The Solution

How I Fixed It

A two-seat app that reads both rating histories, asks Gemini to name 10 category rows accounting for what both have seen, and surfaces "things they loved you haven't seen" cross-feed. Spotify-Wrapped-style end-of-year recap turns the year of ratings into stories cards. Personal data env-gated so source is publishable read-only.

Stack

Technologies Used

Next.js 16
Supabase
Gemini 2.5
TMDB v4
Tailwind 4
Vercel Cron
Results

Key Outcomes

Two-seat gate pattern — only emails in AUTHORIZED_EMAILS can sign in
Vercel cron refreshes the joint feed at 05:00 UTC daily
Tonight's Pick Together — three candidates, each partner gets one veto
Wrapped-style end-of-year stories card view

Want something like this?

Let's build it. I ship fast and I ship clean.