Skip to main content
The day leaves a trail of notes: a meeting in shorthand, a pile of links, a half-formed idea. They sit in an inbox because filing them properly takes the one thing the day didn’t leave, attention. A vault that fills itself with everything is no better than the inbox; a vault someone curates is the one that answers questions a month later. You want the filing proposed for you: where each note belongs, in the vault’s own folders, cleaned up but with every fact kept. You want to decide each one, file it there, file it somewhere else, or drop it with a reason, so the vault stays yours. And when you ask it a question, you want the answer to come from the vault’s own pages, with the path of each passage it used. Obversa keeps the person between the inbox and the vault. A Claude seat reads the inbox and the vault’s folders and proposes a place and a cleaned version for each note. Your decision on each is a step, and only what you kept is written where you said. Then a question is answered by searching the vault, grounding the seat on the passages that matched, and citing their paths. This file is one run: propose, steer, file, search, answer.

Run it

Set the project up as Installation describes. Copy the file with briefs/, inbox/, vault/, steering.json and questions.json beside it, sign in to Claude Code, and run it from that directory. steering.json carries the person’s decisions from the last pass:
Terminal
The output below is the proof’s offline run, with scripted seats standing in for the models, so the words are the script’s and the shape is the run’s.
Output, from the offline proof
Three notes, three proposals, three decisions. The meeting note was filed as proposed. The link dump was dropped, with the reason on the record. The idea was proposed for the existing reading-group page and the person moved it to a page of its own instead, so nothing was overwritten. The search for the question found the newly filed decision and the older loop page, and the answer cites both. The run’s record is records/vault-curator.jsonl.

The file

The brief gives the seat its two jobs and keeps the vault out of its hands:
briefs/vault.md
Each note gets its own decision step. A decision the person already made is the step’s answer, and a decision may carry a different path; a drop fails the step, and optional: true keeps the run going:
examples/use-cases/knowledge/vault-curator.ts (excerpt)
file writes each kept note where the person said, search ranks the vault’s passages for the question and grounds the seat on the files that matched, and answer writes the answer with the paths cited:
examples/use-cases/knowledge/vault-curator.ts (excerpt)
The vault is a folder of Markdown files, searched by Markdown Memory with no index or service. Search returns passages with a path, a line range and a score; the path, not the passage, goes to ground, which reads the file through a read-only view of the memory port and marks it as data rather than instructions before the seat sees it.
examples/use-cases/knowledge/vault-curator.ts

The team’s shape

What the run did

The proof runs the file against a scripted seat and checks what the page describes: two notes filed at the paths the person chose, the existing page untouched, the dropped note nowhere in the vault, the filed decision among the passages the search found, and an answer that cites it. Obversa recorded the run as one event log, so it shows the proposals, the three decisions with their outcomes, the filing, the search, and the answer in order. The person’s decisions here come from a file, because the run has to complete offline. In use, a proposal with no decision yet stops its step on the question and the filing waits for it, as A person decides shows. Either way, nothing reaches the vault that the person didn’t put there.

Next steps