glossary//entity-resolution

memory

entity resolution

Entity resolution identifies which raw extracted facts refer to the same real-world thing and mints a canonical node for it, turning loose sentences into a Person or a Project.

Sep 2026

The graph is the structure. Resolution is the process that fills it and keeps it honest, and the two fail in different ways. A graph fails by being wrong about the world. Resolution fails by minting a node too eagerly or by skipping one, and you find out later when a query misses.

It is not deduplication. Resolution creates a canonical node from raw facts that had none. Dedup collapses two nodes that already exist and turn out to be the same.

What the worker actually does

Structured memory graph workers describes the version that runs nightly in Recallatron. Raw extraction is blunt. When the hourly Gmail intake reads a message and pulls out a durable fact, what lands in the graph is a Fact-sentence entity such as "Robin is working on Nutrifax." That is true and worth keeping, but it is not yet a Person node or a Project node. It is a sentence.

The worker reads the Fact entities, calls the model with an identify-only prompt, and receives a judgment about which real-world things those facts refer to. TypeScript then mints the Person and Project nodes. The LLM identifies; the code executes. Minting uses thresholds: a Person node needs two supporting facts, a Project needs three, a generic Fact node needs three. Every node and edge the worker creates carries a maintainer:resolution source tag so its output stays separable from anything a human or another worker wrote. Resolution is additive only. It creates nodes. It never deletes one.

Resolution is not deduplication

Dedup is the next worker in the same nightly sequence. The order matters: dedup runs before autoconfirm, because you must never promote an entity that is about to be merged away. Dedup itself runs in two phases. The first is pure code that groups entities by exact type and label match and pre-merges them with no model call. The second is the near-match pass, the only one that spends a model call.

The questions the two steps answer are different. Resolution answers "what real thing is this sentence about." Dedup answers "are these two nodes the same node."