All apps Β· 0 apps
shortlist
Docker app from shorlist's Repository
Overview
Readme
View on GitHubShortlist β¨
A private, personalized "Picked for You" row for every user on your Plex server.
[!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 diagnosticsbundle. 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 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=1to try it against your real server without writing a single change, until you're happy. - π¦ Homelab-native β one container,
/configvolume, dark UI, GHCR multi-arch, healthcheck, Unraid template.
Screenshots
![]() |
![]() |
| A ~10-minute setup wizard β connect Plex, pick users, go | Each person's row, and why each pick β "Because you watchedβ¦" |
![]() |
![]() |
| 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.
Requirements
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/stevezau/shortlist:latestRuntime arguments
- Web UI
http://[IP]:[PORT:5959]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Web UI port
- Target
- 5959
- Default
- 5959
- Value
- 5959
Shortlist config, database and logs
- Target
- /config
- Default
- /mnt/user/appdata/shortlist
- Value
- /mnt/user/appdata/shortlist
User ID
- Default
- 99
- Value
- 99
Group ID
- Default
- 100
- Value
- 100
Timezone
- Default
- Etc/UTC
- Value
- Etc/UTC



