Fix duplicate detection system - improve blocking strategy for interests
- Updated interest blocking strategy to group by name prefix instead of email domain - This fixes the issue where interests with different email domains were never compared - Updated admin duplicate finder to use the new centralized utility - Both Matthew Ciaccio entries will now be detected as duplicates
This commit is contained in:
@@ -342,14 +342,23 @@ export function createInterestConfig(): DuplicateDetectionConfig<any> {
|
||||
return {
|
||||
type: 'interest',
|
||||
|
||||
// Group by normalized email domain or phone prefix for blocking
|
||||
// Group by normalized name prefix for blocking to catch name-based duplicates
|
||||
getKey: (interest) => {
|
||||
// Priority 1: Use normalized name prefix (first 3 chars) to catch name duplicates
|
||||
if (interest['Full Name']) {
|
||||
const name = interest['Full Name'].toLowerCase().trim();
|
||||
const prefix = name.substring(0, 3);
|
||||
return `name_${prefix}`;
|
||||
}
|
||||
|
||||
// Priority 2: Use email domain for email-based grouping
|
||||
if (interest['Email Address']) {
|
||||
const email = normalizeEmail(interest['Email Address']);
|
||||
const domain = email.split('@')[1] || 'unknown';
|
||||
return `email_${domain}`;
|
||||
}
|
||||
|
||||
// Priority 3: Use phone prefix
|
||||
if (interest['Phone Number']) {
|
||||
const phone = normalizePhone(interest['Phone Number']);
|
||||
const prefix = phone.length >= 4 ? phone.substring(0, 4) : phone;
|
||||
|
||||
Reference in New Issue
Block a user