Use case · CVs and resumes
CV and resume parsing API
CV parsing with Mahad OCR reads a CV or resume (PDF, Word or photo) and returns the candidate’s contact details, every job, education, skills and languages as structured JSON. Values are copied in the candidate’s own words — never rephrased or invented — and an optional step builds a professional CV file from the extracted facts only, refusing to deliver it if any fact was lost or added.
Fields returned
| Key | What it holds |
|---|---|
| full_name, email, phone, alternate_phone, location | Contact details, character for character |
| nationality, date_of_birth, gender, marital_status, father_name, religion | Only where the CV prints them |
| passport_number, passport_issue_date, passport_expiry_date | Only where printed |
| profession_title, summary, expected_salary | As printed |
| work_experience[] | company, position, location, start_date, end_date (YYYY-MM or “Present”), duties[] — every job, in order |
| education[] | qualification, field_of_study, institution, location, start_year, end_year, grade |
| certifications[], skills[], languages[] | Courses and licences; each skill; each language with its level |
full_name and work_experience are the required fields for a CV.
How ✓ and ⚠ work here
- Each CV value is labelled with where it came from; for a Word file or a PDF with a text layer, values found word for word in the file’s own text are ✓.
- ⚠ A value read from a picture by one reader is marked for a person to check.
- The professional CV (GET /v1/documents/{id}/cv) is compared record by record with the extracted facts; a file that lost or added a fact is refused with 422 cv_check_failed.
Example request and response
Fictional data, real response shape (trimmed to the keys that matter here). Full field list in the API reference.
curl -X POST https://api.mahadocr.com/v1/documents/upload \
-H "X-MahadDoc-API-Key: mk_live_YOUR_KEY" \
-F "[email protected]" \
-F "doc_type=cv"
# 202 Accepted
# { "id": "DOC_3f9a1c7e2b40", "status": "processing", ... }
curl https://api.mahadocr.com/v1/documents/DOC_3f9a1c7e2b40 \
-H "X-MahadDoc-API-Key: mk_live_YOUR_KEY"
# optional: a professional CV built from the extracted facts only
curl https://api.mahadocr.com/v1/documents/DOC_3f9a1c7e2b40/cv.pdf \
-H "X-MahadDoc-API-Key: mk_live_YOUR_KEY" -o candidate-CV.pdf{
"id": "DOC_3f9a1c7e2b40",
"status": "verified",
"result": {
"document_type": "cv",
"values": { "full_name": "Ravi Specimen Testkumar", "email": "[email protected]",
"phone": "+91 90000 00000", "position": "Senior Pipe Welder",
"skills": "TIG welding, ARC welding", "languages": "English (Good), Hindi (Native)" },
"cv": {
"work_experience": [{ "company": "Test Engineering W.L.L.", "position": "Pipe Welder",
"location": "Doha", "start_date": "2019-03", "end_date": "Present",
"duties": ["Welding of carbon steel pipes"] }],
"education": [{ "qualification": "ITI Certificate in Welder Trade", "end_year": "2014" }],
"skills": ["TIG welding", "ARC welding"],
"languages": [{ "language": "English", "level": "Good" }]
},
"outputs": { "json": "/v1/documents/DOC_3f9a1c7e2b40",
"docx": "/v1/documents/DOC_3f9a1c7e2b40/cv.docx",
"pdf": "/v1/documents/DOC_3f9a1c7e2b40/cv.pdf" }
}
}Limits
- The reader copies what the CV says; it does not check that the candidate’s claims (employers, dates, qualifications) are true.
- The fact check on the finished CV proves the file matches the extracted facts; it does not prove the facts themselves.
- CVs in English, Hindi, Arabic or a mix are read in the script printed; an Arabic CV gets Arabic headings, right to left.
- Wording improvement (improve=true or POST /v1/documents/{id}/improve) is optional and never allowed to change, add or negate a fact.
- Files: PDF, Word (.docx/.doc), PNG or JPG, up to 10 MB; a PDF is read up to its first 5 pages.
How to do it
- 1POST the CV to /v1/documents/upload (doc_type=cv is optional).
- 2Poll GET /v1/documents/{id}; the flat fields are in result.values, the full structure in result.cv.
- 3Optionally call GET /v1/documents/{id}/cv for the professional layout and the questions to ask the candidate.
- 4Download /cv.docx or /cv.pdf — delivered only when the fact check passes.
Frequently asked questions
Does the parser rewrite the candidate’s text?
No. Values are copied verbatim. Rewording happens only if you ask for it (improve), and a rule plus a separate fact check reject any rewording that changes, adds or removes a fact.
Which languages are supported for CVs?
English, Hindi and Arabic, including CVs that mix them. Text is kept in the script it was printed in.
What are the “questions” returned with the professional CV?
A list of what the CV does not say — for example contact details, job dates, passport expiry or languages — in the CV’s language, so a recruiter can ask the candidate.
Does it verify employment history?
No. It extracts what the candidate wrote. Checking that the claims are true is outside what Mahad OCR does.
Does it work for Indian recruitment agencies?
Yes. Indian CVs in English, Hindi or a mix are read, including passport details when the CV prints them. The same API reads the candidate’s passport with MRZ check digits, so agencies preparing overseas placements can read CV and passport together.
Are Tamil, Telugu or Bengali CVs supported?
English and Hindi are the tested Indian languages. The on-server reader has no language pack for other Indian scripts, so results depend on the AI reading route — test your own CVs in the live demo first.
Can I get the result as Excel?
Yes. Add outputs=xlsx to the upload and download GET /v1/documents/{id}/outputs/xlsx once reading has finished.