Blue-IQ

Resume Parsing API · Healthcare-grade

The resume parser that knows what an RN licence is.

One call turns any PDF, DOCX, or scan into schema-validated JSON — licence numbers, post-nominal credentials, canonical specialties, and travel work histories where the agency never swallows the facility. Confidence-scored, so your team only reviews what needs eyes.

curl -F "file=@resume.pdf" — that's the integration.

maria_delgado_rn.pdfsource
response200 · application/json
{  "full_name": "Maria Delgado",  "credentials": ["RN", "BSN", "CCRN"],  "licenses": [{ "type": "RN", "state": "TX",      "number": "885201", "is_compact": true }],  "experience": [{ "company": "St. David’s Medical Center",      "agency_name": "Aya Healthcare", "profession": "RN",      "specialties": ["Intensive Care Unit"] }],  "certifications": [{ "name": "ACLS" }, { "name": "BLS", "expiry_date": "12/2026" }],  "professional_associations": ["AACN Member"],  "confidence": { "overall": 0.93 }}
A real licence — number, state, compact status
input formats, scans included
6input formats, scans included
structured output fields
40+structured output fields
OCR with Textract fallback
2-stageOCR with Textract fallback
per resume, scans included
≤ 2 minper resume, scans included
documents retained after parsing
0documents retained after parsing

01Built for healthcare staffing

Generic parsers see text. This one sees a clinician.

Nurses and allied health professionals carry structure most parsers destroy — licences with numbers, credential strings after names, travel assignments nested under agencies. Blue-IQ extracts each into its own field.


01

Real practice licences

Number verbatim with letter prefix, state as written, compact/multistate flag, status — never mislabelled as a certification.

licenses[]
02

Post-nominals, preserved

“Jane Smith, RN, BSN, CCRN” → name cleanly split from every credential, in order, exactly as written.

personal_info.credentials[]
03

Travel histories, untangled

One entry per facility under an agency umbrella. The staffing agency lands in agency_name — it never overwrites the hospital.

experience[].agency_name
04

Canonical specialties

“Med Surg/Tele”, “CVICU”, “L&D” resolved against a 360+ entry clinical taxonomy — consistent values you can filter on.

experience[].specialties[]
05

Memberships & committees

Sigma Theta Tau, AACN, unit committees, process-owner roles — captured, not silently dropped.

professional_associations[]
06

Certs with honest dates

BLS, ACLS, CCRN with issued vs. expiry kept apart — an unlabelled date is never guessed into an expiry.

certifications[]

Not nurse-only: radiologic and CT/MRI technologists, respiratory therapists, OT/PT/SLP, surgical and lab techs, and social workers parse with the same depth. And it remains a fully general resume parser — send it an accountant and you get clean JSON back.

02How a parse runs

Four stages between upload and JSON.


  1. 01

    Read anything

    Digital text comes straight out. Scans and photos run tiered OCR — Tesseract first, AWS Textract when quality demands it.

    pdf · docx · png · jpg · tiff · scan
  2. 02

    Map the document

    A multi-pass engine locates every role before extracting it, so a 15-job travel history keeps all 15 employers.

    structure → per-role extraction
  3. 03

    Validate, never invent

    Output is forced through a strict schema. A missing date stays null — it is never padded into a fake one.

    08/2018, not 08/01/2018
  4. 04

    Score and flag

    Per-section confidence plus plain-language warnings: a summary that looks copied, a name the email contradicts.

    "confidence": { "overall": 0.93 }

03Human-in-the-loop

Your team reviews four resumes, not four hundred.

Every section carries a 0–1 confidence score. Set a threshold: clean records flow straight into your system, and only the uncertain ones queue for a person. Degraded parses come back flagged partial with plain-language warnings — never a silent failure.


  • Per-section and overall scores on every response
  • partial: true on degraded documents — nothing fails silently
  • Warnings a recruiter can read, not error codes
  • Feedback endpoint: corrected JSON flows back to improve the model
confidencethreshold 0.80
personal_info0.96

→ auto-accepted

experience0.91

→ auto-accepted

education0.88

→ auto-accepted

skills0.74

→ queued for human review

04Developer-first

A request and a response. That’s the integration.

No SDK required, no callback gymnastics for the simple case. Async OCR jobs return a job_id to poll — or register a signed webhook and skip polling entirely.


POST /api/v1/resume/parsefull reference →
# one call
curl -X POST \
  https://dqzxwwacosqcxipouyzxnrh7ky0sdnqw.lambda-url.us-east-2.on.aws/api/v1/resume/parse \
  -H "X-API-Key: rp_live_…" \
  -F "file=@resume.pdf"

# difficult scan? force high-accuracy OCR
  -F "force_textract=true"
// 200 OK
{
  "status": "completed",
  "data": { "licenses", "experience", "credentials"},
  "confidence": { "overall": 0.91 },
  "partial": false,
  "warnings": []
}

Uniform errors

Every failure shares one envelope with a machine error_code and a hint written for end users.

"error_code": "FILE_TOO_LARGE"

Signed webhooks

Async results carry an HMAC-SHA256 signature and timestamp. Verify, then trust the payload.

X-Signature: sha256=…

Batch up to 200

Submit a folder of resumes in one request; per-file jobs report back individually.

POST /api/v1/resume/batch

05Security & privacy

Candidate documents are radioactive. Handle accordingly.

A resume is PII end-to-end. The safest place to keep it is nowhere — so that’s the design.


Zero document retention
Resumes are parsed in memory and deleted on completion. There is no stored copy to breach.
Encrypted in transit
Every request runs over TLS, authenticated by a per-account key you can rotate at any time.
Signed webhooks
Async deliveries carry an HMAC-SHA256 signature and timestamp; replay-window guidance is in the docs.
Content-free audit trail
We log that a parse happened — duration, file type, token spend — never what the document said.

Start free · no credit card

Your first parsed resume is five minutes away.

Create an account, generate a key, send a file. The dashboard tracks every job from day one.