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.

5 steps x402 eligible hr-candidate-screen

What it runs

  1. CV Parser

    Source: Claude API (resume/CV data extraction)

  2. Email Validation

    Source: Algorithmic (syntax) + DNS protocol (MX record verification)

  3. Phone Validation

    Source: libphonenumber-js (Google libphonenumber port)

  4. 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)

  5. 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

FieldTypeRequiredWhat it is
emailstringNoCandidate email (optional)
resume_textstringYesResume/CV text content
phone_numberstringNoCandidate 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": "jane@acme.com",
      "resume_text": "Jane Smith\nSenior Engineer at Acme Corp\njane@acme.com\n+44 7911 123456",
      "phone_number": "+447911123456"
    },
    "max_price_cents": 80
  }'

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