March 2025 Release Notes (v29.2)

Release NameDataset VersionPublish Date
March 2025v29.203/18/2025

Welcome to our March 2025 release notes!

This month, we’re rolling out key improvements to make our data more accurate, comprehensive, and easier to use.

Here’s what’s new:

Dive into the details below, or jump to a specific section using the table of contents.

Table of Contents

📣 Key Announcements

❗Breaking Changes (Going Live This Month)

🚀 Data Updates

🛠 Improvements and Bug Fixes


📣 Key Announcements

Schema Changes

Sorted Arrays (Person Schema)

This month, we completed an update to our Person Schema: we now apply deterministic sorting logic for each of the array-typed fields in our Person Schema. This change is meant to surface the most relevant array elements first. For example, the experience array in each Person record is now sorted so that primary work experiences are first in the array with the remaining experiences being sorted by date.

The high-level goals for the sorting logic on each field are to:

  1. List any primary values first in the array
  2. Logically order the remaining values to improve the user experience when displaying these array fields

The exact sorting logic for each array-typed field in the Person Schema is shown in the table below:

📘

Refer to Person Schema for Updated Sorting Logic Moving Forward

As this is the first release of sorting logic for our array fields, some of the definitions or logic may change in the next few months as we get customer feedback. Moving forward, please refer to the entries on the Person Schema page for the most up-to-date definition on the current sorting logic for each field. The table below will not be maintained and will be preserved for historic documentation purposes instead.

