- Home Screen Sections only works in the web client — useless on my Roku
- Suggester plugins just match genres, which gets repetitive fast
- External services like Trakt require sending your data out
LocalRecs takes a different approach. It builds TF-IDF embeddings from your library metadata (genres, actors, directors, tags, decades) and creates ~1200-dimension vectors for each item. Then it builds a taste profile from your watch history and ranks unwatched items by cosine similarity. The math is the same stuff used in search engines and basic recommender systems, nothing fancy, but it works surprisingly well. The trick to making it work everywhere (including dumb clients like Roku) is virtual libraries. The plugin creates .strm files pointing to your actual media, and you create Jellyfin libraries pointing to those directories. From the client's perspective, it's just another library with movies in it.
Technical details:
- Per-user personalization (each user gets their own taste profile)
- Favorites get 2x boost, rewatches 1.5x, with 365-day recency decay
- Optional decade similarity (finds content from similar eras)
- Handles 2000+ item libraries without issues
- All processing is local—nothing leaves your server
I'd love feedback, especially from folks with large libraries or unusual viewing patterns. The algorithm is pretty naive right now and there's definitely room to improve it.
edit: formatting