piidetectionapi.com
Home
Solutions - Fundamentals
What Is PII Detection? NER vs Regex vs Rules Accuracy, Precision & Recall PII in Test Data
Solutions - Compliance
GDPR Personal Data HIPAA PHI Detection CCPA / CPRA PCI DSS Card Data
Solutions - AI & LLM Safety
LLM Guardrails Chatbot PII Filtering RAG Pipelines
Solutions - Data Discovery & DLP
Data Loss Prevention Log File Scanning Support Tickets Email Scanning Documents & PDFs Database Discovery ETL & Streaming Pipelines
Industries - Financial
Banking Fintech Insurance
Industries - Healthcare
Healthcare Pharma & Clinical Trials Telehealth
Industries - Public Sector & Legal
Government & FOIA Law Enforcement Law Firms & eDiscovery Education (FERPA)
Industries - Technology
SaaS Platforms Cybersecurity & IR Telecommunications Gaming & Platforms
Industries - Other
HR & Recruiting Retail & E-commerce Call Centers & BPO Real Estate Travel & Hospitality Marketing & AdTech
How-to Guides - Identity & Contact
Detect Names Detect Email Addresses Detect Phone Numbers Detect Physical Addresses Detect Dates of Birth
How-to Guides - IDs & Financial
Detect SSNs Detect Passport Numbers Detect Drivers Licenses Detect Credit Card Numbers Detect Bank Accounts & IBAN
How-to Guides - Technical & Health
Detect IP & Device IDs Detect Medical Records & PHI
Resources
Pricing API Docs Supported Entities Languages About Contact Sign In Try the Live Demo Get Started
HR & Recruiting Solutions

PII Detection for HR & Recruiting

Find and classify personal data in resumes, CVs, background checks and employee records with AI-powered detection. Power blind hiring workflows, reduce bias exposure, and keep your ATS and HRIS compliant with GDPR, CCPA and EEOC expectations.

150+ entity types 60+ languages GDPR-native

Why HR Teams Need Automated PII Detection

Human resources departments are, by definition, in the business of personal data. Every stage of the employee lifecycle produces documents saturated with personally identifiable information: resumes and CVs carry names, home addresses, phone numbers and dates of birth; background check reports contain Social Security numbers, driver's license numbers and criminal history; onboarding packets collect bank details for payroll, emergency contacts, and health insurance identifiers; and exit paperwork ties all of it together with performance history and compensation records.

The problem is not that HR holds this data — it must. The problem is that the data spreads. A resume forwarded to five hiring managers, an interview scorecard pasted into Slack, a spreadsheet of candidates exported from the applicant tracking system for a quick pivot table: each copy multiplies the surface area for a breach and complicates every deletion request under GDPR or CCPA. Manual review cannot keep pace with a recruiting funnel that may see tens of thousands of applications a year.

The PII Detection API solves this at the point of ingestion. Each document is scanned in milliseconds by a context-aware transformer model — not brittle regex — that returns every detected entity with its type, exact character offsets and a confidence score. Your systems then decide what to do: flag it, mask it for blind review, log it for your data map, or block it from leaving a controlled environment. See the API overview for the full capability set.

Detection first, redaction optional. The API always returns the structured list of detected entities with offsets and confidence scores. If you also want a cleaned version of the text — for a blind-screening view or a shareable summary — set mask_mode to replace, redact or hash and use the anonymized_text field from the same response.

The HR Compliance Landscape

Employment data sits at the intersection of privacy law, anti-discrimination law and background screening regulation

EEOC & Anti-Discrimination

U.S. equal employment law prohibits hiring decisions based on race, religion, national origin, age, sex or disability. Resumes routinely reveal exactly these attributes — through names, photos, graduation years, affiliations and addresses. Detecting and masking characteristics such as ETHNIC_GROUP, RELIGION, AGE, GENDER and MARITAL_STATUS before reviewers see a document reduces the risk that protected attributes influence — or appear to influence — screening decisions.

GDPR for Candidates & Employees

