Four ideas. No code, no SQL — you can understand Sandra completely without either.
A concept is just a word Sandra knows: decision, impacts, blocks, mobile-app, Alice.
Each one has a stable identity. Every time anyone refers to impacts, they mean the same impacts —
not a similar-looking string that happens to match. Concepts are the shared vocabulary, and everything
else is built from them.
Three concepts in a row: subject, verb, target.
Bug #42 blocks Release 2.3
Payment rewrite impacts mobile-app
Alice decided Payment rewrite
Release 2.3 supersedes Release 2.2
That is the entire structure. Every fact in Sandra is a sentence of exactly this shape, and everything Sandra can answer comes from following these connections.
It looks almost too simple, and that is the point: because every fact has the same shape, you can walk from any fact to any related fact without knowing in advance what you are looking for.
Some things need more than connections — they need content. A decision has a title, a date, a rationale.
An entity is a thing with fields:
Decision
title: Mobile app gets its own endpoint
date: 2026-03-14
rationale: The shared endpoint returns 40× more data than the app uses
And it still participates in triplets, which is what makes it findable:
that decision impacts mobile-app
that decision decided_by Alice
that decision supersedes an earlier decision
Fields hold the content. Triplets hold the relationships. You need both.
decision, contract, convention, gotcha, open-question — these are types, and they exist so
you can ask "show me every decision" rather than fishing through everything.
You do not define types up front. Creating the first entity of a kind creates the type. If your team
later starts recording incident, that becomes a type the moment the first one is saved.
That is genuinely all of it:
Everything Sandra does — searching, listing, walking from one fact to related facts — is built from these four.
Ask: "What breaks if we change the payment endpoint?"
A notes file can find documents containing "payment endpoint". Useful, but it is a text match — it finds documents that mention the phrase, and misses everything that is affected without naming it.
Sandra follows connections instead. Starting at the payment endpoint, it walks to what depends on it, then to what depends on that, and reports the actual blast radius — including the mobile app, which nobody thought to mention in the same sentence.
The same structure answers questions you did not plan for. Nobody set out to make "which decisions has Alice made that were later superseded?" answerable. It just is, because the connections were recorded.
If one person records impacts, another records affects, and a third records impacts_the, then
they have written three unrelated facts and none of the questions above work properly.
Keeping the vocabulary consistent is the single habit that decides whether a memory stays useful as it grows. It is short enough to explain in one page: Why naming matters.
Next: Connecting your agent.