Cine-AI is a production-ready, full-stack Generative AI application that demonstrates how modern recommendation systems go beyond keywords using semantic search, vector databases, and large language models.
This project showcases end-to-end GenAI system designβfrom embedding pipelines and vector retrieval to RAG (Retrieval-Augmented Generation), where Google Gemini acts as an AI movie critic to generate explainable recommendations.
π― Built to highlight skills in: Full-Stack Development, AI/ML Integration, Vector Databases, System Design, and Cloud Deployment.
- Designed and deployed a semantic recommendation engine using real-world movie data
- Implemented a complete RAG pipeline with grounding, retrieval, and LLM reasoning
- Integrated Qdrant vector search for millisecond-level similarity matching
- Built a scalable FastAPI backend with async endpoints
- Developed a modern React UI focused on UX, animations, and responsiveness
- Deployed a cloud-native architecture using Vercel, Render, and managed AI services
- π§ Semantic Search β Search movies using natural language (e.g., "a mind-bending thriller about dreams" β Inception).
- π€ RAG-powered Explanations β AI-generated reasoning for every recommendation using Google Gemini.
- π Movie-to-Movie Similarity β Discover "soulmate" movies based on plot-level similarity.
- π₯ Real-time Trending β Fetches the top 10 trending movies globally from TMDB.
- π¨ Neon Glassmorphism UI β Modern dark-mode UI with smooth animations and responsive design.
- βοΈ Cloud Native β Easily deployable on Vercel, Render, Hugging Face Spaces, and Qdrant Cloud.
Cine-AI follows a microservices-based architecture with clear separation of concerns between frontend, backend, vector storage, and AI services.
graph LR
A[User / React Frontend] -->|JSON Requests| B[FastAPI Backend]
B -->|Vector Search| C[Qdrant Cloud]
B -->|Context + Prompt| D[Google Gemini LLM]
B -->|Metadata Fetch| E[TMDB API]
C -->|Top Matches| B
D -->|AI Explanation| B
B -->|Final Response| A
- Framework: React (Vite)
- Routing: React Router v6
- Styling: Pure CSS3 (Glassmorphism, Grid, Animations)
- Deployment: Vercel
- Framework: Python FastAPI
- Embedding Model:
all-MiniLM-L6-v2(Sentence Transformers) - Vector Database: Qdrant (Managed Cloud)
- LLM: Google Gemini 1.5 Flash
- Deployment: Render / Hugging Face Spaces
- Node.js
- Python 3.9+
- API keys for TMDB, Google Gemini, and Qdrant Cloud
cd movie-backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txtCreate a .env file:
TMDB_API_KEY=your_tmdb_key
GEMINI_API_KEY=your_gemini_key
QDRANT_URL=https://your-cluster.qdrant.tech
QDRANT_API_KEY=your_qdrant_keyRun the backend server:
uvicorn main:app --reloadIf starting with an empty Qdrant cluster, ingest movie embeddings:
python ingest.pycd client
# Install dependencies
npm install
# Start development server
npm run dev| Method | Endpoint | Description |
|---|---|---|
| POST | /recommend |
Semantic search with AI explanation |
| POST | /similar |
Find movies similar to a given title |
| GET | /trending |
Fetch top 10 trending movies from TMDB |
| GET | /health |
Health check endpoint |
π Frontend: https://cine-ai-vert.vercel.app/ βοΈ Backend API: https://jain-mayukh-movieback.hf.space
β οΈ Note: The backend may take a few seconds to wake up on first request due to free-tier hosting.
Cine-AI uses a Retrieval-Augmented Generation (RAG) pipeline to deliver both accurate and explainable movie recommendations.
- User input is converted into a dense vector using Sentence Transformers (
all-MiniLM-L6-v2). - This captures semantic meaning beyond keywords.
- The query vector is searched against movie plot embeddings stored in Qdrant Cloud.
- Top-K semantically similar movies are retrieved with similarity scores.
- Retrieved movie metadata (title, plot, genre, score) is compiled into a structured context.
- This context acts as grounded knowledge for the LLM.
- Context + user query are sent to Gemini 1.5 Flash.
- Gemini generates a human-like explanation justifying why each movie matches the request.
- The backend merges similarity scores, metadata, and AI explanations.
- A clean JSON response is sent to the frontend.
Cine-AI is designed for low-latency inference and horizontal scalability.
- Precomputed Embeddings: All movie plots are embedded offline to avoid runtime overhead.
- Fast Vector Search: Qdrant enables millisecond-level nearest-neighbor search.
- Lightweight LLM Calls: Gemini Flash is used for fast, cost-efficient reasoning.
- Async FastAPI: Non-blocking request handling for high concurrency.
-
Stateless Backend: Easily scalable across multiple instances.
-
Managed Vector DB: Qdrant Cloud auto-scales with dataset size.
-
Frontend CDN: Deployed on Vercel with global edge caching.
-
Future Enhancements:
- Redis caching for repeated queries
- Batch embedding updates
- User-personalized recommendation vectors
Add screenshots of the following views:
Contributions are welcome! π
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is distributed under the MIT License. See the LICENSE file for more information.
.png)
.png)
.png)
.png)
.png)