Candidate and employee data is personal data under GDPR, and much of what appears on a CV — union membership, health mentions, ethnicity — is special-category data under Article 9. Recruiters must honor access and erasure requests, minimize what they retain, and justify retention periods. Automated detection tells you precisely which personal data lives where, making data mapping and deletion actually feasible. See our GDPR PII detection guide.

FCRA & Background Checks

Background check reports obtained through consumer reporting agencies fall under the Fair Credit Reporting Act, which imposes strict handling and disposal duties. These reports concentrate the most dangerous identifiers in HR — SSNs, driver's license numbers, dates of birth, addresses and financial records. Scanning them on receipt lets you verify what sensitive elements were delivered, restrict who sees the raw report, and prove secure disposal later.

CCPA/CPRA & State Privacy Laws

Since the CPRA's HR exemptions lapsed, California employees, applicants and contractors hold access, deletion and correction rights over their data. A dozen other states have followed with their own statutes. Responding to a single employee access request can mean searching years of email, tickets and shared drives — automated PII detection turns that search from weeks into hours. See the CCPA/CPRA compliance guide.

Why Employment Data Breaches Hurt More

An HR breach is uniquely damaging because HR files aggregate identity. A retail breach might leak an email address; a leaked personnel file leaks a full identity kit — legal name, SSN, date of birth, home address, salary, bank account for direct deposit — everything needed for tax fraud and identity theft. Regulators know this, and breach notification duties in every U.S. state and under GDPR's 72-hour rule apply squarely to employee data.

Detection is the control that limits blast radius before an incident. If resumes in your ATS are masked for screening, if interview notes are scrubbed before syncing to shared tools, and if background reports never leave a restricted store, then the copies that leak are the copies that were already cleaned. That is the practical difference between notifying fifty employees and notifying every person who ever applied to your company.

PII the API Detects in HR Documents

From contact details to protected characteristics — every entity is returned with type, offsets and confidence

PERSON_NAME
Candidates, referees, managers
EMAIL_ADDRESS
Personal & work emails
PHONE_NUMBER
Mobile, home, references
SSN / NATIONAL_ID
I-9, W-4, payroll forms
DATE_OF_BIRTH / AGE
Age-discrimination signals
ADDRESS
Home address, ZIP proxies
GENDER
Pronouns, titles, mentions
ETHNIC_GROUP
Protected characteristic
RELIGION
Affiliations, activities
EMPLOYMENT
Employers, job titles
MEDICAL_DATA
Accommodations, leave notes
FINANCIAL_ACCOUNT_NUMBER
Direct deposit, garnishments

Context Matters in Recruiting Text

Resumes are hard for pattern-matching tools. "May 2019" might be a graduation date that reveals age; "Jordan" might be a first name, a surname or a country; a phone number can appear with any of a dozen international formats; and protected characteristics rarely announce themselves — they hide in club memberships, scholarship names and volunteer work. Regex alone either misses them or floods reviewers with false positives.

The API's transformer NER models read surrounding context the way a human does. They distinguish the candidate's name from company names, recognize that "native Spanish speaker, willing to relocate from San Juan" carries both a language cue and a location, and detect a date of birth even when written as "born in the spring of '89". Every result includes a confidence score, so your workflow can auto-mask high-confidence hits and queue borderline ones for review — a tuning approach explained in our guide to precision, recall and F1 for PII detection.

Detection works across 60+ languages, which matters for global recruiting: a CV in German, French or Japanese is scanned with the same entity taxonomy, so your downstream logic never changes. Browse the full catalog on the supported entities page.

Where PII Hides Across the Employee Lifecycle

A practical map of HR document types, the identifiers they typically contain, and the entity lists to request

