YouTube Outlier Lab
A breakout is only a breakout against itself.
Raw view counts tell you who is big. They cannot tell you what is working, because a 10K subscriber channel and a 10M subscriber channel are not on the same scale and never will be.
So every video here is divided by the median of the videos that same channel published nearest to it in time. Normalising against the channel makes the two comparable. Normalising against temporal neighbours rather than an all-time median stops an old upload from reading as a breakout purely for having had longer to accrue.

The product
Two stages, two different assets.
YouTube long-form is a two stage funnel, and each stage is owned by a different thing. Impression to click is thumbnail and title. Click to retention is the spoken hook. Packaging decides whether a video becomes an outlier; the hook decides whether it holds, and because ranking runs on watch time, a high click rate with weak retention gets throttled within days.
That reading shows up in the data model, not just the copy. Thumbnail and title are stored, rendered and scored as one unit rather than two variables, because they are read together in about a quarter of a second and their job is to compress a single idea. Scoring them apart produces noise, and it makes the one useful judgement impossible: whether they reinforce each other, repeat each other, or pull in different directions.

Key decisions
Six calls that keep the numbers honest.
- Stack
- Next.js 16, TypeScript, Tailwind v4, Zod, Claude API
- Corpus
- 1,317 videos across 14 channels, 733 long-form and 584 Shorts
- Tests
- 144 cases across 7 suites, no network
- 01Refuse the numberbelow four usable neighbours the ratio is null rather than a cohort median, because dividing a small channel by the tracked-set median produces authoritative looking garbage.
- 02Shorts invert the modelno thumbnail to win, so they are a separate entity with their own medians, a five second hook window instead of thirty, and no packaging panel at all.
- 03The gem is the productnormal views with top quartile engagement is a proven idea held back only by its packaging, so it gets a permanent card rather than a filter buried in a menu.
- 04Spend is content addressedthe cache key is a hash of the prompt version, the thumbnail bytes and the title, so a revert costs nothing and a real edit costs one call.
- 05Detect the swap by bytesYouTube thumbnail URLs never change when a creator replaces the image, so comparison runs on HTTP ETags instead, which makes a mid-life swap one of the strongest signals in the set.
- 06Recalibrate on real datathe engagement threshold was tuned to 1.4 against a synthetic fixture, but 373 real videos put that at roughly the 92nd percentile, collapsing gems to 8 percent and swelling clickbait to 22. Retuned to 1.2 for a near symmetric 18 and 20.

What it refuses to do
There is no CTR field, and there should never be one.
Click-through rate and retention come from the YouTube Analytics API and are owner-only, which means they are unobservable for every channel in this set. The dashboard infers packaging performance from public counts and says so on the face of each video, next to the ratio it just reported.
The same instinct runs through the rest of it. Shorts classification depends on undocumented redirect behaviour, so the run aborts rather than silently reclassifying when more than a tenth of probes come back unexpected. View history is appended to a file from the first run onward, months before anything could read it, because the API reports current totals and nothing else, and a question about how a video was pacing last week is answerable only from a record you already kept.