The Markdown Wall
Every system has a wall — the point where its design assumptions stop holding and the cracks start showing. For markdown-as-memory, the wall appeared around month nine. It wasn't a dramatic failure. It was an accumulation of small frictions that added up to a clear signal: the format had reached its limits.
What Markdown Does Well
To be fair about this: markdown is excellent at what it was designed for. Human-readable documentation that renders nicely in editors and on the web. Lightweight enough to version-control. No tooling required to read or write. Fast to edit. Good for narrative explanations where prose is the right form.
For a personal knowledge system that a human reads directly, these properties are exactly right. The problem isn't markdown. The problem is what I was trying to do with it — use it as a retrieval substrate for AI-assisted development — which is a different job with different requirements.
The Retrieval Ceiling
Retrieval from markdown is keyword search or manual scan. Full stop. You can grep it, you can use your editor's search function, you can read it linearly. There is no semantic layer. "Find everything relevant to fiscal period calculations" means searching for "fiscal," "period," "quarter," "calendar," and whatever synonyms you can think of, then manually evaluating whether the results are actually relevant.
For a document with twenty entries, this is fine. For a document with two hundred entries across multiple sections — the state my context files were in by month nine — it was noticeably worse than a proper retrieval system. I was spending time in search that should have been spent in work.
The comparison with the PostgreSQL-backed system was direct and damning. The same query run against the database — "what do I know about fiscal period calculations?" — returned semantically relevant entries including ones that used different vocabulary than the query. The markdown search returned only exact keyword matches. In a knowledge base where terminology isn't perfectly consistent (and it never is), semantic search is not a luxury. It's the minimum viable retrieval mechanism.
The Structure Problem
Markdown doesn't enforce structure. The structure in a markdown file is whatever you put there, which means it's only as consistent as the person maintaining it. Over nine months of adding to the context files, my structure had drifted. Some entries were one-line facts. Some were multi-paragraph explanations. Some had tags; some didn't. Some had dates; most didn't.
This made the files harder to maintain (every update required deciding where it fit in the document) and harder to retrieve (entries in different formats were harder to parse programmatically). The structure I had imposed at the start had eroded under the weight of accumulation.
The knowledge database had the opposite problem: too rigid. The schema I'd designed enforced a single content field and a metadata JSONB blob. It worked, but I kept running into cases where I wanted richer structure — relationships between entries, versioned history, confidence levels that changed over time as facts were confirmed or refuted.
The Injection Gap, Revisited
The original promise of the knowledge system was automatic context injection: at the start of an AI session, surface the relevant facts without me deciding what to include. Nine months in, I still hadn't closed that gap. The retrieval mechanism was ready. The injection layer — the code that would take retrieval results and prepend them to a model prompt — was not.
This meant I was still manually assembling context for most sessions. The knowledge database was a better filing cabinet than the markdown files, but it was still a filing cabinet I had to open myself and pull from manually. The automatic step was the missing piece that would transform the system from "a better place to store notes" into "a thing that actually changes my AI workflow."
What Came Next
The wall forced a design rethink. Not starting from scratch — the Postgres foundation was sound, and the semantic retrieval approach was validated. But the schema needed to evolve to handle richer knowledge structures. The ingestion process needed to be more automatic and less dependent on me deciding what was worth capturing. And the injection layer finally needed to get built, or the whole system would remain a more sophisticated version of the same manual process.
I had accumulated enough evidence about what the right system needed to look like. The next phase was building it properly — not as a prototype, but as something I could rely on across multiple projects without constant maintenance intervention. That work was already starting, and it was going to be more involved than I had originally estimated.
If you've hit the markdown wall and found a hybrid approach that preserves what markdown does well while extending it with proper retrieval, I'd like to hear about it. As always, I'm here to help.