HR Document / System PII Typically Present Primary Risk Recommended entities Filter
Resumes / CVs Name, email, phone, address, DOB, photo captions, nationality, affiliations Bias exposure in screening; wide internal distribution PERSON_NAME, EMAIL_ADDRESS, PHONE_NUMBER, ADDRESS, DATE_OF_BIRTH, AGE, GENDER, ETHNIC_GROUP
Background check reports SSN, driver's license, DOB, addresses, criminal & credit history FCRA handling and disposal duties; identity theft SSN, DRIVERS_LICENSE_NUMBER, DATE_OF_BIRTH, ADDRESS, NATIONAL_ID
Onboarding & payroll forms SSN/TIN, bank account & routing numbers, tax IDs, emergency contacts Financial fraud; W-2 phishing targets SSN, TAX_ID, FINANCIAL_ACCOUNT_NUMBER, ROUTING_NUMBER, PHONE_NUMBER
Interview notes & scorecards Names, protected characteristics mentioned in free text, health disclosures Discrimination claims discovery; uncontrolled copies in chat tools PERSON_NAME, AGE, GENDER, MARITAL_STATUS, MEDICAL_DATA, RELIGION
Employee relations cases Names of complainants/witnesses, medical data, union membership Confidentiality of investigations; GDPR special categories PERSON_NAME, MEDICAL_DATA, POLITICAL_AFFILIATION, EMPLOYMENT
HRIS exports & analytics extracts Full identity records: IDs, compensation, demographics, addresses Spreadsheet sprawl; unminimized data in BI tools Default (all entities) with threshold 0.6

W-2 phishing is an HR-specific threat. Every tax season, attackers impersonate executives to request bulk W-2 exports from HR and payroll staff. Scanning outbound email and attachments for concentrations of SSN and TAX_ID entities is one of the most effective automated tripwires — see our guide to email PII scanning.

HR & Recruiting Use Cases

Where recruiting and people teams put the PII Detection API to work

1

Blind Hiring & Resume Anonymization

Strip identity and protected-characteristic signals from resumes before they reach screeners, so first-round decisions rest on skills and experience. The API detects names, contact details, ages, photos' captions and demographic cues, and returns a masked rendering for the review UI while the original stays sealed in the ATS.

Before Detection
Amara Okafor, born 03/14/1988, [email protected] — President, Nigerian Students' Association
After Masking
[NAME], born [DATE_OF_BIRTH], [EMAIL] — President, [ETHNIC_GROUP] Students' Association
2

Background Check Intake Control

Scan reports arriving from screening vendors to inventory exactly which identifiers were delivered, enforce need-to-know views for hiring managers (adjudication result only, not raw SSNs), and generate disposal evidence when FCRA retention windows close.

Before Detection
Subject: Daniel Reyes, SSN 512-44-9087, DL D4409812 (TX), DOB 07/02/1991 — record clear
After Masking
Subject: [NAME], SSN [SSN], DL [DRIVERS_LICENSE] (TX), DOB [DATE_OF_BIRTH] — record clear
3

Employee Record Retention & DSARs

When an employee files an access or deletion request, you need to find every trace of their data — in HR email, shared drives, ticketing systems and old exports. Batch-scanning those stores builds the data map that makes subject-rights responses fast and defensible.

Before Detection
Q3_comp_review.xlsx: "Chen, Wei — base $142,000, addr 88 Alder Ct, SSN on file"
After Masking
Q3_comp_review.xlsx: "[NAME] — base $142,000, addr [ADDRESS], SSN on file"
4

Interview Notes & Scorecard Hygiene

Free-text interviewer feedback is where risky statements accumulate: mentions of pregnancy, age, health or family plans. Scanning notes as they are saved flags protected-characteristic content immediately, letting recruiting ops coach interviewers and keep discoverable records clean.

Before Detection
"Great fit, though she mentioned being pregnant and due in June — might affect ramp-up"
After Flagging
ALERT: MEDICAL_DATA + GENDER detected in scorecard #4471 — routed to recruiting ops review
5

HR Analytics on Scrubbed Data

People-analytics teams want funnel metrics, attrition models and engagement-survey mining — none of which need direct identifiers. Run exports through the API with mask_mode: "hash" so the same person hashes consistently across datasets, preserving joins without exposing identities.

Before Detection
survey_open_text: "As Priya on the Bangalore payroll team, I feel my manager Rob ignores..."
After Hashing
survey_open_text: "As [a8f3c2] on the [CITY] payroll team, I feel my manager [77d1e0] ignores..."
99%+
Detection accuracy on identity fields
<200ms
Typical scan time per resume
150+
Entity types incl. protected traits
60+
Languages for global hiring

Designing a Blind Hiring Workflow That Actually Works

