Feature — AI Resume Parsing

Any CV in. Clean structured data out.

Upload a resume — polished PDF, old Word file, plain text, or a photo of a printed CV — and receive a complete candidate profile as structured JSON: contact details, experience, education, projects, certificates, skills, languages and more.

A resume file converted into structured data
API

One upload, one complete profile

POST a file to the parse endpoint and get back a structured candidate object. Field names are stable and camelCased, so you can map them straight onto your ATS or job board database.

  • Versioned at /api/v1
  • Bearer token auth
  • Multipart file upload — no base64 gymnastics
  • Consistent error shapes (401, 402, 413, 422, 429, 502)
POST /api/v1/parse-resume
Authorization: Bearer ...
Content-Type: multipart/form-data

file: jane-doe-cv.pdf

→ {
  "fullName": "Jane Doe",
  "email": "jane@doe.dev",
  "jobTitle": "Senior PHP Engineer",
  "experience": [ ... ],
  "education":  [ ... ],
  "skills": ["Redis", ...]
}
File formats

Designed, scanned, or ancient — it parses

Text-based files are extracted locally and parsed as text. Scanned PDFs and images go through our vision-capable AI engine instead, so a photographed CV parses just as well as a typed one. The extraction path is chosen automatically per file.

  • PDF, DOC, DOCX, TXT
  • JPG, PNG, WebP, GIF images
  • Automatic fallback to vision for scanned PDFs
  • Configurable file size limit
resume.pdf   → text path    (1 credits)
resume.docx  → text path    (1 credits)
scan.pdf     → vision path  (1 credits)
photo.jpg    → vision path  (1 credits)

Response meta includes the path used
and the exact credits consumed.
Schema

Deep extraction, not just name and email

The parser returns the complete work history word-for-word, every project it can find anywhere in the resume, plus auto-derived expertise areas and language proficiencies rated 1-5. Nothing is invented: fields missing from the CV come back empty.

  • Experience, education, projects, certificates, awards
  • Auto-detected expertise areas with 1-5 proficiency
  • Spoken languages separated from technical skills
  • Dates normalised to YYYY-MM
{
  "experience":  [{ company, title, dates, description }],
  "education":   [{ institution, degree, field, grade }],
  "projects":    [{ name, role, url, description }],
  "certificates":[{ name, issuer, credentialId }],
  "expertise":   [{ "name": "Backend Development",
                    "level": 5 }],
  "languages":   [{ "name": "English", "level": 4 }]
}
Scale

Sync for one CV, async for the whole inbox

Parse a single resume in real time, or dispatch batches to the async endpoint and poll for results — ideal for bulk-importing an existing applicant database. Failed parses are refunded automatically.

  • POST /parse-resume for real-time parsing
  • POST /parse-resume/async for batches
  • GET /jobs/{id} to poll status and results
  • Uploaded files are deleted right after processing
POST /api/v1/parse-resume/async
→ 202 { "job_id": "f81a...", "status": "queued" }

GET /api/v1/jobs/f81a...
→ { "status": "completed",
    "result": { "data": { ...parsed resume... } } }

Turn your CV pile into a database

Sign up, generate a key, upload a resume. Want to rank the parsed candidates too? Pair it with AI Match Scoring.

Get started