feat(peopledatalabs): add People Data Labs integration#4513
feat(peopledatalabs): add People Data Labs integration#4513waleedlatif1 merged 13 commits intostagingfrom
Conversation
Add 11 PDL operations: person enrich/identify/search/bulk, company enrich/search/bulk/clean, location/school cleaners, and autocomplete. All endpoints, params, and response shapes verified against official PDL docs (scroll_token pagination, top-level likelihood on company enrich, per-item likelihood on bulk company, full autocomplete field enum). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Introduces 11 new PDL tools (person/company enrich, search, identify, bulk enrich, cleaners, autocomplete) with typed request/response shaping, consistent Updates docs and landing/integrations metadata to list the new tool, adds a Reviewed by Cursor Bugbot for commit 80f1279. Configure here. |
Greptile SummaryThis PR adds a complete People Data Labs integration with 11 operations spanning person and company enrichment, search, bulk processing, cleaner utilities, and field autocomplete. The implementation is thorough: API-key auth flows correctly through
Confidence Score: 5/5Safe to merge — all tool-to-block parameter mappings are correct, auth is properly scoped, and the cross-operation field-reset logic is solid after prior iterations. The integration is a clean additive change with no modifications to existing tools. All prior review findings have been addressed. The two remaining items are a misleading description on a dual-purpose input and missing pre-flight validation in cleaner tools — neither causes silent wrong results or data loss. No files require special attention. The company_clean.ts and school_clean.ts body builders are worth a second look for the missing empty-input guard, but this is non-blocking. Important Files Changed
Reviews (11): Last reviewed commit: "fix(peopledatalabs): isolate company `na..." | Re-trigger Greptile |
|
@cursor review |
|
@greptile |
|
@cursor review |
…peration - min_likelihood now only shows for pdl_person_enrich (Person Identify ignores it) - ticker, pdl_id, company_location now only show for pdl_company_enrich (Company Cleaner only accepts name/website/profile) Addresses Greptile P1 review on PR #4513.
|
@greptile |
|
@cursor review |
Param renames (company_profile→profile, company_location→location, school_*→*, bulk_*_requests→requests, autocomplete_size→size, etc.) now run only when the matching operation is selected, and stale alternate-operation values are stripped from the request. This prevents values left over from a prior operation switch from leaking into the current API call (e.g. a company LinkedIn URL overwriting a person profile, or a stale search size overwriting autocomplete size). Addresses Cursor Bugbot review on PR #4513.
|
@greptile |
|
@cursor review |
The PeopleDataLabsIcon was hardcoded to white, leaving it invisible on light backgrounds when rendered outside its bgColor container (e.g., search results, menus, docs). Switch to currentColor so it inherits the surrounding text color. Addresses Cursor Bugbot review on PR #4513.
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit f2a3c9f. Configure here.
…te) per operation The block has subBlocks whose raw IDs collide with PDL API param names (profile, location for person; name, website for company). Their values persist across operation switches even though the UI hides them, so a person LinkedIn URL could leak into a Company Enrich request, etc. Reset these shared targets and repopulate them only from inputs that belong to the active operation. Addresses Greptile P1 review on PR #4513.
|
@greptile |
- person_identify: short-circuit on PDL 404 (no-match), matching the person_enrich pattern - company_search: drop unsupported `dataset` param (PDL company search docs do not list it) - block: expose `min_likelihood` for `pdl_company_enrich` (PDL Company Enrichment supports min_likelihood) - location_clean: surface `subregion`; drop phantom `latitude`/ `longitude` (PDL only returns `geo` as a "lat,lon" string) - school_clean: surface `domain` and `location_continent` from the nested `location` object - docs icon: switch fill to `currentColor` so the icon renders on light backgrounds
|
@greptile |
|
@cursor review |
The shared `name` reset at the top of `tools.config.params` was only repopulated for the company-side operations, so any programmatic `name` input to `pdl_person_enrich` or `pdl_person_identify` was silently dropped. Both PDL endpoints accept `name` as a full-name match parameter.
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 092dfba. Configure here.
|
@greptile |
|
@cursor review |
Add the `name` parameter to `PdlPersonEnrichParams`, the tool's params definition, and the URL builder. PDL Person Enrichment accepts `name` as a full-name match alternative to first_name + last_name; without it, programmatic `name` input was silently dropped before reaching the API.
|
@greptile |
|
@cursor review |
Rename Company Name subBlock id from `name` to `company_name` so a stale company value can't leak into Person Enrich/Identify when the user switches operations. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 80f1279. Configure here.
`pdl_clean_location` and `pdl_clean_school` were only restoring values from UI subBlock IDs (`clean_location_input`, `school_*`). Programmatic callers using the declared `location`/`name`/`website`/`profile` inputs had their values dropped after the shared-field reset. Add fallbacks so both UI and programmatic inputs flow through. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…lete text - Company Enrich and Clean Company now fall back to programmatic `params.profile` / `params.location` when the UI-scoped `company_profile` / `company_location` are absent. Mirrors the fallback pattern already used for `name`. - Autocomplete `text` subBlock is now required when operation is autocomplete — PDL requires it for nearly all field values. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Summary
X-Api-Key. New block usesAuthMode.ApiKey, brand color#4831C3, and the official PDL icon.scroll_tokenpagination (notfrom), top-levellikelihoodon company enrich, per-itemlikelihoodon bulk company, full autocomplete field enum (location_nameover deprecatedlocation), correct dataset values, cleaners as POST, and 404-as-no-match handling.Test plan
match_scorescroll_tokenfor paginationmetadatalikelihoodscroll_tokenlikelihoodmatched: falseon 404)metapayload forcompanyfield