Back to Portfolio

⚑ AniRec AI β€” Case Study

Full-Stack AI Anime Recommender & Personal Tracking Library

Overview

AniRec AI is a full-stack web application that combines natural language AI recommendations with personal anime library management. Built with React, TypeScript, Node.js, and SQLite, it uses Google Gemini Pro for narrative-driven recommendations and Gemini Flash for fast metadata extraction.

GitHub Repository

🎯 Problem & Motivation

Standard anime search platforms rely on rigid genre tags. Finding recommendations based on subtle narrative themes, character arcs, or specific pacing is difficult. I wanted an AI assistant capable of understanding natural language preferences.

βš™οΈ Technical Constraints

External anime APIs (AniList, MyAnimeList, Kitsu) enforce strict rate limits and return disparate data formats. Querying large AI models for simple search parsing introduces unnecessary latency.

πŸ—οΈ Architecture & Dual-AI Pipeline

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ User Search β”‚ ────► β”‚ Gemini Flash Engine β”‚ ────► β”‚ API Normalizer β”‚ β”‚ Prompt β”‚ β”‚ (Fast Entity Parsing) β”‚ β”‚ (AniList / MAL) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ Recommendation β”‚ ◄──── β”‚ Gemini Pro Recommenderβ”‚ β—„β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ Output + Cards β”‚ β”‚ (Contextual Reasoning)β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

βš–οΈ Challenges & Trade-offs

Trade-off: Using two separate LLM models (Flash + Pro) increases backend pipeline coordination, but drastically improves UI responsiveness compared to routing all queries through a single large model.

πŸ’‘ Lessons Learned

1. Decoupling parsing from recommendation generation optimizes both speed and token cost.
2. Building a central normalization layer upfront prevents UI state bugs when aggregating external APIs.

πŸ“Œ Planned Improvements