Blind screening fails when it is partial. Masking the name but leaving the personal email (firstname.lastname@…), the alumni association, or the graduation year defeats the purpose. A robust pipeline scans the entire application package — resume, cover letter, portfolio links and screening answers — with an entity list tuned to identity and protected-characteristic signals, then renders the masked version as the only view available during round one.

Sequence matters. Detect at ingestion, store the entity map alongside the document, and gate un-masking behind a pipeline stage: once a candidate advances to interviews, authorized recruiters see the original, and the audit log records who unmasked what and when. Because the API returns character offsets for every entity, you can even render partially-masked views — for example, revealing location at the city level for logistics while keeping the street address hidden.

Finally, measure the effect. Teams that adopt masked first-round review consistently report shifts in pass-through rates across demographic groups. Because detection is deterministic and logged, you can demonstrate to auditors — or to an EEOC inquiry — precisely what information reviewers could and could not see at each decision point. Start with the name detection guide and extend from there.

Tip — keep skills, mask identity. Use exclude_entities to keep useful signal visible. Many teams exclude EMPLOYMENT and URL so employer names, job titles and portfolio links survive masking, while custom_instruction (e.g. "do not mask names of programming languages or certifications") protects domain terms that loose matchers might otherwise flag.

ATS & HRIS Integration Examples

One JSON endpoint — call it from your ATS webhook, HRIS pipeline or screening service

Scan a Resume with cURL

The fastest way to see detection in action: post raw resume text to the endpoint with an HR-tuned entity list. The response contains every detected entity with offsets and confidence, plus a masked rendering because mask_mode is set. Try the same request interactively in the live demo, and see the API documentation for every parameter.

Requests accept up to 50,000 characters — enough for multi-page CVs in a single call. For scanned PDF resumes, extract text first (or see our document & PDF scanning guide, which covers OCR).

cURL — Resume Scan

# Detect identity + protected characteristics in a resume
curl -X POST https://piidetectionapi.com/api/moderate.php \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "api_type": "pii_detection",
    "text": "Maria Gonzalez\[email protected] | (415) 555-0132\n742 Vista Way, San Jose, CA 95112\nBorn 04/12/1988. Fluent Spanish. Church youth leader 2015-2019.",
    "entities": ["PERSON_NAME","EMAIL_ADDRESS","PHONE_NUMBER","ADDRESS",
                 "DATE_OF_BIRTH","AGE","GENDER","ETHNIC_GROUP","RELIGION"],
    "mask_mode": "replace",
    "threshold": 0.5
  }'

Blind-Screening Pipeline in Python

This pattern sits between your ATS export and the reviewer UI. It scans each application, stores the structured entity map for audit, and passes only the anonymized text to round-one reviewers. High-risk detections — protected characteristics with confidence above 0.8 — are also routed to recruiting ops.

Note the use of custom_instruction to keep technology names visible: context-aware exclusions in plain English are often easier to maintain than long allow-lists.

Python — Blind Screening

import requests

PROTECTED = {"AGE", "GENDER", "ETHNIC_GROUP", "RELIGION", "MARITAL_STATUS"}

def blind_screen(resume_text):
    resp = requests.post(
        "https://piidetectionapi.com/api/moderate.php",
        json={
            "api_key": "YOUR_API_KEY",
            "api_type": "pii_detection",
            "text": resume_text,
            "entities": ["PERSON_NAME", "EMAIL_ADDRESS", "PHONE_NUMBER",
                         "ADDRESS", "DATE_OF_BIRTH", "AGE", "GENDER",
                         "ETHNIC_GROUP", "RELIGION", "MARITAL_STATUS"],
            "mask_mode": "replace",
            "threshold": 0.5,
            "custom_instruction": "Do not mask programming languages, certifications, or company names.",
        },
        timeout=30,
    )
    data = resp.json()

    flags = [e for e in data["detected_entities"]
             if e["type"] in PROTECTED and e["confidence"] >= 0.8]

    return {
        "review_text": data["anonymized_text"],   # reviewers see this
        "entity_map": data["detected_entities"],  # sealed audit record
        "ops_flags": flags,                        # protected-trait alerts
    }

ATS Webhook in Node.js

