Module: PartyResearch

Defined in:
app/services/party_research/orchestrator.rb,
app/services/party_research/adapters/base.rb,
app/services/party_research/auto_enricher.rb,
app/services/party_research/adapters/apollo.rb,
app/services/party_research/adapters/gemini.rb,
app/services/party_research/finding_applier.rb,
app/services/party_research/adapters/google_places.rb,
app/services/party_research/adapters/people_data_labs.rb

Overview

People Data Labs (PDL) adapter — identity resolution for individuals AND
small-business firmographics, recommended by the team's enrichment
vendor review (Basecamp todo #9497751860). PDL's coverage complements
our existing adapters:

  • Apollo skews enterprise, missed Bob Electric and Metropolitan
    Paving entirely; PDL Company Enrichment returned both with
    founded year, LinkedIn URL, size, summary, and a website we
    didn't have on file.
  • PDL Person Enrichment takes a personal email and returns
    name + social profiles, when the person is in their ~3B index.

Strategy by party type:

  • Contact (always a person) → /v5/person/enrich
  • homeowner Customer (also a person) → /v5/person/enrich
  • company Customer → /v5/company/enrich

Anchor priority:

  • Person: email > phone > (name + locality)
  • Company: domain (derived from contact emails) > name

Trial-tier caveat: PDL redacts the actual values of phone numbers and
emails on the Person Starter bundle (returns booleans like
phone_numbers: [true] instead of the real number). We only surface
fields that come back as real strings — name corrections, social
URLs, country-level location, company firmographics — and drop
"this field exists but the value is hidden" rows since they're not
actionable.

Auth: X-Api-Key header. Credential at
Heatwave::Configuration.fetch(:peopledatalabs, :api_key).

Defined Under Namespace

Modules: Adapters Classes: AutoEnricher, FindingApplier, Orchestrator