shortlist

shortlist

Docker app from shorlist's Repository

Overview

A private, personalized "Picked for You" row for every user on your Plex server. Each user gets a personal collection row built automatically from their own watch history β€” visible only to them, never to anyone else. Optional AI curation (Claude / OpenAI / Gemini / local Ollama) explains each pick with a "Because you watched X", or run it with no AI at all. Only ever recommends titles already in your library, and can optionally ask Radarr/Sonarr for the ones you're missing. Each row is a labeled collection excluded on every other account's share β€” delivered hidden and only promoted once those exclusions are in place β€” with a fully reversible uninstall that restores your share filters from a snapshot. NOTE: this is a public beta; please report issues on GitHub.

Shortlist ✨

A private, personalized "Picked for You" row for every user on your Plex server.

CI Coverage Latest release Stars Forks Open issues Contributors License: MIT AI-Assisted

[!IMPORTANT] Shortlist is a brand-new app in public beta. It works and it's running in production, but you may hit rough edges. Please report bugs β€” open an issue with what happened and your Settings β†’ System β†’ Copy diagnostics bundle. Thank you for helping test it. πŸ™

The problem: "what should I watch next?"

Everyone on your Plex server faces the same blank-screen problem β€” a huge library and no idea what to put on. Plex's built-in rows are the same for everyone and ignore what you've actually watched.

Shortlist fixes that, per person. For each user it looks at their own watch history and builds a personalized collection β€” "Picked for You" β€” of things from your library they haven't seen but probably want to, and puts it on their Plex home screen. It's private: each person sees only their own row, nobody else's. It refreshes automatically. It turns your library into something everyone can actually discover from.

A "TV Shows Picked for You" row on Plex Home

A live "Picked for You" row on Plex Home β€” private to that user, built from their watch history.

Why this couldn't exist before 2026

Per-user private collections were impossible until Plex fixed label restrictions on Home/Recommended (v1.43.1) and Related hubs (v1.43.2). Shortlist is built on that fix: each row is a labeled collection excluded on every other account's share, so only its owner ever sees it.

Features

Personalized discovery

  • πŸ‘€ A private row for every user β€” built from their watch history, visible only to them. One container serves your whole server.
  • 🧠 Smart picks, no hallucinations β€” an optional LLM (Claude / GPT / Gemini / local Ollama) curates and explains the picks, but only ever from titles verified to exist in your library. Works with zero AI too (heuristic mode) β€” no keys required.
  • 🌐 Finds what to watch next from everywhere β€” pools candidates from TMDB, Trakt, your own library, and a live web search for current, well-reviewed titles (via the curator's own web search or an Exa key).
  • πŸ’¬ Explains itself β€” every pick says "Because you watched X".
  • πŸ“š Watches whole shows, not episodes β€” a 20-episode binge counts as one show, and it looks back through your full history so both movies and TV shape the picks.

Make it yours

  • 🎞️ Multiple rows per person + shared rows β€” e.g. a personal row, a "New this week" shared row, per-library rows β€” each with its own sources, size, libraries, curation style, and audience.
  • πŸ—“οΈ Freshness you control β€” rows stay stable and refresh on a cadence you set (nightly β†’ fortnightly), so people aren't shown a totally reshuffled row every day.
  • πŸ“ Row placement β€” choose which Plex shelf each row lands on (Home, the library's Recommended tab, or both) and where it sits, per row.
  • 🎨 Custom row posters (optional) β€” upload artwork or generate it from text, reusing your AI key.

Grow your library

  • πŸ“₯ Fills its own gaps (optional) β€” when a great pick isn't in your library, Shortlist can ask Radarr/Sonarr to grab it. Off by default and cautious: the strongest picks auto-send (a few a night); the rest wait in a Requests inbox for one-click approval.

Trust & safety

  • πŸ”’ Private by design β€” share filters are snapshotted before the first change and fully restored on uninstall; rows are delivered hidden and only revealed once the exclusions exist.
  • πŸ“Š Know if it's working β€” a dashboard tracks what was delivered versus what people actually watched (hit rate), per user and per row.
  • 🧹 Kometa-friendly β€” never touches collections it didn't create.
  • ↩️ Provable uninstall β€” one flow restores your server exactly as Shortlist found it.
  • πŸ§ͺ Safe mode β€” set SHORTLIST_DRY_RUN=1 to try it against your real server without writing a single change, until you're happy.
  • πŸ“¦ Homelab-native β€” one container, /config volume, dark UI, GHCR multi-arch, healthcheck, Unraid template.

Screenshots

Setup wizard A user's picks and why
A ~10-minute setup wizard β€” connect Plex, pick users, go Each person's row, and why each pick β€” "Because you watched…"
A run in progress Settings & integrations
Watch every run β€” history β†’ candidates β†’ curate β†’ deliver Connects to what you run β€” Tautulli, Radarr/Sonarr, Trakt, LLMs

App screenshots use placeholder titles (a test library); the Plex row above is a real server.

Quick start

With Docker Compose:

mkdir shortlist && cd shortlist
curl -fsSLO https://raw.githubusercontent.com/stevezau/shortlist/master/docker-compose.example.yml
mv docker-compose.example.yml docker-compose.yml
docker compose up -d

Or with docker run:

docker run -d --name shortlist \
  -p 5959:5959 \
  -e TZ=Etc/UTC \
  -e PUID=1000 -e PGID=1000 \
  -v /path/to/shortlist/config:/config \
  --restart unless-stopped \
  ghcr.io/stevezau/shortlist:latest

Then open http://your-host:5959 and follow the setup wizard β€” it connects your Plex account, picks your server, and walks you to your first rows (about 10 minutes).

πŸ’‘ Want to try it without touching your server first? Add -e SHORTLIST_DRY_RUN=1 β€” Shortlist will show you exactly what it would do and write nothing to Plex.

Requirements: PMS β‰₯ 1.43.2.10687 Β· Plex Pass on the admin account Β· a free TMDB key. Optional: Tautulli, an LLM key. Details in Getting started.

Documentation

Getting started Install, wizard, first run
Guides UI tour, schedules, troubleshooting
Reference Settings, API, env vars
FAQ Privacy model, Kometa, uninstall

License

MIT Β© Steven Adams

Media gallery

Install Shortlist on Unraid in a few clicks.

Find Shortlist in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Shortlist Review the template variables and paths Click Install

Requirements

Plex Media Server 1.43.2.10687 or newer, Plex Pass on the admin account, and a free TMDB API key. Tautulli and an LLM API key are optional.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/stevezau/shortlist:latest
Last Updated2026-07-21
First Seen2026-07-21

Runtime arguments

Web UI
http://[IP]:[PORT:5959]
Network
bridge
Shell
sh
Privileged
false

Template configuration

WebUI PortPorttcp

Web UI port

Target
5959
Default
5959
Value
5959
ConfigPathrw

Shortlist config, database and logs

Target
/config
Default
/mnt/user/appdata/shortlist
Value
/mnt/user/appdata/shortlist
PUIDVariable

User ID

Default
99
Value
99
PGIDVariable

Group ID

Default
100
Value
100
TZVariable

Timezone

Default
Etc/UTC
Value
Etc/UTC