A collection has clusters — the books about a company, the ones that argue the same idea, the ones written in the same decade. The trouble was quiet and structural: “a cluster” had never been defined once. It lived in three different parts of the code at the same time — an early lens file, a later recorded run, a hand-written config — and each meant something slightly different by it. Two of them could tell you a cluster had eight books; a third could tell you six.
Worse, a cluster’s membership wasn’t stored anywhere — it was reassembled from disk every time a page was read, and basic facts like a cluster’s size or its core meant different things depending on which path did the reassembling. A whole checking step existed only to police the three disagreeing versions against each other. Adding a book, or re-running the analysis, meant stitching all three back together by hand.
Underneath the mess sat a deeper error. The old engine kept trying to give each book one home — its shelf. But books don’t work that way. Take Taleb’s Antifragile: it is a business book, and it is written in an empirical voice, and it is about the idea of antifragility, and it descends from Taleb’s own earlier work. Those are all true at once. None of them is “the” shelf.
A library isn’t a tree, where every book hangs under exactly one branch. It is a lattice, where a book belongs to many overlapping groups, and those groups share members with each other. Forcing one home is flattening that lattice into a tree — and the agony of choosing the home was never a real problem to solve. It was the symptom of asking the wrong question.
So we stopped shelving books and started refracting them. A book’s journey now runs like light through glass: it is classified into the lattice (what kind of thing it is), then passed through the prism (which splits it into every facet it carries), and only then held in the mirror (what the curator knows) and shown at the window (what you see).
The prism is simply the full registry of thirteen facets — thirteen honest ways to cut a library — and, for each, where its values come from. That last part turns out to matter more than it sounds.
Nine of the thirteen facets are given. The book already carries them from the filing step — the prism just reads them off, instantly, at no cost. But three facets are discovered, and they are the interesting ones. Nobody ever recorded that a shelf of books is really about Amazon, or that a cluster of them all descend from Darwin, or that a dozen unrelated books all quietly argue “grit beats gift.” That structure is latent — real, but written down nowhere.
Here is the trap we avoided. You cannot classify a book against a list of themes that doesn’t exist yet. The obvious shortcut is to borrow a ready-made list from the world — a published ontology of themes — and file against that. We tested it. A world ontology held almost none of this library’s signature themes: the ideas this particular collection circles are invisible to a generic vocabulary. So the vocabulary has to be grown from the library itself — churned out of the books, not imposed on them.
With the prism assembled, every book is passed through it in a single step we call Slot. Out comes one flat list of memberships — an edge list keyed by the book’s id. A book in five clusters is simply five rows, and each row carries its own grounding: the evidence for why the book belongs there. A cluster’s size is never stored — it is just how many rows point at it — so it can never drift out of sync with the truth again.
Two rules make this trustworthy. No member without grounding — every edge has to point at its evidence, so the whole tangle of checking steps collapses into one cheap question: is this complete and grounded? And it is reproducible — the same library run twice gives the same memberships, while the minted identities persist, which is what makes re-running the whole analysis safe instead of a hand-stitch.
One worked example: Leonardo da Vinci slots into twelve memberships across ten facets — two disciplines, a place, a period, a form, a voice, a reading difficulty, an era, the entity Leonardo, and two themes — every one of them backed by evidence.
| Before — the tangle | After — the prism | |
|---|---|---|
| Defining a cluster | three parts of the code, each with its own idea | defined once, with an id minted a single time |
| Membership | reassembled from disk on every read | one stored edge list, keyed by book id |
| Size & core | meant different things on different paths | derived from the edges — can’t drift |
| A book’s home | forced onto one shelf (a tree) | on every shelf it belongs to (a lattice) |
| Hidden structure | forced into a fixed list, or lost | grown from the corpus, and grounded |
| Re-running it | stitch three producers together by hand | one reproducible pass — cheap and safe |
The three discovered facets are the part of the prism you can now walk through directly. Churning the whole library turned up 73 people & works, 47 intellectual roots, and 504 recurring themes — 624 shelves the collection never had a way to show. They are additive: the hand-curated clusters are left exactly as they were, and these sit alongside them as a found dimension, never over them.
Browse the discovered shelves →