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
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.

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:
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
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:
Compare your taste profile to candidate pool
Calculate cosine similarity (0-1 scale)
Closer to 1 = better match
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:
Frontend
- React Native with Expo
- TypeScript
- Tailwind CSS
- Gesture handlers for swipes
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:
Movie/TV data: plots, actors, genres
MiniLM transforms text to 368D vectors
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:
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
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:
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."