
Turning a watch later graveyard into a catalogue
A web app and Chrome extension that sorts your YouTube Watch Later into shelves you will actually open.
TIMELINE
July 2026
ROLE
Product Design
Brand Identity
Product Direction
TOOLS
React
Chrome Extension APIs
Supabase
Vercel
Claude API
Just me!
/
Problem
The list is not too long. It is undecidable.
/
Process
Two days after launch, YouTube cut off the data the product ran on.
I shipped the first version as a web app that read your Watch Later from the server. On July 12, that stopped working. The tooling started returning empty playlists for a list my own browser could still show me in full. Server side access to Watch Later was closed.
That is the entire premise of the product, so I had to decide fast whether it was dead. What I worked out is that the only code that could still read the list was code running inside the user's own browser, in their own signed-in session. So I promoted the Chrome extension from a post-launch nice-to-have to the core architecture, and rebuilt the product extension-first in a day.
The thing I did not expect was that the constraint was correct. YouTube's official API has never exposed Watch Later, Google removed it in 2016. Every tool in this category works through the browser because the browser is the only honest path. What felt like the product breaking was really the product finding its actual shape, and the version that came out of it is better positioned: it reads your own data, from your own session, only when you ask, and nothing is re-hosted anywhere.

/
Process
It imported 500 videos and reported success. That was the bug.
/
Process
The first visual pass came back as contrast corrections, focus handling, and text wrapping fixes. All real problems, all worth fixing. I looked at the result and said I could not see a single design change, because I could not. Accessibility repair is maintenance. It is invisible by construction, and I had asked for an identity.
So I threw out the look entirely. The old one was cold blue-slate with a pink and blue gradient, which is what nearly every AI product has looked like since 2023 and which said nothing about this one. The differentiator here is not that a model sorts your videos. It is the librarian: shelves, a catalogue, a stated reason on every card. So the identity had to say that.
The rebuild is warm archival near-black instead of cold slate, one brass accent instead of a gradient, and it stays dark because thumbnails need a dark surround to read. Type got three jobs and three faces: a serif for voice and headings, a sans for dense interface text, a mono for counts and timestamps. The landing hero stopped being grey placeholder rectangles and became an actual catalogue with shelf tabs, italic descriptions, and real counts, so the idea of the product is visible before you sign up.
The lesson I took is that I had been asking for design and accepting QA, and the fix was just to say so out loud. It also cost me a round I would not have spent if I had written down what "design pass" meant before asking for one.

/
Final Design
You install the extension, press sync once, and the whole library comes across. Every video lands on one of five shelves: worth learning from, worth watching, music, just for fun, and outdated. Each card says why it was filed there, so a wrong call is visible and correctable instead of mysterious, and correcting it teaches the sorting. After the first sync it keeps itself current on its own.
Open any video and you get a summary pulled from its captions, which is the part I use most. It answers the question that actually stops you, which is whether a fifty minute video is worth fifty minutes.
The detail I am most pleased with is the smallest one. The extension icon at 16 pixels could not just be the large mark scaled down, because the outlined shelf spines turned to mush, and what survived read as two solid bars, which is the universal pause glyph. A pause icon on a video tool tells you the opposite of what the product does. The small icon is drawn differently on purpose, with a knocked out shelf rule that breaks the pause reading. I only caught it by looking at the rendered file at actual size instead of trusting the export.

/
Reflection
The most useful decision I made was refusing to delete anything.
The obvious feature is removing videos from your real YouTube playlist. Everyone asks for it, it is the natural end of the workflow, and I built a working prototype of it. Then I blocked it from shipping.
The reason is that YouTube's official API does not support removing items from Watch Later, so any version of it is a workaround operating on someone's real account, at scale, with no undo. Getting it wrong once means deleting videos a person saved and cannot get back. Marking something watched in Laterlist clears it from your board, and the interface says out loud that your actual YouTube playlist is untouched, so nobody has to guess what a button did to their account. For the same reason I renamed the other action from "dismiss" to "not interested", because the label should describe what the person meant, not what the database did.
Along the way I found the landing page promising one-click bulk removal that did not exist and was never going to on that timeline, and I cut it. The version of me that shipped that copy was writing a roadmap, not a product page. When you kill a claim, you have to search the whole app for it, not just the screen you happen to be looking at, which I learned by finding the same false promise a second time on a different screen a week later.
Two honest limits. The only person whose real library I have designed against is me, and beta testers are still on the to-do list, so what I have is one very deep user and no breadth. And the build itself was AI-assisted: I planned the product, made every product and design call, reviewed the work, and tested it on real hardware, but I directed agents to write the code rather than writing it myself. That is how I got a product with a published extension out in three weeks as one person, and it is also why my next move on this is putting it in front of people who are not me.

OTHER
PROJECTS
Get in touch

