Web App2026Live

Grasp

A personal YouTube channel watchlist that turns new long-form uploads into structured TL;DRs, key points, and timestamped highlights so you can decide what is worth watching.

Grasp interface
Client
Personal Product
Roles

Product Design

Full-Stack Development

AI Summarization

Tech stack
Next.jsReactTypeScriptHonoPostgreSQLDrizzleClerkGeminiYouTube Data APICloudflare WorkersBun

The outcome

Built a deployed full-stack digest product with authenticated channel tracking, a summary-first feed, and a production-shaped background job architecture for polling, filtering, and processing new videos.

01

A Watchlist, Not Another Feed

YouTube already had a feed; it did not need another one. Grasp tracks only the channels a user deliberately chooses, ignores short-form noise, and puts the summary before the play button. The product decision was simple: help someone decide whether a long video deserves 40 minutes before asking them to spend the first ten finding out.

Grasp interface
02

Split Jobs by Failure Mode

Channel polling and video summarization fail for different reasons, so they run as separate queueable jobs. Polling discovers uploads, filters Shorts, and deduplicates known videos; processing handles transcripts and model calls. A failed summary can retry without rediscovering the channel or creating duplicate feed items, which keeps the background system recoverable instead of merely optimistic.

03

Structured Summaries or Bust

The model returns a typed summary with a TL;DR, key points, and timestamped highlights rather than an essay that the UI has to negotiate with. Free-form AI prose is useful; it is not a database schema. Keeping the output structured makes rendering predictable and turns timestamps into direct jump points instead of decorative metadata.

Grasp interface
04

What Shipped

The deployed product separates the Next.js web app from a Hono API, stores channels, subscriptions, videos, transcripts, and summaries independently, and uses Clerk to keep each watchlist personal. The result is a small full-stack system with the production concerns left in: authentication, scheduled discovery, retries, deduplication, and a feed built for triage rather than infinite scrolling.