A graph worth walking
Most memory systems mention a knowledge graph the way restaurants mention a wine list: it exists, it's in the back, nobody maintains it. Ours was drifting the same way — until we measured it. The founder's own graph held “Claude Code” as four separate entities, split across type spellings (“Software”, “Tool”, “SoftwareTool”…). A graph with four copies of the same thing cannot answer “what do I know about X”. We spent a week making the graph a first-class surface. Five changes:
1 · Entity resolution that ignores type spelling. Exact-name matching across types, embedding match under a 0.15 cosine threshold, and a retroactive merge pass — every merge a supersession, so the graph consolidates without losing history. The founder's graph went from 2,976 nodes to 2,781; our test corpus from 24,872 to 22,583. Every removed node was a duplicate.
2 · Entity pages.“Everything about X” as one call: the entity, its facts, its relationships, its timeline. In the portal, click any node and get the page.
3 · Entity-fused retrieval.When a query links to entities, retrieval pulls each linked entity's facts alongside the vector hits. Honest result: our LoCoMo score moved from 74.2 to 74.1 — flat. We shipped it anyway and republished the lower number, because the feature helps entity-centric questions the benchmark barely asks, and the whole point of a public methodology is that we don't get to keep the flattering number.
4 · Community summaries. Related entities cluster into communities — label propagation, then recursive splitting when one community swallowed 1,812 nodes — and each community gets a summary fact, rewritten nightly. Here the measurement said something harder: broad questions improved, but the aggregate score dropped, because summaries crowded specific facts out of the token budget on pointed questions. That result changed the product instead of the website — the summaries stayed out of default serving until a gate decides when they belong. The number stays in our lab notes.
5 · A canvas you can walk. The whole graph renders in WebGL in the portal — search, community colors, recency dimming. Not because it demos well (it does) but because our working rule is that a memory you cannot inspect is a memory you cannot trust, and that rule has to hold at 22,000 nodes, not just 22.
Two of these five moved a benchmark. All five changed what the product can answer. That gap — between what benchmarks measure and what memory is for — is most of what we've learned this summer.