FIELD NAMEFIELD TYPESORT ORDER
certificationsArray [Object]Certifications are sorted first by start_date, then by end_date and finally by name, all in reverse order (most recent first, Z→A)
countriesArray [Enum (String)]Countries are sorted by location order, with any duplicate countries removed.
educationArray [Object]Education entries are sorted first by start_date, then by end_date. If dates are identical, then sorting occurs by [school.name](http://school.name/), followed by majors, minors and degrees, all in reverse order (most recent first, Z→A)
emailsArray [Object]Emails are sorted first by last_seen, then by first_seen, email, all in reverse order (most recent first, Z→A)
experienceArray [Object]Experience entries are sorted with the primary experience first. The remaining entries are then sorted by start_date, end_date, [company.name](http://company.name/), [title.name](http://title.name/), all in reverse order (most recent first, Z→A)
experience.title.levelsArray [Enum (String)]Title levels are sorted from most important to least important based on the following ranking:cxo, owner, vp, director, partner, senior, manager, entry, training, unpaid
interestsArray [String]Interests are sorted alphabetically (from A→Z)
job_historyArray [Object]Job history entries are sorted by start_date, end_date, [company.name](http://company.name/), [title.name](http://title.name/), all in reverse order (most recent first, Z→A)
languagesArray [Object]Languages are sorted by proficiency first, followed by name, all in reverse order (highest proficiency first, Z→A)
location-Locations are sorted by primary location first. The remaining locations are sorted by first_seen, last_seen, location_name, street_address, then address_line_2 in descending order (most recent first, Z→A)
location_namesArray [String]Location names are sorted by location order with duplicate names removed
name_aliasesArray [String]Name aliases are sorted with the primary alias first. The remaining aliases are sorted by num_sources, last_seen, first_seen, full_name`, all in reverse order (highest first, most recent, Z→A)
personal_emailsArray [String]Personal emails are sorted with the recommended personal email first. The remaining emails are sorted by last_seen, then by first_seen, email, all in reverse order (most recent first, Z→A)
phone_numbersArray [String (Phone)]Phone numbers are sorted with any mobile phone numbers first. The rest of the array is sorted by num_sources, last_seen, first_seen, all in reverse order and using the E.164 format (highest first, most recent first)
phonesArray [Object]Phones are sorted with any mobile phone numbers first. The rest of the array is sorted by num_sources, last_seen, first_seen, all in reverse order and using the E.164 format (highest first, most recent first)
possible_birth_datesArray [String (Date)]Possible birth dates are sorted by num_sources, last_seen, first_seen, birth_date, all in reverse order (highest first, most recent first)
possible_emailsArray [String (Date)]Possible emails are sorted by last_seen, first_seen, email, all in reverse order (most recent first, Z→A)
possible_location_namesArray [String]Possible locations are sorted by first_seen, last_seen, [location.name](http://location.name/), all in reverse order (most recent first, Z→A)
possible_phonesArray [Object]Possible phones are sorted by num_sources, last_seen, first_seen, all in reverse order and using the E.164 format (highest first, most recent first)
possible_profilesArray [Object]Possible profiles are sorted first by return status codes (200 > unknown > 404). The array is then sorted by number of profiles globally, last_seen, first_seen, username, id, all in reverse order (highest first, most recent first, Z→A)
possible_street_addressesArray [Object]Possible street addresses are sorted by first_seen, last_seen, [location.name](http://location.name/), location.street_address, location.address_line_2, all in reverse order (most recent first, Z→A)
profilesArray [Object]Profiles are sorted with the primary profiles listed first (facebook, linkedin, twitter, and github, in that order). The rest of the array is then sorted by status codes (200 > unknown > 404), number of profiles globally, last_seen, first_seen, username, id, all in reverse order (highest first, most recent first, Z→A)
regionsArray [String]Regions are sorted by location order, with any duplicate regions removed.
skillsArray [String]Skills are sorted alphabetically (from A→Z)
street_addressesArray [Object]Street addresses are sorted by location order

❗Breaking Changes (Going Live This Month)

  • There are no breaking changes going live this month, instead see the section below for upcoming breaking changes going live in the upcoming months.

⚠️ Upcoming Breaking Changes

🚧

Upcoming Breaking Changes

Upcoming breaking changes in future versions may impact your current processes. We are announcing them here to provide ample time for you to adjust your processes accordingly.

⚠️ Snowflake Listing Migration

Change expected in: v30.0 / April 2025

Previous Announcements: v29.0 / Jan. 2025, v29.1 / Feb. 2025

Products Impacted: Snowflake Listings

In April 2025, we will be migrating all Snowflake customers with multiple listings to a single listing per customer.

Why this change?
Historically, Snowflake customers receiving multiple data entities (i.e. both Person and Company datasets) were assigned separate listings in Snowflake for each entity. As of August 2024, we transitioned all new customers to a single-listing approach that improved our ability to support and deliver customer data. By April 2025, we will be migrating our remaining Snowflake customers to a single listing.

Options for Migration
For customers with multiple listings, there are 2 options for migrating to a single listing:

  1. New Listing (recommended, default): PDL creates a new listing for the customer, and moves all data from the pre-existing listings into the new listing. All pre-existing listings will be removed.

    Customer action required:
    Customers must accept the new listing and update their downstream integrations to point to the new listing. If no action is taken, this will be the default option applied.

  2. Merge and Deprecate: Customers can choose to keep one of their existing listings (e.g. Person) and the data from the other listing (e.g. Company) will be moved over to the first listing. Once the data has been moved over, PDL will remove the second listing.

    Customer action required:
    Customers must confirm which listing they want to keep and ensure their downstream dependencies are updated accordingly before the second listing is removed.

As mentioned above, we strongly recommend the New Listing approach (option 1) for customers as it ensures proper configuration and consistency across the transition. If no action is taken, customers will automatically be migrated using the New Listing approach. To begin your migration process or specify your desired migration approach, please connect with your Technical Services and Customer Account team.

⚠️ Deprecation of Skill Enrichment API

Change expected in: v30.0 / April 2025

Previous Announcements: v29.0 / Jan. 2025, v29.1 / Feb. 2025

Products Impacted: Skill Enrichment API

Products Impacted
Skill Enrichment API

In April 2025, we will be removing the Skill Enrichment API.

Why this change?
The Job Title and Skill Enrichment APIs were designed to help improve the user experience when working with our Person Search API. However, based on historical usage patterns we’ve decided to reprioritize our efforts on these APIs. Specifically, we will be sunsetting the Skill Enrichment API, which has had limited usage, in favor of improving our Job Title Enrichment API (details of this will be announced in a future release).

For any questions, please contact your Customer Account Team. If you have feedback or product suggestions, please share them in our Roadmap Feature Request Board!


🚀 Data Updates

📘

March 2025 (v29.2) is a Minor Release

As a reminder, March 2025 is a minor release. This means that the information reported below is based on the last one month of updates (rather than the 3 months of updates we typically report for the major releases).

Freshness

The number of jobs and locations verified in our datasets over the past month (based on the job_last_verified and location_last_updated fields).

DatasetGeographyFieldRecords Updated
ResumeGlobalexperience201,179,754
ResumeGloballocation322,326,150
ResumeUnited Statesexperience52,960,030
ResumeUnited Stateslocation75,712,242

Job Changes

The number of person records where the primary job experience changed in our Person Dataset over the past month (based on the job_last_changed field).

DatasetGeographyRecords Updated
ResumeGlobal282,997
ResumeUnited States136,139

Coverage (Full Stats: Person, Company)

Resume Dataset

LinkageCoverage in v29.1Coverage in v29.2Increase (%)
total_records737,689,989751,349,4711.85%
experience.location_names186,823,042226,502,95521.24%
headline61,893,38874,663,57620.63%
location_locality439,001,157491,161,75611.88%
location_names444,085,756495,057,39311.48%
job_summary73,561,90665,209,023-11.35%

API Dataset

LinkageCoverage in v29.1Coverage in v29.2Increase (%)
total_records2,461,673,0172,473,230,0640.47%
headline61,927,97774,708,28020.64%
experience.location_names284,171,791329,369,82615.91%
education.school.location.locality245,448,315283,098,19215.34%

Email Dataset

LinkageCoverage in v29.1Coverage in v29.2Increase (%)
total_records635,947,701634,528,966-0.22%

Mobile Phone Dataset

LinkageCoverage in v29.1Coverage in v29.2Increase (%)
total_records486,275,248486,065,010-0.04%

Company Dataset

LinkageCoverage in v29.1Coverage in v29.2Increase (%)
total_records71,479,38271,481,5970.003%
affiliated_profiles281,790196,015-30.44%
location.street_address18,962,88045,998,672142.57%
linkedin_follower_count19,603,41130,391,49755.03%
linkedin_employee_count24,068,31532,253,52934.01%
industry45,770,56753,934,35117.84%
location.locality50,342,72956,645,64312.52%
location.geo49,687,65855,383,93711.46%
founded13,602,88715,108,34811.07%

Commentary

  • We saw significant increases in our coverage of locations across both our Person and Company datasets as a result of our location cleaner improvements. See Improvements below for more details.
  • We saw an additional 20% increase in coverage for our headline field in our Person datasets this month. We expect to see further coverage increases as we continue to backfill this field over the coming months.
  • We saw an 11% drop in our coverage of job_summaries in our Resume dataset as a result of removing an inaccurate data source. See Bug Fixes below for more details.
  • We saw increases in our industry, linkedin_follower_count, linkedin_employee_count, and founded fields as a result of improvements in our sourcing process. See Improvements below for more details.
  • We saw a drop in our coverage of affiliated_profiles as a part of the same sourcing improvements in the previous bullet. Note that despite seeing a 30% drop in coverage here, the absolute number of profiles dropped is <90,000, since this was a field we currently have low fill rates for. We are looking at approaches to revitalize and improve the utility of this field in future releases.

🛠 Improvements and Bug Fixes

Improvements

  • Location Cleaner Improvements
    • This month, we released some major improvements to our location cleaner to improve the consistency and quality of our locality and region data in particular.
      • Our goals for this project were to standardize values in the underlying location data to reduce duplication and to refactor our address cleaning and locality matching to provide more precision.
    • This update has led to significant coverage improvements across our Person, Company and School datasets, as seen in the Coverage section above.
  • Field Sorting Improvements
    • Array-typed fields are now deterministically sorted in our Person Schema to improve the user experience when displaying data from our Person records. For more details see the Schema Changes section above.
  • Company Data Sourcing Improvements
    • This month we completed work to improve our sourcing of key company data fields including industry, founded, linkedin_follower_count, and linkedin_employee_count.
    • These sourcing improvements led to significant coverage increases for each of these fields in our Company dataset.
    • As part of this update we removed some legacy and outdated sourcing methods, which caused a drop in our coverage of affiliated_profiles. We will be looking to address this in future releases.

Bug Fixes

  • We fixed a bug that was causing stock tickers to be dropped if a company’s primary website changed.
  • We removed a data source that was incorrectly representing company summaries as job summaries in our person record.