AI merge review

After the engine clusters duplicates, an AI agent reviews each group, assigns a verdict and confidence, explains it in plain language, and can override the engine.

This is the part that makes the tool defensible instead of a black box. The matching engine proposes which rows are duplicates; the AI agent reviews each of those proposals, decides whether it agrees, and tells you why in one plain sentence. When it disagrees, it overrides the engine.

What the agent returns per group

For every duplicate group, the agent returns three things:

  • Verdict — one of:
    • confirmed — the rows really are the same entity.
    • uncertain — the evidence is thin or mixed; a human should decide.
    • rejected — the engine over-merged; these are different entities.
  • Confidencehigh, medium, or low.
  • Explanation — one short, plain-language sentence a non-technical reader can follow, e.g. "Same company — only the punctuation and casing differ" or "Two different people who share a last name and city."

Rejected = the agent overriding the engine

A rejected verdict is the agent stepping in to undo a merge the deterministic engine proposed. That matters: it means a real decision is being made in production by the AI, not just a label being printed. The deterministic engine optimizes for catching duplicates (recall); the agent acts as the precision backstop, throwing out the merges that went too far.

"Needs review"

In the results, rejected and uncertain groups are floated to the top under a Needs review heading — rejected first (the overrides), then uncertain. The confirmed groups are still listed below under All groups. The idea is that your attention goes straight to the handful of decisions that actually need a human, not to the hundreds the agent was confident about.

What "reviewed" means (and the honest limits)

Two limits are worth being upfront about:

  • Only multi-row groups are reviewed. A singleton (a row with no duplicate) needs no explanation, so it's never sent to the agent.
  • There's a per-request review cap. To keep cost and latency bounded, only the first EXPLAIN_MAX_CLUSTERS duplicate groups are sent to the model (50 by default). Any beyond that come back marked not reviewed rather than silently treated as confirmed, so coverage is always honest. The response tells you exactly how many were reviewed (reviewed_count) out of the total (total_clusters).
Graceful degradation

The agent never takes down a run. If the model provider is unavailable or returns something unparseable, each affected group degrades to a neutral "explanation unavailable" verdict and the results panel says agent review is unavailable. You still get the engine's groups and a clean file.

For the exact request and response shapes, see the explain API reference.

Was this page helpful?
Edit this page on GitHub