Recruitment runs on documents that were never designed to be machine-readable. A CV is a formatting free-for-all: two columns or one, tables, headers, graphics, section titles that might say "Experience" or "Professional Background" or "Where I've Worked", and dates written a dozen different ways.

A resume parser API turns that mess into structured data. Understanding how it does so - and where it reliably fails - is the difference between a system that saves your team hours and one that quietly corrupts your candidate database.

What happens inside a parser

Parsing is a pipeline, and each stage can degrade the output of the next.

Text extraction. The document is converted to raw text. This sounds trivial and often is not. PDFs store positioned glyphs rather than logical reading order, so a two-column layout can interleave into nonsense unless the parser reconstructs layout geometry. Scanned documents and images require OCR, which introduces character-level errors from the start.

Section segmentation. The text is divided into logical regions - contact block, summary, experience, education, skills. Parsers use heading detection, formatting cues and positional patterns. Non-standard headings and unconventional ordering both cause misclassification, and a section assigned to the wrong category cannot be recovered downstream.

Field extraction. Within each section, specific values are identified. Some fields are relatively easy because they have distinctive shapes - email addresses and phone numbers can be found with pattern matching. Others require language understanding: distinguishing a job title from a company name, or determining that a bullet point describes a responsibility rather than an achievement.

Normalisation. Extracted values are standardised. Dates in a dozen formats become consistent date objects. "Sr. Software Engineer", "Senior Software Eng." and "Software Engineer II" may map to a canonical title. Skills are matched against a taxonomy so that "JS", "JavaScript" and "ECMAScript" resolve to one entity. This stage determines whether your search and filtering actually work - unnormalised data means a search for "JavaScript" misses every candidate who wrote "JS".

Inference. Derived values are calculated - total years of experience, seniority level, current employment status. This is the least reliable stage because it depends on every prior stage being correct, and because the underlying reality is genuinely ambiguous. Overlapping roles, contract work, career breaks and concurrent freelancing all break naive duration arithmetic.

Why accuracy figures are misleading

Vendors advertise accuracy percentages. Treat them with caution, because the number depends entirely on how it was measured.

Accuracy differs enormously by field. Email extraction might genuinely be near-perfect while correctly structuring employment history is far less reliable. A single blended figure hides that distribution, and the fields that matter for your workflow may be the weak ones.

It also differs by document type. A benchmark run on clean, text-based, conventionally formatted CVs will report figures that collapse on scanned documents, designer CVs with heavy visual layout, or CVs written in a second language.

And "accuracy" itself is ambiguous. If a job title is extracted as "Senior Engineer" when the CV said "Senior Software Engineer", is that correct? Partially correct? Vendors answer this question in whichever way flatters the number.

The only figure worth anything is one you produce yourself, on your own documents. Take 200 to 300 real CVs representative of your actual applicant mix, run them through each candidate vendor, and manually verify the fields you depend on. It is a day of tedious work that will tell you more than every vendor benchmark combined.

What to require from a vendor

Format coverage. PDF and DOCX at minimum. Confirm behaviour on older DOC files, RTF, plain text, and images. Ask specifically how scanned documents are handled and whether OCR is included.

Confidence scores per field. This is the most underrated feature. A parser that returns a confidence value for each extracted field lets you build a sensible workflow: accept high-confidence values automatically, route low-confidence ones for human review. Without confidence scores you must either trust everything or check everything, and both are bad.

Graceful degradation. When the parser cannot understand a section, does it return nothing, or does it guess and return something wrong? Silent wrong answers are considerably more dangerous than acknowledged gaps, because nobody investigates a field that looks populated.

Skill taxonomy quality. Ask how skills are normalised, whether the taxonomy is maintained and updated, and whether you can extend it with terms specific to your industry.

Multi-language support if you recruit internationally, tested on real documents rather than assumed from a feature list.

Data handling terms. Where is the data processed and stored? Is it retained after the API call returns? Is it used to train the vendor's models? For CV data these are compliance questions, not preferences.

Realistic performance and limits. Latency per document, throughput ceilings, rate limits, and behaviour under bulk load - important if you import a backlog of thousands of CVs.

Integration patterns that work

Parse at the point of application and pre-fill the candidate's form, then let them correct it. This is the strongest pattern available: it converts your parsing errors into a two-minute review task for the person best placed to fix them, and it improves the candidate experience at the same time.

Use confidence thresholds to route work. Automatically accept fields above your threshold; queue the rest for a recruiter to confirm. This concentrates human attention exactly where the machine is uncertain.

Always retain the original document. Parsed data is a derived index, not a replacement for the source. Recruiters need to read the actual CV, and you need the original when you later discover a systematic parsing error and have to reprocess.

Handle failures asynchronously. Queue documents rather than parsing synchronously in the request path. Retry transient failures with backoff, and make sure a parsing failure never causes an application to be lost - a candidate who cannot submit because your parser timed out is a real cost.

Log outcomes and review them. Track which fields fail most often and on which document types. This tells you where to tighten your process, and gives you evidence when renegotiating with a vendor.

Bias and compliance

Two considerations deserve explicit attention.

Parsing decisions can encode bias. If a parser handles CVs from certain educational systems or naming conventions less accurately, candidates from those backgrounds are systematically disadvantaged by a technical artefact. If parsed output feeds ranking or screening logic, that disadvantage becomes a hiring outcome. Test accuracy across the demographic range of your applicant pool, and keep humans accountable for rejection decisions.

On compliance, CVs are personal data by definition. Under GDPR, India's DPDP Act and similar regimes you need a lawful basis for processing, a stated retention period, and a working mechanism to delete a candidate's data on request - including from your parsing vendor's systems. Confirm in writing whether the vendor retains documents and whether they are used for model training.

Deciding whether to build or buy

Building a parser is harder than it appears. The straightforward 70 percent - extracting emails, phone numbers, obvious headings - takes weeks. The remaining 30 percent, which is where the actual value is, takes years and requires ongoing maintenance as document conventions shift.

Buy unless CV parsing is your core product. Spend your effort instead on the workflow around it: sensible confidence thresholds, good review interfaces, and monitoring that tells you when quality degrades.

Sologenx offers a Resume/CV Parser API built for exactly these integration patterns, with structured output and control over how documents are processed. If you would like to test it against your own document set, get in touch.