Skip to content

Overrides

No matching algorithm is perfect. A 99% accurate engine still means 1 in 100 decisions is wrong — and at scale, that's thousands of incorrect merges, missed links, or stale field values sitting in your golden records. Overrides are how humans correct the machine.

An override is a persistent, audited instruction that tells the engine: "I know better than the algorithm here." It takes precedence over every automated decision — matching rules, confidence scores, survivorship strategies — and it survives across reconciliation runs until explicitly revoked.

Overrides are what make Kanoniv production-grade. Without them, you'd have to either accept every automated decision blindly or re-run the entire pipeline to fix a single mistake. With overrides, your data team can make surgical corrections in real time, and the engine respects those corrections going forward.


Override Types

Force Merge

The engine missed a match. Maybe two records have different email domains, or the confidence score landed just below the threshold. Your team confirmed they're the same person — force the merge.

When to use: False negatives. The engine didn't merge records that should be merged.

What happens: Both external entities now link to the same canonical. Survivorship re-runs to produce an updated golden record. Future lookups for either external ID return the same canonical.

Force Split

The engine merged two records that are actually different people. This happens when people share an email alias ([email protected]), have the same name at the same company, or when a recycled phone number causes a false match.

When to use: False positives. The engine merged records that shouldn't be merged.

Example: Two "John Smiths" at Acme - one is CFO, one is a sales rep. The engine merged them because name + company matched. A split override separates them back into individual canonicals.

What happens: A new canonical entity is created for the split-out record. The original canonical's golden record is recomputed without the removed record's data.

Lock

After splitting two records, the engine might re-merge them on the next reconciliation run — they still share the same fields that caused the false positive. A lock prevents this permanently.

When to use: After a split, or when you know two records are different entities despite scoring above the match threshold.

What happens: The engine skips this pair during matching, even if the confidence score would be above the merge threshold. The lock persists across all future reconciliation runs until explicitly deleted.

Split + Lock pattern

Splitting without locking is usually a mistake. If the engine merged them once, it will try to merge them again. Always follow a split with a lock on the same pair.

Field Override

Pin a specific field value in the canonical record. This takes precedence over all survivorship strategies — even if a higher-priority source reports a different value.

When to use: A customer contacts support to correct their email, a data quality issue in a source system is polluting the golden record, or a specific field needs to be frozen while a source is being migrated.

Example: A customer calls support to say their correct email is [email protected], but Stripe has an old one and CRM has a typo. A field override pins the correct value.

What happens: The golden record's email field is pinned to "[email protected]" regardless of what any source system reports. This survives across reconciliation runs. The field provenance will show this value came from a manual override, not a source.


Override Precedence

Overrides form a strict priority hierarchy:

Field Override  >  Lock  >  Merge/Split  >  Engine Decision  >  Default
  1. Field overrides always win in survivorship — no source can overwrite a pinned value
  2. Lock overrides prevent the engine from matching a specific pair
  3. Merge/split overrides are applied before the engine runs its matching pass
  4. Engine decisions (auto-merge, auto-reject) apply to everything else

This means you can stack overrides: force-merge two records, lock them so they stay merged, AND pin specific field values — all on the same canonical entity.


Real-World Workflow

Here's how overrides typically fit into a data team's daily workflow:

1. Engine runs reconciliation

The engine processes 50,000 records and produces:

  • 18,000 auto-merges (above match threshold)
  • 340 review-queue items (between review and match thresholds)
  • 31,660 rejects (below review threshold)

2. Data team reviews the queue

Your team works through the 340 review items - records where the engine wasn't confident enough to auto-merge but suspects a match.

3. Team makes decisions

For each review item, the team either confirms the merge (creates a merge override) or rejects it (split + lock to prevent re-merge).

4. Overrides persist

On the next reconciliation run, the engine respects all existing overrides:

  • Merged pairs stay merged
  • Split pairs stay split
  • Locked pairs are skipped during matching
  • Pinned field values override survivorship

No re-work. No repeated decisions. The system learns from your team's corrections.


Override Lifecycle

Created  →  Active  →  Superseded (or Deleted)
  1. Created — User creates override via API or review queue
  2. Active — Applied to all future reconciliation runs
  3. Superseded — Replaced by a newer override on the same entities (old one is preserved in audit trail)
  4. Deleted - Explicitly revoked

Audit Trail

Every override is immutably logged - created overrides are never physically deleted, even when revoked. When an override is replaced, the old one is marked as superseded but preserved.

This audit trail is critical for compliance - you can always answer "who changed this record, when, and why?"


Best Practices

  1. Always provide reasons - "Same customer" is useless 6 months from now. Write "Same customer - confirmed via LinkedIn profile, uses acme.com for work and acme.io for personal billing."

  2. Split + Lock together - If the engine merged them once, it will try again. Always lock after splitting.

  3. Use field overrides sparingly - They bypass survivorship entirely. If a source is consistently wrong, fix the source rather than pinning every field.

  4. Review before reconciliation - Check active overrides before triggering a new reconciliation run. Stale overrides can mask data quality improvements.

  5. Track override volume - A high override rate (> 5% of merges) usually means your matching rules or thresholds need tuning. Overrides should be exceptions, not the norm.

Managing overrides programmatically

Kanoniv Cloud provides a full overrides API for creating, listing, bulk importing, and auditing overrides at scale.

The identity and delegation layer for AI agents.