## MoodReel 🎬

Stop scrolling. Start watching.

## 💡 Inspiration

We've all been there: thirty minutes of scrolling through endless thumbnails, only to close the app without watching anything. The problem isn't a lack of choice — it's a paralysis of it. Traditional recommendation engines ask you to think in genres ("Action," "Comedy," "Drama"), but that's not how humans actually feel.

Sometimes you don't know the genre you want — you just know the vibe.

That single insight inspired MoodReel. We wanted to build a recommender that meets you where you are emotionally: not a search box that demands keywords, but a companion that understands a feeling, a rainy window, the dim light of a room at 2 AM. The goal was to turn "I feel like…" into "…watch this" in a single, cinematic motion.

## 🛠️ What It Does

MoodReel is a next-generation AI recommendation engine that translates mood → movies:

  • Multimodal mood input — Type how you feel, or upload a photo of your environment. The AI reads the emotional state, lighting, and context of the image and text together.
  • Streaming recommendations — Six perfectly matched films appear in real time as the AI thinks.
  • Cinematic UI — 3D hardware-accelerated tilt cards, dynamic high-res posters, and seamless in-app YouTube trailers.
  • Vibe Tickets — Generate a beautiful, shareable card explaining why a movie fits your exact mood.

## 🏗️ How We Built It

The stack is intentionally lean and modern — React 19 + TypeScript + Vite, styled with Tailwind CSS v4.

## The Brain: Gemini 2.5 Flash Vision

The core of MoodReel is analyzeMoodAndGetMovies. Rather than embeddings or a trained classifier, we lean on Gemini 2.5 Flash's multimodal reasoning. We construct a prompt (optionally bundling a base64-encoded image as inlineData) and constrain the model with responseMimeType: "application/json" so it returns a strict, typed array:

  interface MovieRecommendation {
    title: string;
    why_it_matches_mood: string; // the emotional fit — the heart of the app
    tmdb_id: number;
    media_type: 'movie' | 'tv';
    // ...rating, director, genre, year
  }

Built With

Share this project:

Updates

Submission history