It's deterministic math: when two observations agree, our confidence goes up. If they conflict, confidence drops. Over time, a decay function lowers confidence as facts get older.
It's a waterfall sequence of hard identifiers such as email, LinkedIn URL, domain, and CRM ID and it only accepts exact matches and does not use fuzzy search. This approach works for most situations.
If there is still no match, the system creates a new entity instead of making an incorrect guess.
The most recent observation is used as the claim. If there are conflicting observations, each one lowers the confidence score, but the newest still takes priority. The only exception is that CRM fields follow their own priority order. The human-entered data comes first, followed by enriched data, then inferred data. For all other cases, the newest observation is used.
CRMs are built for humans to update records. Nous is built for AI agents to read and write context. It stores observations, derives claims, tracks confidence and freshness, and gives agents one API instead of making them coordinate multiple tools.
It's open source under the AGPL license, so you can self-host it. Happy to discuss identity resolution, the epistemic model (observations to entities to claims), and answer questions.