Zettelkasten
Table of Contents
1. Summary
Zettelkasten (German: slip-box) is a knowledge-management method developed
by sociologist Niklas Luhmann, who used it to produce an extraordinary volume
of academic work over several decades. Its two key principles are that each
note captures exactly one idea (the atomic note discipline) and that every
note is permanently addressable by a unique identifier, enabling a web of
typed links to emerge across the collection. ORE Studio uses Zettelkasten as
the conceptual foundation for its documentation graph: every .org file
carries a UUID :ID: property, files link to each other with
[[id:UUID][Title]] references, and org-roam maintains the index and
back-link database that makes the graph navigable.
2. Detail
2.1. The method
Luhmann's physical slip-box contained tens of thousands of index cards, each with a unique alphanumeric address. A new note was not filed by subject but placed wherever it could be cross-referenced to an existing note; the address was written at the top and outgoing references were written inline. Over time the collection self-organised into dense clusters of related ideas connected by an explicit link graph — something that no hierarchical filing system produces automatically.
The digital Zettelkasten community has translated these principles into plain-text formats: each note is a single file, the unique identifier is a UUID or timestamp, and links between files replace the handwritten references on cards. The emergent structure from following links reveals which ideas are central (high in-degree) and which are peripheral, without the author ever imposing a top-down taxonomy.
2.2. Why ORE Studio uses it
ORE Studio's documentation spans domain concepts (ORE instrument types,
interest rate curves), architecture decisions (component split, CMake
conventions), agile artefacts (stories, tasks, sprints), LLM instructions,
recipes, and manuals. A hierarchical directory structure alone cannot
represent the cross-cutting links: a concept defined in doc/knowledge/
is referenced from doc/agile/ tasks, from doc/recipes/, and from
doc/manual/. Treating the documentation as a Zettelkasten graph means:
- Any page can link to any other page by UUID — location in the directory tree is not part of the link and files can be moved without breaking references.
- The knowledge graph visualisation (org-roam-ui) immediately reveals which concepts are central to the project and which are peripheral.
- LLMs can navigate the graph programmatically:
compass show <UUID>prints a node's outgoing and incoming links, giving instant traversal without reading every file.
2.3. The atomic note discipline
The most important constraint is the one hardest to maintain: each file should capture one idea, not a collection of loosely related ones. When a file grows, the right response is usually to extract a sub-topic into a new file and link to it, not to add another section. ORE Studio enforces this weakly — the document types (knowledge, recipe, component overview, task, story) are each scoped to a single subject — but within each type the author must resist the temptation to include tangential detail.
2.4. Structure notes
Luhmann's slip-box contained a second kind of card. Alongside the atomic notes sat Überblicksnotizen — overview notes, usually rendered in English as structure notes — whose content was not an idea of their own but an ordering of other people's. A structure note names a cluster and lists its notes in an argued sequence, saying how each follows from the last and why the order is the one it is.
The distinction is between two kinds of address. An atomic note is addressable because it has an identifier; a structure note makes a cluster approachable, which is a different property. A reader who knows an identifier can reach any note directly, but a reader who knows only a subject has no way in. Search returns the notes that mention a term, ranked by resemblance; it cannot say which of them to read first, nor which three of forty are load-bearing. That judgement is authored, not computed, and the structure note is where it is written down.
The resulting shape is a hub with spokes. The hub carries no content that the spokes do not already hold, which is the discipline that keeps it honest: a structure note that restates its cluster becomes a second copy to maintain and drift away from. It gists and links, and the detail stays in exactly one place. The same rule governs any index in this graph, including this one.
Structure notes are also what make the collection navigable to an agent rather than merely searchable. An agent grounding itself in a domain before doing work has the reader's problem in an acute form: it knows the subject and not the identifiers, and the cost of reading the wrong five pages is paid in context it cannot recover.
ORE Studio holds them under the structure_note tag, and
the knowledge index opens with
the set. One exists per domain cluster: market data resolution, interest
rate curves, volatility, identity and access, MASD, and the entity
lifecycle.
Three conventions keep them honest. A structure note argues its order rather than listing one, saying what each page makes possible for the next; an order with no reason is a table of contents, which the index already provides. It gists and links, holding no content its cluster does not, so there is nothing in it to drift. And it says what it excludes, naming the neighbouring cluster and why the boundary falls where it does, because the reader who arrived at the wrong hub needs pointing at the right one more than the reader at the right hub needs reassurance.
A cluster earns a structure note when reading its pages in the wrong order costs something real. Where the order does not matter, the index entry is enough.
Some pages belong to a cluster without belonging to its sequence: a
provenance note, a research paper, anything reached when the question
changes rather than when the subject advances. A note holds these in a
section marked # aside, and the marker is what the tooling reads. The
alternative was to recognise such sections by their wording, which asks a
script to interpret prose and gets it wrong the first time a note is
phrased differently.
3. See also
- org-roam — the Emacs package that implements Zettelkasten over
.orgfiles in ORE Studio. - Emacs — the editor that hosts org-roam and drives all documentation builds.
- org-roam manual: A Brief Introduction to the Zettelkasten Method — the method described from the org-roam perspective.
- Knowledge — the index this graph's structure notes will hang from.
- Project memory — the sibling collection, held under a different discipline: unconditional rather than addressed.