
Affinda
Best overall resume parsing API here for clean, multi-column, and messy PDFs with rich structured JSON.
Best overall parser in this test, set with cleanup still needed.
Affinda is the clear overall winner in this test set: it parsed all three resumes end-to-end, returned structured JSON, and stayed strong on clean, multi-column, and messy layouts. The tradeoff is that CGPA scores, some certifications, URL handling, and skill hygiene still need downstream validation.
In-Depth Review
Our detailed analysis of Affinda — features, performance, and real-world testing.
Feature-by-Feature Breakdown
Resume PDF Parsing to Structured JSONReliable9/10▾
Feature tested: Resume PDF Parsing to Structured JSON
Result: Partial (9/10)
Verdict: Reliable
Expected behavior: Accepts uploaded resume PDFs and turns them into machine-readable JSON, extracting core profile, work, education, certification, and related resume fields without manual mapping or template setup. In the evidence set it was exercised on a clean single-column resume, a two-column resume, and a messy resume.
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Clean resume input — Affinda Input.1.pdf
Observed output: Output artifact (Text/code file): Structured JSON was produced for the clean resume, with the main candidate fields, work history, education, certifications, and skills exported in named fields. — json output 1.txt
Input artifact: Input artifact (PDF document): Clean resume input — Affinda Input.1.pdf
Output artifact: Output artifact (Text/code file): Structured JSON was produced for the clean resume, with the main candidate fields, work history, education, certifications, and skills exported in named fields. — json output 1.txt
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Multi-column resume input — Affinda Input.2.pdf
Observed output: Output artifact (Text/code file): Structured JSON was produced for the multi-column resume, with both columns parsed into named fields. — json output 2.txt
Input artifact: Input artifact (PDF document): Multi-column resume input — Affinda Input.2.pdf
Output artifact: Output artifact (Text/code file): Structured JSON was produced for the multi-column resume, with both columns parsed into named fields. — json output 2.txt
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Messy resume input — Affinda Input.3.pdf
Observed output: Output artifact (Text/code file): Structured JSON was produced for the messy resume, with candidate data exported despite the non-standard formatting. — Json output 3.txt
Input artifact: Input artifact (PDF document): Messy resume input — Affinda Input.3.pdf
Output artifact: Output artifact (Text/code file): Structured JSON was produced for the messy resume, with candidate data exported despite the non-standard formatting. — Json output 3.txt
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): input-1-clean-resume-rugved.pdf — Affinda Input.1.pdf
Observed output: Output artifact (Text/code file): Full JSON output — Affinda parsing clean resume — Affinda output.1.txt
Input artifact: Input artifact (PDF document): input-1-clean-resume-rugved.pdf — Affinda Input.1.pdf
Output artifact: Output artifact (Text/code file): Full JSON output — Affinda parsing clean resume — Affinda output.1.txt
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): nput-2-multicolumn-resume-priya.pdf — Affinda Input.2.pdf
Observed output: Output artifact (Text/code file): Full JSON output — Affinda parsing multi-column resume — Affinda output.2.txt
Input artifact: Input artifact (PDF document): nput-2-multicolumn-resume-priya.pdf — Affinda Input.2.pdf
Output artifact: Output artifact (Text/code file): Full JSON output — Affinda parsing multi-column resume — Affinda output.2.txt
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): input-3-messy-resume-john.pdf — Affinda Input.3.pdf
Observed output: Output artifact (Text/code file): Full JSON output — Affinda parsing messy resume — Affinda output.3.txt
Input artifact: Input artifact (PDF document): input-3-messy-resume-john.pdf — Affinda Input.3.pdf
Output artifact: Output artifact (Text/code file): Full JSON output — Affinda parsing messy resume — Affinda output.3.txt
What changed: PDF document transformed into Text/code file
Why it matters / Conclusion: A strong core parser pipeline: it accepted every PDF tested and returned structured JSON consistently.
Accepts uploaded resume PDFs and turns them into machine-readable JSON, extracting core profile, work, education, certification, and related resume fields without manual mapping or template setup. In the evidence set it was exercised on a clean single-column resume, a two-column resume, and a messy resume.
Skills Extraction with Taxonomy MetadataDeep but noisy▾
Feature tested: Skills Extraction with Taxonomy Metadata
Result: Partial
Verdict: Deep but noisy
Expected behavior: Builds a detailed skills list from resume content, including taxonomy-style metadata and inferred technical skills. The tested outputs also showed duplicate skills and occasional contamination from certification names or unrelated taxonomy terms.
Test case: PDF document → Image
Input type: PDF document
Input used: Input artifact (PDF document): Clean resume input — Affinda Input.1.pdf
Observed output: Output artifact (Image): The skills panel shows repeated entries such as Research and Python, indicating duplicate skill extraction from the same resume. — image-3.png
Input artifact: Input artifact (PDF document): Clean resume input — Affinda Input.1.pdf
Output artifact: Output artifact (Image): The skills panel shows repeated entries such as Research and Python, indicating duplicate skill extraction from the same resume. — image-3.png
What changed: PDF document transformed into Image
Test case: PDF document → Image
Input type: PDF document
Input used: Input artifact (PDF document): Clean resume input — Affinda Input.1.pdf
Observed output: Output artifact (Image): The skills panel includes certification names as skills and shows IBM Mainframe even though it is not in the resume. — image-4.png
Input artifact: Input artifact (PDF document): Clean resume input — Affinda Input.1.pdf
Output artifact: Output artifact (Image): The skills panel includes certification names as skills and shows IBM Mainframe even though it is not in the resume. — image-4.png
What changed: PDF document transformed into Image
Test case: PDF document → Image
Input type: PDF document
Input used: Input artifact (PDF document): Multi-column resume input — Affinda Input.2.pdf
Observed output: Output artifact (Image): The skills panel shows a hallucinated skill term, American Welding Society Codes, that does not appear anywhere in the source resume. — image-8.png
Input artifact: Input artifact (PDF document): Multi-column resume input — Affinda Input.2.pdf
Output artifact: Output artifact (Image): The skills panel shows a hallucinated skill term, American Welding Society Codes, that does not appear anywhere in the source resume. — image-8.png
What changed: PDF document transformed into Image
Test case: PDF document → Image
Input type: PDF document
Input used: Input artifact (PDF document): Messy resume input — Affinda Input.3.pdf
Observed output: Output artifact (Image): The skills panel injects Business Education as a skill, which is another term that does not exist in the resume. — image-13.png
Input artifact: Input artifact (PDF document): Messy resume input — Affinda Input.3.pdf
Output artifact: Output artifact (Image): The skills panel injects Business Education as a skill, which is another term that does not exist in the resume. — image-13.png
What changed: PDF document transformed into Image
Why it matters / Conclusion: Useful for rich skill metadata, but the output needs deduping and hallucination filtering before production use.
Builds a detailed skills list from resume content, including taxonomy-style metadata and inferred technical skills. The tested outputs also showed duplicate skills and occasional contamination from certification names or unrelated taxonomy terms.




