Skip to content

Commit 3a6782b

Browse files
fix(enrichment): drop Dropcontact from the phone-number cascade
Dropcontact is an email/company-data enrichment service, not a phone-discovery provider — its phone/mobile_phone fields are unreliable and were surfacing firmographic data (an employee-count range like "5000-20077") as the phone. Keep the two purpose-built phone finders (LeadMagic find_mobile, Datagma find_phone); Dropcontact stays in the work-email and company cascades where its data is reliable. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 33dc8dc commit 3a6782b

2 files changed

Lines changed: 4 additions & 41 deletions

File tree

apps/sim/enrichments/phone-number/phone-number.test.ts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ describe('phone-number enrichment cascade', () => {
2323
'prospeo',
2424
'leadmagic',
2525
'datagma',
26-
'dropcontact',
2726
])
2827
})
2928

@@ -102,20 +101,4 @@ describe('phone-number enrichment cascade', () => {
102101
expect(p.mapOutput({ phone: null })).toBeNull()
103102
})
104103
})
105-
106-
describe('dropcontact', () => {
107-
const p = provider('dropcontact')
108-
it('enriches via name+company and prefers mobile_phone', () => {
109-
expect(p.toolId).toBe('dropcontact_enrich_contact')
110-
expect(p.buildParams(nameDomain)).toEqual({ full_name: 'John Doe', website: 'acme.com' })
111-
expect(p.buildParams(linkedinOnly)).toEqual({
112-
full_name: 'John Doe',
113-
linkedin: 'https://linkedin.com/in/johndoe',
114-
})
115-
expect(p.buildParams({ companyDomain: 'acme.com' })).toBeNull()
116-
expect(p.mapOutput({ mobile_phone: '+1555', phone: '+1999' })).toEqual({ phone: '+1555' })
117-
expect(p.mapOutput({ phone: '+1999' })).toEqual({ phone: '+1999' })
118-
expect(p.mapOutput({})).toBeNull()
119-
})
120-
})
121104
})

apps/sim/enrichments/phone-number/phone-number.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import type { EnrichmentConfig } from '@/enrichments/types'
77
* Phone Number enrichment. Finds a contact's phone number from a full name plus
88
* any available identifiers (company domain, LinkedIn URL) via a waterfall:
99
* People Data Labs (name match) → Wiza reveal → Findymail (LinkedIn) → Prospeo
10-
* mobile → LeadMagic (LinkedIn) → Datagma (LinkedIn) → Dropcontact (name+company).
11-
* Each provider opportunistically uses whatever identifiers the row provides and
12-
* self-skips when it has none usable, so adding more inputs widens coverage
13-
* without reordering. First phone wins; all providers support hosted keys.
10+
* mobile → LeadMagic (LinkedIn) → Datagma (LinkedIn). Each provider
11+
* opportunistically uses whatever identifiers the row provides and self-skips
12+
* when it has none usable, so adding more inputs widens coverage without
13+
* reordering. First phone wins; all providers support hosted keys.
1414
*/
1515
export const phoneNumberEnrichment: EnrichmentConfig = {
1616
id: 'phone-number',
@@ -137,25 +137,5 @@ export const phoneNumberEnrichment: EnrichmentConfig = {
137137
return phone ? { phone } : null
138138
},
139139
}),
140-
toolProvider({
141-
id: 'dropcontact',
142-
label: 'Dropcontact',
143-
toolId: 'dropcontact_enrich_contact',
144-
buildParams: (inputs) => {
145-
const fullName = str(inputs.fullName)
146-
const website = normalizeDomain(inputs.companyDomain)
147-
const linkedin = str(inputs.linkedinUrl)
148-
if (!fullName || (!website && !linkedin)) return null
149-
return filterUndefined({
150-
full_name: fullName,
151-
website: website || undefined,
152-
linkedin: linkedin || undefined,
153-
})
154-
},
155-
mapOutput: (output) => {
156-
const phone = str(output.mobile_phone) || str(output.phone)
157-
return phone ? { phone } : null
158-
},
159-
}),
160140
],
161141
}

0 commit comments

Comments
 (0)