HR Candidate Screening
Screen a job candidate: parse their resume, validate their email and phone, and run sanctions and PEP checks. Returns structured candidate data with verification status.
hr-candidate-screen What it runs
- CV Parser
Source: Claude API (resume/CV data extraction)
- Email Validation
Source: Algorithmic (syntax) + DNS protocol (MX record verification)
- Phone Validation
Source: libphonenumber-js (Google libphonenumber port)
- Sanctions Check
Source: Dilisense consolidated (OFAC SDN, EU FSF, UN SC, UK Sanctions List, CH SECO, BIS, World Bank, EBRD, ADB + 125 national sanctions/debarment lists; full attribution at https://dilisense.com/en/sources/sanction-sources)
- PEP Check
Source: Dilisense consolidated PEP database (230+ territories, EU C/2023/724-aligned, RCAs included; full attribution at https://dilisense.com/en/sources/politically-exposed-persons-list)
The answer returns every step’s result, so your agent can show or check each one.
Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
email | string | No | Candidate email (optional) |
resume_text | string | Yes | Resume/CV text content |
phone_number | string | No | Candidate phone (optional) |
How to call it
# Needs an API key. The whole check is charged once, at the listed price.
curl -X POST https://api.strale.io/v1/solutions/hr-candidate-screen/execute \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"inputs": {
"email": "[email protected]",
"resume_text": "Jane Smith\nSenior Engineer at Acme Corp\[email protected]\n+44 7911 123456",
"phone_number": "+447911123456"
},
"max_price_cents": 80
}' # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i -X POST https://api.strale.io/x402/v2/solutions/hr-candidate-screen \
-H 'Content-Type: application/json' \
-d '{
"email": "[email protected]",
"resume_text": "Jane Smith\nSenior Engineer at Acme Corp\[email protected]\n+44 7911 123456",
"phone_number": "+447911123456"
}' The bundle’s published example input.
Limitations
AI parsing of resume/CV content — non-standard layouts, multi-column designs, or heavily formatted PDFs may lose structure
From step: CV Parser
What to do instead: For best results, accept resumes in standard single-column formats or plain text alongside the PDF
Documents supplied by URL or base64 are refused above 8 MiB of decoded data, with a caller_input error naming the input field and no charge. Reduce the document size or split it before submitting.
From step: CV Parser
Disposable email detection covers major providers but new throwaway domains may not be flagged
From step: Email Validation
What to do instead: Check the domain’s age when investigating suspicious traffic.
No mailbox is contacted. A made-up or bouncing address can return valid if its syntax is correct, its domain has mail servers, and it is not flagged as disposable. Catch-all domains are one example; mailbox existence and delivery are never checked.
From step: Email Validation
What to do instead: Require confirmation through a verification link before relying on a mailbox.
Valid means the number fits the country's numbering plan. It does not show that the number is assigned or in service.
From step: Phone Validation
Carrier/operator name detection requires a paid service — returns null
From step: Phone Validation
Numbers without international prefix need a country_code hint for accurate parsing
From step: Phone Validation
Sanctions lists updated daily from OFAC, EU, and UN sources — newly sanctioned entities may take up to 24 hours to appear
From step: Sanctions Check
What to do instead: For same-day compliance, subscribe to OFAC's RSS feed and cross-reference against today's additions
Name matching uses fuzzy logic — common names may produce false positives. Always verify flagged results
From step: Sanctions Check
What to do instead: Filter results by match confidence score and verify flagged entities against the primary sanctions list PDF
Coverage depends on OpenSanctions dataset — may not include all national PEP lists
From step: PEP Check
Name matching is fuzzy — common names may produce false positives. Birth date strongly recommended for disambiguation.
From step: PEP Check
What to do instead: Provide birth_date parameter for disambiguation
PEP coverage varies by country — major economies and EU members have strong coverage, smaller nations may have gaps
From step: PEP Check
What to do instead: For countries with limited coverage, supplement with local registry checks or use the LLM fallback as a secondary signal
Name matching uses fuzzy logic — common names may produce false positives. Birth date strongly recommended for disambiguation
From step: PEP Check
What to do instead: Always provide birth_date when available to reduce false positives. Verify flagged results against official government records
PEP lists updated multiple times per day — recently appointed officials may take up to 48 hours to appear
From step: PEP Check
What to do instead: For time-sensitive checks on recently appointed officials, cross-reference with news sources