Returns candidate duplicate pairs grouped by either phone (last 10 digits of the normalized number match) or name (fuzzy similarity > 0.8, Levenshtein-like). Each group carries a matchType and a confidence hint. Run this after large imports before calling /merge — phone matches are high-confidence, name matches produce false positives for common names and should always be reviewed by a human.