I built a searchable personal knowledge base over a weekend using Markdown files, a static site generator, and AI-powered search. Total cost: zero dollars. Here is the full walkthrough — from scattered notes to a system I actually use every day.
Why Bother?
I had notes everywhere — Apple Notes, Notion, random text files, bookmarked articles, highlighted Kindle passages. When I needed to find something, I would search three or four apps before giving up and Googling it again. The goal was simple: one searchable place for everything I learn, accessible from any device, and owned entirely by me.
The Stack
Markdown files in a Git repository for the content. MkDocs with the Material theme for rendering. Hosted on a simple VPS with automatic deploys via GitHub Actions. The whole thing is a static site — no database, no server-side processing, fast everywhere. I chose Markdown over a database because I want my notes to outlive any particular tool.
Organisation System
I tried complex folder hierarchies and abandoned them within a day. Instead, I use a flat structure with good filenames and heavy tagging in the YAML frontmatter. Tags like "python", "ai", "writing", and "recipe" let me filter without nesting. The search is good enough that I rarely browse — I just search for what I need.
Adding AI Search
This was the weekend's stretch goal. I used an embedding model to vectorise all my notes and stored the embeddings in a local SQLite database. A small Python script lets me ask questions in natural language — "What was that pasta recipe with the anchovy butter?" — and it returns the most relevant notes. It took about four hours to set up and transformed the knowledge base from useful to indispensable.
Daily Capture Workflow
The system only works if adding notes is frictionless. On desktop, I have a Raycast shortcut that opens a new Markdown file in VS Code with today's date pre-filled. On mobile, I use a simple shortcut that appends text to an "inbox" file that I process weekly. Articles get saved via a browser extension that converts them to Markdown and commits them to the repo.
What I Would Do Differently
I would start with better tagging conventions. My early notes are inconsistently tagged and I am still cleaning them up months later. I would also set up the AI search from day one — it changed how I interact with the system so fundamentally that the flat Markdown files alone feel incomplete now. And I would write smaller, more atomic notes instead of long documents. One idea per note makes search much more effective.