Structured List Section ExtractionUseful▾
Feature tested: Structured List Section Extraction
Result: Passed
Verdict: Useful
Expected behavior: Extracts structured list sections such as languages, projects, and hobbies from resumes, returning items as arrays when present. In the tested resumes it captured language proficiency levels, multiple projects, and hobbies as list-like output.
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Multi-column resume input — Affinda Input.2.pdf
Observed output: Output artifact (Text/code file): The multi-column resume included extracted language entries with proficiency levels and both project entries in the JSON output. — json output 2.txt
Input artifact: Input artifact (PDF document): Multi-column resume input — Affinda Input.2.pdf
Output artifact: Output artifact (Text/code file): The multi-column resume included extracted language entries with proficiency levels and both project entries in the JSON output. — json output 2.txt
What changed: PDF document transformed into Text/code file
Test case: PDF document → Text/code file
Input type: PDF document
Input used: Input artifact (PDF document): Messy resume input — Affinda Input.3.pdf
Observed output: Output artifact (Text/code file): The messy resume exported hobbies as a structured array, while the language field stayed null because no languages were present. — Json output 3.txt
Input artifact: Input artifact (PDF document): Messy resume input — Affinda Input.3.pdf
Output artifact: Output artifact (Text/code file): The messy resume exported hobbies as a structured array, while the language field stayed null because no languages were present. — Json output 3.txt
What changed: PDF document transformed into Text/code file
Why it matters / Conclusion: Good at structured list sections, but some project text can be truncated and absent fields are not inferred.
Extracts structured list sections such as languages, projects, and hobbies from resumes, returning items as arrays when present. In the tested resumes it captured language proficiency levels, multiple projects, and hobbies as list-like output.
Pricing & Access
Plans as of May 2026. Tested on the free plan
Pricing checked May 2026. We re-check quarterly. Visit affinda.com for current enterprise pricing.
Banner Preview
How the embed badge will look on your site

Embed HTML
Copy this code to your website source
Quick Integration Guide
- 1Copy the HTML code block above.
- 2Paste it into your site's HTML or CMS editor.
- 3Banner appears instantly on your page.
- 4Links back to your tool profile here.
Similar Tools
Discover more AI tools like Affinda to enhance your workflow.