Before this: Merge on evidence, review the rest
The idea
Some pairs can't be decided by rules: same name, different emails; missing email. Put them in a review queue.
Show the reviewer both records, which fields agree, which conflict, and the rule that sent them.
Store decisions so the same pair isn't reviewed again and future runs reuse them.
Worked example
Input: record without email
- Visual
Add step → Require a value → email → reason needs_review
- SQL (DuckDB)
CASE WHEN email IS NULL THEN 'needs_review' END
- pandas
review = df[df["email"].isna()]
Result: The record waits for a reviewer instead of being merged or dropped
Common mistakes
- Auto-merging uncertain pairs.
- Dropping unreviewed records.
- Not storing decisions.
Check yourself
What should a reviewer see?
Both records, agreeing and conflicting fields, and why they were queued.
Practice it
Resolve customer records by normalized email.