# How my LLM wiki works

Adam Seed — adamjseed.co.uk — September 2026

Answers to the LLM wiki exchange prompt, describing structure and conventions
only. The pattern is Andrej Karpathy's LLM wiki:
https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f

## 1. Shape

Markdown in a private git repository, edited by an agent and readable in
Obsidian. Three top-level folders: immutable raw sources, agent-maintained
pages, and generated outputs. Page types are people, organisations, sources,
projects and meals. Every page carries frontmatter with created and updated
dates and a confidence rating.

Git is doing more work here than it looks. Every change is a commit with the
reasoning in the message, so a rewrite is never actually destructive — the
previous version is always recoverable. That single property is what makes
aggressive tidying safe rather than frightening.

## 2. Rules that are actually written down

- Raw sources are never edited. If the original is not plain text, keep the
  original file AND a literal text mirror. No reformatting, no tidying.
- Source pages must not be lossy. Anything short enough is reproduced in full,
  because queries read the wiki layer and never the raw layer.
- Derived documents regenerate from the raw original, never from a summary.
- Write each fact once, on the page that owns it. The log records what happened
  and links out. If a fact would need editing in two places when it changes, it
  is in the wrong shape.
- If nothing owns a fact, create the page — people especially. Added after the
  rule above quietly lost things with no home.
- Keep genuinely log-shaped detail in the log: what was tried and rejected,
  what failed and in what order. That has no current-state page to live on.
- The log is append-only; completed months are archived, not edited in place.

## 3. What it does, not just holds

I use mine for a mix of things — some running regularly, others still being
refined.

- Inbox triage — works through what an automated classifier has flagged, groups
  it, drafts replies, clears the rest.
- Renewals and life admin — finds policies, subscriptions and contracts buried
  in email, files them with their dates, and surfaces what is expiring.
- Meal planning — a week of evening meals from a library of what the household
  actually eats, accounting for who is in and what they will not eat.
- Networking and opportunities — keeps a tailored CV and cover letter ready
  from a standing version, tracks people worth staying in touch with, and
  builds prep when a conversation turns into something worth taking further.
- Remembering people — birthdays, anniversaries, gift ideas, and a nudge when I
  have not spoken to someone in months, built from what is already on their page.
- A daily briefing — what is on today, what needs a reply, what is expiring,
  published to a private page I can open on my phone rather than something I
  have to go and ask for.
- A researcher — watching a set of blogs, feeds and releases, and folding what
  actually matters into that briefing rather than creating another inbox to read.
- Calendar — reading what is coming up, and putting things into it.
- School and household admin — term dates, permissions and the steady drip of
  paperwork that comes with children.
- Holidays — a trip as one thread: flights, accommodation, who is going, what is
  still to book.
- Home projects — quotes, contractors, decisions and status for anything being
  done to the house.
- Money — capital, rates and scenarios against a target, with the decisions and
  the reasoning kept alongside them.
- This website — the posts and resources on it are drafted from what the wiki
  already holds.
- Getting documents in — a watched folder for things arriving, not just
  publishing things out.
- Capturing what I actually did this week — it knows my CV, not my week, and
  closing that gap would make everything else better.
- Writing in my voice — the style rules applied to anything drafted on my behalf.

The division that works: a cheap deterministic classifier handles volume, and
the LLM only sees the ambiguous remainder. It never replaces that classifier, it
works on top of its output.

Standing rule: surface, never act. Anything needing judgement gets flagged
rather than handled — an unsigned contract, a failed payment, an expiring
policy. Nothing runs unattended.

## 4. What I changed my mind about

### Folders are a filing system; this is a linking system

Sources started in a folder per project, mirroring how I had organised things
before. Wrong twice, a layer apart — first for raw sources, then again for
project pages, where one folder held exactly one file.

The general point: a folder forces every item to have exactly one parent, so
you have to choose one. A source relating to three projects does not have one
parent, and a link costs nothing. Anything that can be expressed as a link
should not be expressed as a folder.

### Summarising the source material

The first source page was a tidy summary of a CV. That is wrong in a specific,
non-obvious way: queries read the wiki layer and never touch the raw files, so
a summarised source page means every future answer is built on a lossy copy,
while the exact original sits one folder away, unread. Reversed within a day.

### Deleting old log entries to save space

The log had grown to 128KB in nineteen days, and the plan was to rewrite the
old entries short.

Before deleting anything I checked what existed only in the log — and found
real things, including two former colleagues with no pages anywhere. Deleting
would have destroyed the only record of them. So the order changed: migrate
what is at risk onto real pages first, then rewrite. The check is the
transferable part, not the rewrite.

## 5. What broke

- Everything was written twice — the log and the pages narrating the same
  events at the same depth. 128KB in nineteen days.
- Eight people and organisations existed only in log entries, including
  someone from a significant professional conversation the day before.
- A heading that lied: "open questions" holding twelve resolved items, one of
  them labelled "live".
- Parallel sessions duplicated work — two sessions independently produced the
  same tailored document because a branch was never merged.
- Confidently wrong once: a tailored CV silently widened a claim from one role
  to a whole career. Caught on review. The fix became a hard rule — tailor by
  reordering and selecting only, never by rewriting sentences.

## 6. Keeping it honest

The part almost nobody builds, and the part that decides whether this is still
useful in a year.

- Automated integrity checks: every page indexed, no orphans, no broken links,
  no missing frontmatter, every raw source referenced by something.
- Pins: a register of corrections made by hand, so a later ingest cannot
  silently reassert the old version. It protects the edits the agent has no
  other way of knowing about.
- Confidence ratings and explicit unknowns. Guessing is the failure mode;
  "not confirmed" is a valid recorded state.
- Ask before losing detail. If a tidy-up might drop something and it is unclear
  whether it exists elsewhere, stop and ask.
- Unsolved: scale. The index is read in full on every query. Fine at eighty-five
  pages. Not fine at eight hundred, and I do not yet have an answer for it.

## 7. What I would do differently

Decide where each fact lives before writing anything into it. Nearly every
problem above traces to the same root: no rule about page versus log, so
everything went in both, and anything without an obvious home went in neither.

And on day one: put it in git. Not for collaboration — for the ability to
rewrite aggressively later without risking the loss of something only recorded
in one place.
