About this project

This is where what I read, watch, and listen to online ends up. Save a link from any device and it is scraped, summarized, and tagged, so keeping something costs nothing more than deciding to keep it. Then, when a piece deserves it, I write my own note next to the source.

The rule that shapes everything here is that the model does the cataloging and I do the writing. Nothing on this site generates my opinion for me. The shelf is public because I want it to be, not because that is the point. The point is that the pile of things worth coming back to has one place, and that place is mine.

Methodology

Curation, what gets in

  • What earns a save

    The bar is whether I expect to want something back, not whether it was interesting to read. Most of what I open never makes it in, and the shelf is more useful for what it excludes than for what it holds.

    Browse what made the cut
  • The note is mine

    Anything I keep can carry my own commentary, written by me and never by the model. Most posts do not have one yet, and that is the honest state of things: the note is the expensive part, and which posts get one is the real signal of what mattered.

    Browse the shelf

Cataloging, what the model does

  • Summary and tags on ingest

    The model reads the source once, writes the summary you see on each card, and picks tags from a small catalog. That is the whole of its job here. It makes saving free, and it never touches what I think.

    See a card
  • Find it again

    Search and tags exist so that I can come back to something months later. Two hundred tags with fourteen in real use taught me that organization nobody maintains is noise, so the vocabulary is being cut down to one I actually use.

    Browse by tag

Building, how it stays honest

  • Built, measured, cut

    Between April and July this archive grew a retention machine on top of the shelf: quizzes, spaced repetition, a chat that answers with citations, a model router, weekly evals. Then I measured it. Six quiz sessions, nine questions asked, two posts ever revisited. What was missing was my own writing, not more model, so the machinery is being removed and the numbers stay on the record.

    See the numbers
  • Metrics that can embarrass me

    The stats page reported the corpus and its usage against a framework, answered questions per week, that the numbers retired. It is offline while that framework is replaced by numbers that are harder to hide behind: saves per week, how many notes are in my own words, and how healthy the tags are. They will be public for the same reason the notes are. I work more carefully when someone can check.

    Read the case study

How it's built

The pipeline

  1. 1Capture

    URL, share sheet, or bookmarklet, from any device

  2. 2Extract

    metadata and readable body text, no AI

  3. 3Enrich

    one model pass: summary and catalog tags

  4. 4Note

    written by me, when a piece deserves it

  5. 5Publish

    library, post page, tag pages, RSS

  6. 6Measure

    saves, notes in my own words, tag health

Stack

Next.js 15 (App Router, ISR, server actions) · TypeScript · Firebase Firestore · Gemini for the summary and tags on ingest · Tailwind + shadcn/ui · Vercel with a nightly analytics rollup.

Tradeoffs

The model catalogs, I write

The LLM-wiki pattern has the model write and maintain the knowledge while the human sources and asks questions. I run it the other way round. The model does the summary and the tags, and the note is mine. The cost is that most posts never get a note. The benefit is that nothing on this site reads as my thinking when it is not.

One datastore, few knobs

Posts, tags, notes, and analytics live in a single Firestore project. That means one consistency model, one backup story, and no extra infrastructure, at the cost of fewer tuning options. At hundreds of posts it is the right call, and I will know when it stops being one.

Firestore-backed rate limiting over Redis

A sliding-window counter in a ratelimits collection is slower and coarser than Redis, but it adds nothing to a serverless deploy. It fails open by design, so an outage degrades to unlimited rather than to downtime.

Cutting what I built

A Thompson-sampling model router and an eval harness are the most technically interesting things in this repository, and neither serves the four things the archive has to do. Keeping them would make the portfolio look better and the product worse. They go, and the write-up of why stays.

Want the long version? The case study covers the architecture decisions, the eval methodology, and what I'd change.

David's Archive

One person's reading, compressed into a queryable knowledge base. Built with retrieval, evals, and a learning loop — and instrumented end to end.

Explore

Project

© 2026 David's Archive · answers cite their sources · Admin sign-in