Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 Marquee

The tracker that actually understands your taste.

Marquee home — trending and search

Plenty of apps can log what you watch — Letterboxd for films, Serializd for TV, and a new wave of combined trackers (MiraTe, Refract, Matinee). Marquee's bet is different: tracking is table stakes, and the interesting problem is taste. Every AI feature here reasons from your diary and explains itself — recommendations cite the films of yours they connect to, the match score tells you honestly when an acclaimed show isn't for you, and nothing reaches the UI without being verified against TMDB first. Competitors either paywall AI search (Matinee Pro) or ship black-box recommendations; Marquee's taste engine is free and shows its work.

It also fixes the classic complaints about the incumbents:

Pain point What Marquee does
Letterboxd is movies-only; Serializd is TV-only One diary for both, backed by TMDB's full catalog
Letterboxd paywalls personal stats behind Pro Rich stats dashboards — hours watched, genres, decades, rating distribution — free
Trakt "tracks consumption but doesn't help you understand your taste" An AI taste engine: recommendations that explain their reasoning from your actual diary, a critic-written taste profile, and vibe search
TV Time shut down (July 2026) and deleted 26M users' history A rescue importer for the TV Time GDPR export CSV

Features

  • Diary — log films, shows, or individual seasons with half-star ratings, likes, rewatches, and reviews
  • Watchlist — for both movies and TV
  • Stats — pandas-powered analytics: hours watched (with honest estimation rules), rating distribution, top genres with average rating per genre, decade breakdown, 12-month activity, films-vs-TV split
  • AI recommendations — Claude reads your diary and recommends titles you haven't seen, with a one-sentence reason tied to your history; every suggestion is verified against TMDB before display so hallucinated titles never reach the UI
  • Taste profile — a 2-3 paragraph critic's read on your taste, plus taste tags, a blind spot, and a hot take
  • Vibe search — "that show where the timeline splits after a funeral" → the actual show
  • TV Time import — upload tracking-prod-records-v2.csv, get your history back

The taste engine, reading a real diary

AI taste profile — a critic's read with blind spot and hot take

Recommendations that cite the diary entries they reason from

Diary and stats

Diary — half-star ratings, likes, reviews

Stats — hours watched, rating distribution, genres, decades

Architecture

frontend/   React 18 + TypeScript + Vite + Tailwind CSS v4 + Recharts
backend/    FastAPI + SQLAlchemy 2 (SQLite) + pandas + httpx
            ├── TMDB API for catalog data (search, trending, details)
            └── Anthropic API (structured outputs) for the AI taste engine

Design decisions worth noting:

  • AI outputs are structured and verified. Recommendations use Anthropic structured outputs (messages.parse with Pydantic schemas), then every title is resolved against TMDB search with bounded concurrency (asyncio.Semaphore). The model proposes; TMDB confirms.
  • Media caching. TMDB titles are cached locally on first touch (unique on tmdb_id + media_type), so the diary, stats, and AI layers never re-fetch metadata.
  • Honest stats. Hours-watched estimation rules are documented in backend/app/services/stats.py — exact runtimes when known, conservative estimates when not.
  • Tolerant CSV parsing. The TV Time importer detects columns by name (export formats varied over the years), groups episode rows per show, and normalizes 10-point ratings to half-stars.

Running it

Backend

cd backend
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env   # add your TMDB_API_KEY and ANTHROPIC_API_KEY
.venv/bin/uvicorn app.main:app --port 8000

Frontend

cd frontend
npm install
npm run dev            # http://localhost:5173 (proxies /api to :8000)

Keys: TMDB is free at themoviedb.org/settings/api; Anthropic at console.anthropic.com. The app runs without them — catalog and AI features surface a friendly setup message until configured.

Roadmap

  • Social layer: follows, activity feed, shared lists
  • Episode-level TV tracking with progress bars
  • Streaming availability ("where can I watch this?") via TMDB watch providers
  • Semantic search over your own reviews with embeddings
  • Deploy: Postgres + Fly.io/Render (backend), Vercel (frontend)

About

Movies + TV tracker with an AI taste engine — recommendations cite your diary, honest match scores, vibe search, and a TV Time rescue importer. React + FastAPI + Claude + TMDB.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages