RSS

// The Docs Are the Memory

Every new Claude session I started for a project had no memory of the last one. That’s the fact this whole setup is built around.

The system behind this website, a homelab, and a couple of other projects. Claude and an Obsidian vault, four notes per project instead of a chat log, and a folder connection that lets Claude read and write them directly.

Also: a document that went stale for a day, and a scheduled task that didn’t survive its first day.

No memory

Open a new conversation with Claude for one of these projects and it knows nothing about the last one. There’s no memory to jog, vague or otherwise. Every session starts from the same blank state a brand new hire would, minus even the induction.

The obvious fix people reach for is more context: paste in the history, summarise what happened last time, hope the next session picks up the thread. That works once. By the tenth session you’re re-summarising a longer transcript each time just to get back to where you already were, and the thing meant to preserve continuity becomes the part most likely to get skipped or garbled under its own length.

The fix is to stop needing memory at all. Every project I run this way, this site, a homelab, a couple of others, keeps its state in an Obsidian vault Claude can read and write directly, through a folder connection I approve project by project. The docs are the actual continuity mechanism, not the chat history.

The stale document

That discipline slipped once on this very site. It used to keep its own document, a single file in the Hugo repo covering DNS, email, the server, all of it. Then I moved the domain’s DNS and email off DreamHost to Cloudflare, a day of real changes, and the repo’s copy of that document just sat there while the real state moved on without it.

Nobody edited the stale file to make it wrong. It went wrong by doing nothing, while the infrastructure kept changing underneath it. What caught it was the same habit this whole piece is about: a session reading the vault’s real notes before touching anything, noticing the repo’s copy no longer matched, and asking why there were two.

So the repo stopped keeping its own copy. The file there now is a pointer, a paragraph mostly explaining why it isn’t the real thing any more. The canonical version lives in the vault, and that’s the version a new Claude session is told to read first, every time, before touching anything.

Four notes, not one

The structure that survived that mistake is the same four notes, per project. Overview, Changelog, Watchouts, One Pager.

Overview is current state only. What’s true right now, not what used to be true. If a value changes, the old one gets overwritten, not appended underneath it with a strikethrough.

Changelog runs the other way, a dated narrative history of what happened and why, ending in a running checklist of what’s planned next. Nothing gets deleted off that checklist. Items get ticked off in place, so the list itself is a visible record of what’s been done, not just what’s still outstanding.

Watchouts is the one I didn’t expect to matter as much as it does. Every gotcha gets its own entry, and it stays even after the problem’s fixed, because the same failure mode has a habit of resurfacing later for a completely different reason. Two real examples are already logged there, a Pi-hole setting that silently blocked a new app password, and a firewall rule ordering issue that broke a proxy target. Neither has to get solved from scratch again if the same shape of failure turns up somewhere else.

One Pager is a summary of Overview, deliberately not allowed to drift from it. Any status change updates both in the same pass.

The checklist that argues with itself

Each Changelog’s “planned next” checklist is meant to match a real Todoist project, one per active thing I’m working on. Every open line carries a hidden HTML comment with a task ID in it, invisible in the normal view, so a checkbox in the note and a task in Todoist can be matched to each other exactly, no guessing from wording.

The first version of this ran on a schedule, a routine firing twice a day to reconcile both sides on its own. It ran on time, every time, and did precisely nothing. The scheduled session couldn’t reach the same folder connection an interactive one could, so the sync step silently failed on every run, while Todoist access worked fine in isolation and nothing in either system flagged that anything had gone wrong. It didn’t survive its first day.

That’s interactive now instead of scheduled. Whenever a session touches a project, for any reason, it reconciles the whole checklist both ways in that turn. Less coverage than a working scheduled version would have given, but the old version’s bar was literally zero, so beating it isn’t much of a boast.

What it doesn’t fix

Nothing gets reconciled if nothing touches it, which is the honest gap in all of this. A checklist edited in Obsidian, or a task added in Todoist, just sits mismatched until some unrelated piece of work brings a Claude session back to that project. It’s narrower than the always-on version I wanted, but it’s honest about what it can promise.

This whole system runs on writing things down accurately, as they happen, before deciding later they weren’t worth the two minutes. That was always good practice, the sort every onboarding doc preaches and nobody quite keeps up. What’s different is having a collaborator capable enough to make real use of them, one with no ability to fake having remembered when they haven’t been kept up.

I'd love to tell you more.

// Generative Engine Optimisation

John Lewis says the share of shoppers arriving via an AI tool, ChatGPT, Gemini and the rest, has gone from 0.3% of traffic a year ago to 2.5% now. Eightfold in twelve months. Peter Ruis, managing director of John Lewis department stores, calls it exponential. Every age group.

What happens once the reader stops being a person: a content studio on Oxford Street, a YouTube chat show, and a metric nobody can buy their way onto.

Also: the cobra effect’s other cousin, why “third-party” content made in-house isn’t quite, and a managing director who won’t be there to see if any of it worked.