Most modern applicant tracking systems (Greenhouse, Lever, Workable and similar) fire webhooks when a candidate applies or a note is saved. This Express handler receives the event, scans the payload text, and writes the anonymized version back to a custom field — so downstream consumers, from Slack notifications to analytics syncs, only ever touch the masked copy.

Because detection runs per event in under a second, the masked field is ready before any human opens the application. Check pricing for volume tiers that match high-throughput recruiting funnels.

Node.js — ATS Webhook

// Express webhook: scan new ATS notes before they sync anywhere
app.post("/webhooks/ats/note-created", async (req, res) => {
  const { candidateId, noteText } = req.body;

  const r = await fetch("https://piidetectionapi.com/api/moderate.php", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      api_key: process.env.PII_API_KEY,
      api_type: "pii_detection",
      text: noteText,
      entities: ["PERSON_NAME", "EMAIL_ADDRESS", "PHONE_NUMBER",
                 "MEDICAL_DATA", "AGE", "GENDER"],
      mask_mode: "replace",
    }),
  });
  const data = await r.json();

  await ats.updateCustomField(candidateId, "note_masked", data.anonymized_text);
  if (data.entities_detected > 0) {
    await auditLog.write({ candidateId, entities: data.detected_entities });
  }
  res.sendStatus(204);
});

HR & Recruiting PII Detection FAQ

Common questions from talent-acquisition and people-operations teams

Can the API detect protected characteristics like age, gender or ethnicity for blind hiring?

Yes. Beyond direct identifiers, the entity taxonomy includes AGE, DATE_OF_BIRTH, GENDER, ETHNIC_GROUP, RELIGION, MARITAL_STATUS, SEXUAL_ORIENTATION and POLITICAL_AFFILIATION. The models catch indirect signals too — graduation years that imply age, organization names that imply religion or national origin, and pronouns that imply gender. Each detection carries a confidence score so you can decide how aggressively to mask.

Does masking resumes remove information recruiters legitimately need?

You control the trade-off. The entities array limits detection to exactly the types you want masked, exclude_entities preserves categories like EMPLOYMENT or URL, and custom_instruction accepts plain-English exceptions such as "do not mask certification names". The original document is never altered — masking produces a separate rendering, so authorized users can always access the full resume at the appropriate pipeline stage.

How does this help with GDPR and CCPA subject access or deletion requests?

The hardest part of a DSAR is finding the data. By batch-scanning mailboxes, drives, ticket systems and old exports, the API produces a structured inventory of which personal data appears in which document, with offsets. That inventory drives both retrieval (for access requests) and targeted deletion or masking (for erasure requests), and the scan logs become your evidence of a diligent search.

Can it process non-English CVs from international candidates?

Yes — detection works in 60+ languages with the same entity taxonomy, so a CV in German, Portuguese, Hindi or Japanese returns the same structured output as an English one. This keeps blind-hiring and retention logic identical across regions. See the supported languages list for details.

What formats can we scan — our resumes arrive as PDFs and Word files?

The moderate.php endpoint accepts text up to 50,000 characters per request, so extract text from PDFs or DOCX files first — every major ATS already stores a parsed-text version you can send directly. For image-based or scanned documents, the platform also supports document and image pipelines with OCR; the document PII scanning guide covers that workflow end to end.

Is candidate data used to train your models?

No. Submitted text is processed for detection and returned; it is not used for model training. The service is GDPR-native audited, traffic is encrypted in transit, and for organizations with stricter requirements an on-premise deployment keeps candidate data entirely inside your network. Contact us via the contact page for deployment options.

How should we set the confidence threshold for HR documents?

For blind hiring, bias toward recall: keep the default threshold of 0.5 so borderline identity signals are masked. For analytics pipelines where over-masking destroys data utility, raise it to 0.7–0.8 and monitor what changes. Because every response includes per-entity confidence, you can log the distribution for a week and pick a threshold empirically before enforcing it.

Related Resources

Keep exploring PII detection for people data

Ready to Protect Candidate & Employee Data?

Scan your first resume in minutes. Purpose-built entity types for hiring, blind-screening ready, GDPR-ready — with free credits to start.