Last time, I promised to crack open the filing cabinet. Here is the pile. Our playground is SHIELD: a fictional spy-agency data dump. It’s full of mixed files and completely lacks a blessed, coherent folder map. Clone it if you want something to poke. For now, ESC itself stays private until it earns its keep.
Filenames that lie politely
Open any corporate Drive and you will find an order that is purely theatrical. Folders named Final, nested inside folders named Final_v3. PDFs whose metadata confidently declares “Document1.” Humans navigate this labyrinth by apprenticeship and gossip.
Agents see file indexes. An index is not a memory. It is simply a table of contents that admits what is actually on the disk – the path, the size, a title you can trust a little, and maybe a paragraph – before anyone tries to invent a clever map.
What did we investigate and ship
We have four tracks. Same corpus, different jobs.
- Simple index (Always on). Walk the tree, skip the junk paths, hash the bytes, and drop a SQLite catalog right beside the files. It includes HTML and Markdown viewers so a human can browse without launching Preview for every single PDF. Titles are pulled from filenames, headings, and metadata. No AI required.
- Batch describe (Optional). Convert PDFs and Office docs to raw text, then ask a model for a crisp title and a one-paragraph description. Images pass through a local vision model when needed. Use local models for data safety or Cloud APIs for some extra speed.
- Agent catalog CLI.
list,get,set. JSON in, JSON out. Simple set of scripts that allows agentic software to make the work. An agent (or a very careful human for sensitive data) fills in the blurbs without inventing hallucinatory file paths. - LLM wiki (Optional sugar). The Karpathy pattern. The raw files stay immutable, but a compiled Markdown map lives under
.esc/wiki/. It tracks entities, concepts, and logs. The Context Owner flips this on for a specific team or the whole company. Helper scripts wave a flag when the wiki’s leads drift away from the hard truth of the catalog.
The catalog is the spine; the wiki is just a compiled layer on top. Agents write through the CLI into rows that already exist. It sounds boring. But boring is exactly how you avoid building a second, shadow knowledge base in someone’s chat history.
Data safety, without the lecture
The failure mode in small agencies is highly concrete: the intern’s scratch folder, the Chinese wall between competing clients, the draft agreement that was never meant for the wider team. Paste that pile into a chatbot and you’ve already breached the room.
ESC’s first move is smaller and safer. Extracts and scratch text sit directly next to the index on disk. The “Local describe” function keeps your bytes at home unless you actively choose a cloud preset.
Permissions are still coming in next chapter.
Four ways to label a filing cabinet
- No AI. Simple index only. Titles come from the file. Descriptions wait.
- Local AI. An on-machine model (I’ve been running Ollama with a mid-size Qwen). Perfect for private dumps and late-night iterations.
- Cloud AI. Free Groq, NVIDIA, or OpenAI, Gemini for some extra quality – it’s the exact same CLI surface, just different API keys. Useful when you need speed or a second opinion on a weird sample.
- Agent or human judgment. Read the file (or its text extract) and write the blurb using internal scripts. It’s slower, but often much better for that bizarre PDF that MarkItDown turned into endless, repeated boilerplate.








I ran the same two SHIELD papers through local models, several cloud models, and the agents.
Vectors and the missing door
In previous post, I called RAG and access control mortal enemies at the agency scale. I still firmly believe that is the right instinct for a permissioned shared memory.
Embeddings do not carry ACLs. A nearest-neighbor search will happily retrieve a catering invoice that “sounds like” a case study, or a restricted program note that happens to rhyme with a public brief. Sure, you can bolt chunk-level permissions onto a vector store. But then you get to maintain that bolt.
So for ESC, I am not standing up a vector database as the filing cabinet. We use a simple index plus an optional LLM wiki. If we ever return to vectors, it will be for a system that doesn’t need per-user walls.
Next up, I have to build the walls: filtered index copies, uploads that inherit the right ACL, and the awkward truth that pretty wikis leak secrets in paragraphs, not just in paths.
Stay tuned.
