Corpus.
One library that holds everything I know, read by every AI tool I work in. Adding to it takes one action, and the sensitive pages are handled by a model running on my own machine.
01 · THE PROBLEM
Context Drop solved the delivery problem. Ask it for context and it hands an assistant the right few pages, ranked and fit to a budget. What it could not fix was the library it was reading from: pages that ran too long, and single files covering four different ideas with the useful part buried in the middle where no ranker was going to find it cleanly. Adding something new took enough steps that I would put it off, so the notes kept drifting behind my actual work. Corpus rebuilds the library underneath, and Context Drop gets archived once it does.
02 · HOW IT WORKS
Everything lands as plain markdown in one vault, and that vault is the master copy. That part is built: the contract every page has to satisfy, the write worker that owns every commit to it, and the chunker that breaks a page into single-idea pieces.
The rest is the target, and it is worth reading as a target rather than a feature list. An AI librarian will read whatever I drop in, write the metadata and file it where it belongs, so that adding knowledge is one action. If it ever takes more than one, that is a bug. Search indexes will be derived from the vault and thrown away whenever the chunking or the embedding model changes, which keeps every model decision cheap to reverse. Queries will arrive over REST and MCP, so Claude Code, claude.ai, ChatGPT and a phone bot all read the same library and get the same answer back.
03 · ENGINEERING DECISIONS
The rule I designed the whole system around: before anything else touches a captured file, a classifier running on hardware I own decides whether the content is sensitive. Anything it flags goes to a local embedder and never reaches a cloud embedder, a cloud reranker, or the cloud librarian that does the filing. Ordering is the whole trick, because whoever reads the bytes first is the one who decides where they are allowed to go. None of that is built yet. The enforcement arrives with the embedder wave, as a CI test that stands up a fake cloud endpoint and fails the build if a single sensitive request reaches it, and the capture-time classifier is phase two. A privacy rule written down in a document is worth nothing, so the test is the part I am actually counting on.
The vault is plain markdown in git, and every vector index is derived from it. I can delete the entire index and rebuild it, so switching embedding models means rebuilding an index instead of migrating my notes, and the copy I actually care about is a folder of text files I can read without any of my code running. Phase 1 ends with a restore drill on a clean machine, which is how "the index is disposable" stops being a claim and becomes something I have tested.
Context Drop scores 0.85 precision-at-5 on its gold set, and that number leans on pack priors I curated by hand. Raw hybrid search over the same notes scored 0.56. Corpus bets that atomic pages plus structural ranking rules close that gap with no hand curation at all, and I wrote the gate before I wrote the code: Context Drop keeps serving until Corpus matches it on a shared question set. If the bet is wrong, the eval says so and I keep the old system.
Wave 2 passed three rounds of verifier sign-off and still had a path traversal, silent data loss under concurrency, and two separate bugs that corrupted content in the chunker. Every one was found by an independent probe or by mutating the source, never by running the tests again. So probes are part of the build now, and a probe has to be calibrated against deliberately broken code before a clean run from it counts for anything. I cannot review code myself, which makes the machine the only second reader I have, and it has to be a suspicious one.
04 · WHERE IT STANDS
Waves 1 and 2 are merged: the frontmatter contract, the filename sanitizer, the single write worker that owns every commit, and the chunker. 188 tests pass. Four rounds of review have come back blocking so far, every finding is fixed, and the fifth round is the gate on the next wave. The store, the embedders, the indexer, the retrieval engine, the eval, the MCP server, and the migration are all still ahead of me. Context Drop keeps serving my notes until the eval says Corpus reads them better, and I would rather post that number than a launch date.
05 · STACK
TRY IT — WHICH WAY DOES IT GO
A stand-in inbox of six short scraps, the kind that actually land in mine: a class note, a vendor quote, a project decision, a bank letter, a meeting transcript line, a doctor's note. Pick one and watch the routing decision play out: what the local classifier decides, which embedder gets it, and whether the cloud librarian is even allowed to read it.
Sample scrap: "Statement from First Union, routing number and balance on page one."
1. Local classifier (on my machine): SENSITIVE — financial account details.
2. Embedder: routed to the local embedder. The cloud embedder never receives it.
3. Librarian: the cloud librarian is not shown this page at all; filing happens locally instead.
Turn on JavaScript to route the other five scraps yourself and watch the cloud lane light up or grey out.