indigo(10s)
Profile

ScoutFlix: Building a Personalized Recommendation App

A case study on creating a swipe-based movie and TV discovery platform with React Native, Supabase, and SageMaker that turns your taste into math

Author

Abhigyaan Jha

Posted on March 15, 2025

Project Overview

ScoutFlix is a swipe-based app that curates movie and TV recommendations just for you. Swipe left (unseen), right (seen), up (loved), or down (hated) to build a taste profile, and get personalized picks from a smart, evolving system. Think Tinder, but for your next binge-watch, where your vibe, not trends, drives the magic.

ScoutFlix Swipe Interface
ScoutFlix

What Makes ScoutFlix Different?

Unlike other apps like Taste (focused on social swipes) or Reelgood (designed for group picks), ScoutFlix is:

  • Solo-focused: It's all about your unique preferences
  • Deep-learning powered: Your taste becomes a mathematical fingerprint
  • Adaptively intelligent: The more you swipe, the smarter it gets

"Start with 50 diverse titles, end with a watchlist that feels like it read your mind."

Your Taste Encapsulated in Numbers

The magic of ScoutFlix lies in how it transforms your casual swipes into a mathematical representation of your taste:

01

The Math Behind the Magic

  • • Each swipe updates your taste profile in real-time
  • • Your preferences live as a 368-dimensional vector
  • • Cosine similarity finds your perfect matches
  • No words, just math
02

The Vector Fingerprint

  • • Each title gets its own "vibe code" vector
  • • Your profile vector starts empty, evolves with swipes
  • • Swipe up (love): +1 to your vector
  • • Swipe down (hate): -1 from your vector
  • Like tuning a guitar to your perfect sound

How ScoutFlix Scouts Your Perfect Hit

Finding your next favorite show is like finding a song with the same beat:

1

Compare your taste profile to candidate pool

2

Calculate cosine similarity (0-1 scale)

3

Closer to 1 = better match

4

Serve titles aligned with your taste

Technical Challenges

Creating ScoutFlix meant tackling some unique hurdles:

  • Building a taste profile from one-swipe inputs
  • Matching titles without storing millions of vectors
  • Balancing safe picks with fresh discoveries
  • Integrating real-time vector generation with TMDB
  • Keeping the UI snappy on mobile with Expo

We solved these with a lean candidate pool, smart algorithms, and seamless communication between components.

Architecture & Technology Stack

ScoutFlix runs on a modern, lightweight stack:

Front

Frontend

  • React Native with Expo
  • TypeScript
  • Tailwind CSS
  • Gesture handlers for swipes
Back

Backend & Model

  • Supabase for storage
  • SageMaker for MiniLM inference
  • TMDB API for title data
  • Multi-Armed Bandit (MAB) for reinforcement learning

Behind the Curtain

The data flows through three key components:

Step 1
TMDB API

Movie/TV data: plots, actors, genres

Step 2
SageMaker

MiniLM transforms text to 368D vectors

Step 3
Supabase

Stores profiles, history, and vectors

"Like a recipe book for your watchlist."

The flow: Frontend swipes → Supabase saves → SageMaker vectorizes → Supabase matches → Frontend displays.

Implementation Highlights

Swipe Handler

The core swipe mechanic captures user taste in one move:

Recommendation Engine

Two vectors power the system: Title Vectors (per title) and Profile Vector (your taste):

Not Everything, Just the Best

ScoutFlix doesn't waste your time with mediocre recommendations. Here's how we curate the perfect selection:

MAB

Multi-Armed Bandit

  • • Reinforcement learning algorithm that optimizes recommendations
  • • Balances exploitation (safe bets) vs. exploration (surprises)
  • • Reward function: +1 for likes, -1 for dislikes
  • • Continuously learns from your feedback
Pool

Candidate Pool Management

  • • Precomputed vectors for efficient matching
  • • Periodically refreshes with new titles
  • • Drops low-performing recommendations
  • • Mood tagging for faster learning

Results & Lessons Learned

ScoutFlix's prototype nailed key goals and taught us plenty:

95%
Swipe Accuracy
60%
Exploration Success
1.8s
Rec Load Time

Key Insights

What Worked Well

  • Tuning MAB exploration rate for discovery
  • Refreshing candidate pool to prevent staleness
  • Vector averaging for taste profile evolution
  • Gesture-based UI for intuitive interaction

Surprising Discoveries

  • Users loved the 60/40 mix of familiar and new
  • Mood tagging dramatically improved accuracy
  • Vector math outperformed traditional genre matching
  • One-swipe UI beat complex rating systems

Tuning the MAB's exploration rate and keeping the pool fresh were key wins. Users loved the mix of safe bets and surprises.

Conclusion

ScoutFlix showed us how to blend swipes, vectors, and RL into a slick discovery tool. Takeaways:

  • One-swipe UI beats complex forms
  • Candidate pools scale better than full DBs
  • MAB keeps recs dynamic and fun
  • Real-time vector updates are worth it

This approach could power any taste-driven app, music, books, you name it.

What's Next for ScoutFlix?

The journey doesn't end here. We're exploring:

  • Collaborative Filtering: Finding your taste twins and leveraging their discoveries
  • Temporal Vectors: Evolving taste profiles that adapt to your changing preferences over time
  • Mood Playlists: Specialized recommendations based on your current mood or viewing context

"Because finding your next favorite show shouldn't feel like work."