Shipping awesome.video: 2,365 Resources, Built Mostly by Agents
A curated directory of video-development resources is now live. It took 1,185 commits and thirteen months, and coding agents wrote or drove most of them. Here is the honest recap.
View companion repoIt's live
awesome.video is up. It is a browsable directory of video-development resources: 2,365 of them, sorted into nine categories, with fuzzy search, AI recommendations behind a login, and an admin surface for curating the list. I built it across 1,185 commits over thirteen months, and coding agents wrote or drove the large majority of them.
That last sentence is the reason this post belongs in the series. The product is a video resource list. The interesting part is how it got made: a real app, shipped to a real domain, where my main job for long stretches was reviewing what an agent had already done and deciding whether it could continue.
What awesome.video actually is
Three sentences. It mirrors a curated GitHub list of video-engineering resources into a fast, searchable web app backed by a Postgres database. It adds the things a flat markdown list cannot do: tag filtering, per-category browsing, full-text search on a keystroke, and AI-powered recommendations once you sign in. An admin can edit entries, resync from the upstream GitHub source, and export back to an awesome-lint-compliant format, so the web app and the canonical list stay in agreement.
The homepage right now reads "Explore 9 categories with 2365 curated resources." The nine categories and their counts: Encoding & Codecs (416), Media Tools (354), Players & Clients (333), Infrastructure & Delivery (290), Protocols & Transport (256), Intro & Learning (242), Standards & Industry (207), General Tools (179), Community & Events (88). Add those up and you get 2,365 exactly, because the homepage number is computed from the database, not typed into the page. Hold onto that detail. It matters later.
1,185 commits, mostly not mine
The git history is the clearest evidence of how this was built. 1,185 commits, first one on 2025-05-21, most recent batch on 2026-06-05. The author list is the tell: the largest share comes from a Replit build identity, a sizable block from a "VQA Developer" identity (visual QA, an agent role), an explicit "Replit Agent" committer, and a smaller set under my own name. Four separate agent frameworks left their working directories on disk: a Claude Code config, an auto-claude worktree, an oh-my-claudecode session store, and a 131 MB semantic code index. The repo is a record of several agents taking turns.
You can see the agents doing real engineering, not toy edits. One commit reads "refactor(server): split routes.ts into 19 domain modules." A single monolithic route file became twenty-three focused files under server/routes/ (auth, admin, enrichment, github, recommendations, and so on). Another extracted a rich-text editor and a multi-select out of a shared CRUD component on the client. These are the unglamorous structural moves that keep a codebase navigable, and they happened mostly without me typing the diff.
The agents caught a real bug
The most useful thing an agent did on this project was find a security defect I had shipped. An agent-run audit pass flagged C2-002, rated high severity: the /api/admin/users endpoint was returning password hashes in its response body. The fix routed that response through a safe-select repository method that never includes the hash column, committed and pushed. That is not a contrived demo of an agent catching a planted bug. It is a real leak in a real admin endpoint, found by a review pass and closed before launch.
The same audit caught a quieter one, C2-001: a hardcoded "2000+" string sitting in the homepage for SEO, a number that meant nothing and matched no actual count. The agent removed it. Keep that fix in mind too, because it is the seam where the next section starts.
The number that would not sit still
This product has had three different answers to the question "how many resources?" The README still advertises "2,600+ curated video development resources." The agent audits over the spring worked against a database baseline of 1,952. The live site today says 2,365. Same product, three numbers.
None of them are lies, exactly. They are snapshots of a count that drifts every time the upstream list syncs, frozen into different surfaces at different times. The README's "2,600+" is a hardcoded marketing figure that nobody updated as the database changed underneath it. The 1,952 was a real database state during an audit. The 2,365 is what the database holds right now, which is why the nine category counts on the homepage sum to it precisely: that number is read from the data, every page load, with no human in the loop to let it go stale.
So the homepage and the README disagree, and the homepage is the honest one. That is the same lesson as the C2-001 fix from the audit. Hardcoded numbers drift away from the truth the moment the truth moves. Computed numbers cannot. The agent that deleted the "2000+" SEO string was treating a symptom of the same disease the README still has. The cure, in both places, is to stop typing the count and start deriving it.
What I actually owned
If agents wrote most of the commits, what did I do? I owned the decisions that could not be undone, and the ones that needed taste rather than throughput.
The Replit-to-Docker migration is the clearest example. An agent attempted to containerize the app, hit a startup failure it could not resolve, and the right call was not to keep grinding on Docker. It was to step back, host the app elsewhere, and move the database to managed Postgres so the 1,952-resource baseline survived the move. That was a judgment about where to stop trying one approach, and it was mine. Agents are good at pushing a path forward. Knowing when a path is a dead end is still a human call most of the time.
And the launch itself. Pointing a real domain at a real app is the most irreversible action in this whole history. The series has a running theme about keeping a person on every irreversible step, because the worst agent mistakes are the permanent ones made on an ambiguous instruction. Shipping to awesome.video is exactly that kind of step. No agent decided this was ready. I did, after looking at it.
The launch is the proof
awesome.video is the artifact at the end of a thousand-commit collaboration where I was outnumbered by my own tools. The agents did the volume: the refactors, the CRUD scaffolding, the audit that caught a real leak. I did the irreversible and the tasteful: the migration call, the launch, the decision that a homepage number should be computed instead of typed.
That division held up well enough to ship. If you want to see what a year of agentic development actually produces, the answer is browsable at awesome.video right now, 2,365 resources deep, with a database that knows its own size.
Continue the series
- 39SeriesThe Machine That Writes These PostsA content pipeline of 24 commands and 11 skills mines my sessions, drafts the post, and refuses to let any machine click Publish. This one was made by it.
- 38SeriesAuditing the Agent: Mining My Own Sessions to Catch 27 MistakesThe agent's session transcripts are a labeled record of every time it diverged from what I asked. So I mined them — and made it grade its own work.
- 37SeriesLinkedIn Has No Pulse API: Designing a Pipeline Around a Manual GateThe publisher fires LinkedIn feed posts on its own. It cannot create a Pulse article. So I built the whole content OS around one irreducible human paste.
- 36SeriesShannon v1.2.0: Multi-Stage Agentic Work as a Sequence of Provable StepsA Claude Code plugin that refuses to say 'done' until the evidence is on disk. 36 skills, 11 agents, 22 commands, 7 hooks — and a doctor that reads its own contract.