--- title: "Hrflow Review: 3 Resume Parsing Tests (2026)" type: "AI Tool" url: "https://aidemos.com/tools/hrflow" description: "We tested Hrflow on 3 resumes with a dated scorecard and comparison table. Output artifacts show phone truncation and missing certs." category: "developer-tools" published: "2026-08-14T09:47:14.682373+00:00" updated: "2026-08-14T09:47:14.682373+00:00" evidenceCount: 33 verifiedCount: 23 coverage: "dense" --- # Hrflow Review: 3 Resume Parsing Tests (2026) HrFlow is an API-first resume parser that covers core fields well, but needs cleanup for phones, casing, and certifications. ## TL;DR Verdict **Solid core parser, but not production-ready without downstream cleanup** **Where it wins:** - You are integrating resume parsing into a recruitment or HR product via API - You mainly need contact info, work history, education, and languages - You can normalize casing and phone formats downstream **Main limitation:** You need phone numbers without truncation **Pricing:** Free $0 · Essentials no commitment · HrTech+ Custom — billed annually · Staffing+ Custom — billed annually `API-based` · `JSON output` · `Multi-column parsing` · `Phone truncation` ## Evidence (first-party, tested) *33 tested cells · 23/33 artifact-verified. Cite a cell by its Evidence ID, e.g. `ev:hrflow·multi-column-sidebar-resume-priya-sharma·accuracy`.* | Criterion | Scenario | Verdict | Proof | Evidence ID | | --- | --- | --- | --- | --- | | Accuracy | Multi-column sidebar resume — Priya Sharma | ◐ mixed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-9-b8fa7c0d0bb8.png) | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·accuracy` | | Accuracy | Messy real-world resume — John Kumar | ✗ failed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-hrflow-output-1-9f17ceb5aef8.txt) | `ev:hrflow·messy-real-world-resume-john-kumar·accuracy` | | Accuracy | Clean single-column resume — Rugved Nichite | ◐ mixed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-9-b8fa7c0d0bb8.png) | `ev:hrflow·clean-single-column-resume-rugved-nichite·accuracy` | | Accuracy | cross-scenario | ◐ mixed | 👁 observed | `ev:hrflow·cross·accuracy` | | Automation level | cross-scenario | ✓ worked | 👁 observed | `ev:hrflow·cross·automation-level` | | Contact info — name, email, phone, location: exact match | Clean single-column resume — Rugved Nichite | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-07cb8c98e2b6.png) | `ev:hrflow·clean-single-column-resume-rugved-nichite·contact-info-exact-match` | | Contact info — name, email, phone, location: exact match | Messy real-world resume — John Kumar | ⚠ struggled | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-8-0c9013c24e6e.png) | `ev:hrflow·messy-real-world-resume-john-kumar·contact-info-exact-match` | | Custom field support | cross-scenario | ✗ failed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-hrflow-output-1-9f17ceb5aef8.txt) | `ev:hrflow·cross·custom-field-support` | | Export | cross-scenario | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-hrflow-output-1-9f17ceb5aef8.txt) | `ev:hrflow·cross·export` | | Export format | cross-scenario | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-hrflow-20output-201-9f17ceb5aef8.txt) | `ev:hrflow·cross·export-format` | | Field coverage | Messy real-world resume — John Kumar | ⚠ struggled | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-hrflow-output-1-9f17ceb5aef8.txt) | `ev:hrflow·messy-real-world-resume-john-kumar·field-coverage` | | Field coverage | Clean single-column resume — Rugved Nichite | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-hrflow-output-1-9f17ceb5aef8.txt) | `ev:hrflow·clean-single-column-resume-rugved-nichite·field-coverage` | | Field coverage | cross-scenario | ◐ mixed | 👁 observed | `ev:hrflow·cross·field-coverage` | | Field coverage | Multi-column sidebar resume — Priya Sharma | ✓ worked | 👁 observed | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·field-coverage` | | Input handling | cross-scenario | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-hrflow-output-1-9f17ceb5aef8.txt) | `ev:hrflow·cross·input-handling` | | Input handling | Multi-column sidebar resume — Priya Sharma | ✓ worked | 👁 observed | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·input-handling` | | Input handling | Messy real-world resume — John Kumar | ✓ worked | 👁 observed | `ev:hrflow·messy-real-world-resume-john-kumar·input-handling` | | Input handling | Clean single-column resume — Rugved Nichite | ✓ worked | 👁 observed | `ev:hrflow·clean-single-column-resume-rugved-nichite·input-handling` | | Messy resume handling | Messy real-world resume — John Kumar | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-8-0c9013c24e6e.png) | `ev:hrflow·messy-real-world-resume-john-kumar·messy-resume-handling` | | Multi-column handling | Multi-column sidebar resume — Priya Sharma | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-9-b8fa7c0d0bb8.png) | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·multi-column-handling` | | Noise in output | Messy real-world resume — John Kumar | ✗ failed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-8-0c9013c24e6e.png) | `ev:hrflow·messy-real-world-resume-john-kumar·noise-in-output` | | Noise in output | Clean single-column resume — Rugved Nichite | ◐ mixed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-9-b8fa7c0d0bb8.png) | `ev:hrflow·clean-single-column-resume-rugved-nichite·noise-in-output` | | Noise in output | Multi-column sidebar resume — Priya Sharma | ◐ mixed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-9-b8fa7c0d0bb8.png) | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·noise-in-output` | | Noise in output | cross-scenario | ✗ failed | 👁 observed | `ev:hrflow·cross·noise-in-output` | | Output format | cross-scenario | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/research-media-hrflow-20output-201-9f17ceb5aef8.txt) | `ev:hrflow·cross·output-format` | | Output quality | Multi-column sidebar resume — Priya Sharma | ✗ failed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-07cb8c98e2b6.png) | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·output-quality` | | Output quality | cross-scenario | ◐ mixed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-07cb8c98e2b6.png) | `ev:hrflow·cross·output-quality` | | Output quality | Clean single-column resume — Rugved Nichite | ✗ failed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-07cb8c98e2b6.png) | `ev:hrflow·clean-single-column-resume-rugved-nichite·output-quality` | | Output quality | Messy real-world resume — John Kumar | ✗ failed | 👁 observed | `ev:hrflow·messy-real-world-resume-john-kumar·output-quality` | | Work experience — companies, titles, dates, task completeness | Clean single-column resume — Rugved Nichite | ⚠ struggled | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-2-5381d8e8011f.png) | `ev:hrflow·clean-single-column-resume-rugved-nichite·work-experience-completeness` | | Work experience — companies, titles, dates, task completeness | Multi-column sidebar resume — Priya Sharma | ✗ failed | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-7-e51d5bfb15c5.png) | `ev:hrflow·multi-column-sidebar-resume-priya-sharma·work-experience-completeness` | | Work experience — companies, titles, dates, task completeness | Messy real-world resume — John Kumar | ✓ worked | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/hrflow-image-8-0c9013c24e6e.png) | `ev:hrflow·messy-real-world-resume-john-kumar·work-experience-completeness` | | Work experience — companies, titles, dates, task completeness | cross-scenario | ◐ mixed | 👁 observed | `ev:hrflow·cross·work-experience-completeness` | > 🧾 = artifact-verified (proof captured) · 👁 = observed (noted, no artifact) · verdicts: worked / mixed / struggled / failed. > **Solid core parser, but not production-ready without downstream cleanup** > > HrFlow handled all three tested resumes through an API and did well on core resume structure: names, emails, work history, education, and even sidebar languages on the multi-column sample. The consistent blockers were phone truncation on 2 of 3 resumes, lowercase normalization across outputs, and unreliable certification/task extraction, so teams will need post-processing before using the data downstream. ## Feature-by-Feature Breakdown ### API-Based Resume Parsing — 6/10 **Verdict:** Works reliably as an API transport and JSON parser. HrFlow accepts resume PDFs through an API and returns structured JSON candidate data without template setup. The grouped cards cover a clean single-column resume, a multi-column/sidebar resume, and a messy resume, all of which were parsed without crashing. **Input:** > **Image** **Output:** > **Text** **Input:** resume > **Image** — resume **Output:** Observation ``` The Priya Sharma multi-column resume was accepted through the API and parsed without crashing into structured JSON. ``` **Input:** resume > **Image** — resume **Output:** Observation ``` The John Kumar resume was parsed successfully via API despite messy formatting, with no crash or manual mapping. ``` **Bottom line:** Reliable transport layer for API-driven parsing, but it is not a UI upload tool and the output still needs downstream cleanup for field quality. ### Identity and Contact Extraction **Verdict:** Good on basic identity fields, but phone accuracy is inconsistent. HrFlow extracts personal identity and contact details such as name, email, location, LinkedIn, and phone numbers from the tested resumes. The evidence shows the same contact-info capability across clean, multi-column, and messy inputs, with phone fidelity varying by resume. **Input:** > **Image** **Input:** resume > **Image** — resume **Output:** Observation ``` Priya Sharma’s contact fields were extracted, but the phone number was truncated and the headline lost the ML suffix. ``` **Input:** resume > **Image** — resume **Output:** Observation ``` John Kumar’s contact fields were extracted, the phone retained all digits but lost the hyphen separator, and the name was lowercased. ``` **Bottom line:** Solid identity extraction overall, but phone numbers are not production-safe because they failed on two of the three resumes. ### Core Resume Section Extraction **Verdict:** Good core coverage for employment and education structure, with a few fidelity gaps. HrFlow extracts core resume structure including work history, job titles, employers, date ranges, education, institutions, degrees, and languages. The member cards show it also capturing responsibility/task bullets, with some truncation or pollution on harder layouts. **Input:** > **Image** **Input:** > **Image** **Output:** ``` The report is internally mixed on Priya's certifications: it says both certificates were present, but also flags TensorFlow Developer Certificate as being under Education rather than Certifications. ``` **Input:** > **Image** **Output:** ``` The multi-column resume returned English, Hindi, and Marathi correctly from the sidebar, and the report says both certifications were present in the certifications field. ``` **Input:** resume > **Image** — resume **Output:** Parsed output screenshot > **Image** — Parsed output screenshot **Input:** resume > **Image** — resume **Output:** Observation ``` The messy resume returned both jobs, all three education entries, and an inferred languages field, but grade and CGPA data were still absent. ``` **Bottom line:** Strong core coverage for work and education structure, with clear weaknesses around grade fields and title fidelity. ### Skills and Certification Extraction **Verdict:** Weakest area: normalization, classification, and certification handling are not reliable. HrFlow builds a skills-oriented list from resume content, surfacing technical keywords across the tested resumes. The cards also show weaker handling around certifications and noisy outputs like lowercasing, dropped soft skills, and fragments from projects or section labels. **Input:** resume > **Image** — resume **Output:** Annotated skills output > **Image** — Annotated skills output **Input:** resume > **Image** — resume **Output:** Annotated task output > **Image** — Annotated task output **Input:** resume > **Image** — resume **Output:** Annotated skills output > **Image** — Annotated skills output **Input:** resume > **Image** — resume **Output:** Annotated task output > **Image** — Annotated task output **Bottom line:** This is the weakest area: technical skills are partially captured, but normalization, classification, and certification handling are not reliable enough without manual cleanup. ## Pricing & Access | Plan | Price | Notes | | --- | --- | --- | | Free (tested) | $0 | Up to 1,000 requests per month per API, full API documentation, community support — sufficient for testing and prototyping | | Essentials ★ | no commitment | 100 free requests then billed monthly. Profile Parsing API at €0.10 per request, Text Parsing API at €0.05 per request, Tagging API at €0.01 per request. Email and chat support included. All APIs included | | HrTech+ | Custom — billed annually | Volume and committed-use discounts (Profile Parsing from €0.07/req), OEM and white-label options, onboarding and training, CSM and solutions engineers. For established software vendors | | Staffing+ | Custom — billed annually | Everything in HrTech+ plus dedicated infrastructure, custom SLA and TOS, executive roadmap briefings. For large employers and recruiting firms | *Pricing checked May 2026. We re-check quarterly. HrFlow pricing is in Euros. Visit hrflow.ai for current plans and volume pricing.* ## Is It Right For You? **Use it if** - You are integrating resume parsing into a recruitment or HR product via API - You mainly need contact info, work history, education, and languages - You can normalize casing and phone formats downstream - You want multi-column layout handling without manual field mapping **Skip it if** - You need phone numbers without truncation - You need certifications as a reliable structured field - You need skills preserved with original casing and without noise fragments - You need grade or CGPA extraction from education entries - You need soft skills captured alongside hard skills - You need a non-technical UI upload experience - You need OCR or scanned-resume behavior validated in this benchmark ## Classification - **Category:** developer-tools - **Subcategory:** apis - **Type:** text - **Built for:** Founder, Other ## Frequently Asked Questions **Q: Does HrFlow require API setup or does it have a UI upload tool?** The research shows it is API-first. It accepted PDF resumes via API, returned JSON, and did not require template or schema mapping, but it is not a pure UI upload tool. **Q: Does HrFlow extract certifications reliably?** No. On the clean resume, a certification was misclassified under Education; on the multi-column resume, certification handling was inconsistent; and on the messy resume, certifications were missing entirely. **Q: Why are names and skills lowercased?** Across the tested resumes, HrFlow returned text values such as names and skills in lowercase, so downstream normalization is needed before display or reuse. **Q: Is the phone number extraction reliable in HrFlow?** No. The clean and multi-column resumes had truncated phone numbers, while the messy resume kept all digits but dropped the hyphen separator. **Q: How well does HrFlow handle multi-column resumes?** It parsed the multi-column resume without crashing and correctly extracted both roles, the degree, and the sidebar languages. The main problems were a truncated headline and noisy skills. **Q: Did this research test OCR or scanned resumes?** No. The task tested clean, multi-column, and messy text-based resumes, but it did not include a scanned or image-only resume. ## Similar Tools AI tools similar to HrFlow: - [Affinda](https://aidemos.com/tools/affinda) — Best overall resume parsing API here for clean, multi-column, and messy PDFs with rich structured JSON. - [Airparser](https://aidemos.com/tools/airparser) — Parses clean, multi-column, and messy resumes into structured JSON, but email, title, and skill formatting still need validation. - [Extracta.ai](https://aidemos.com/tools/extracta-labs) — Schema-first resume parsing that stays lean and predictable across clean, multi-column, and messy PDFs. - [Skima AI](https://aidemos.com/tools/skima-ai) — Fast PDF resume parsing with dependable core fields and experience-year calculation, but weak structured output and supplemental coverage. - [LlamaParse](https://aidemos.com/tools/llamaparse) — Reliable PDF-to-Markdown conversion for hybrid reports, with strong hierarchy and table capture but weaker preservation of complex table semantics and embedded visuals. - [Parseur](https://aidemos.com/tools/parseur) — Template-driven resume parsing that returns predictable JSON after one-time setup. - [OpenResume](https://aidemos.com/tools/openresume) — Free browser resume parser that is handy for quick manual review on clean PDFs, but brittle field mapping and no JSON export make it unsuitable for API pipelines. - [CVParserPro](https://aidemos.com/tools/cvparserpro) — Parses resume PDFs into structured candidate profiles quickly, but experience totals and education dates need manual review. - [Hireability](https://aidemos.com/tools/hireability) — Strong resume-to-JSON parsing on standard and messy single-column PDFs, but two-column layouts can break the result schema. - [Docparser](https://aidemos.com/tools/docparser) — Template-based resume parsing that works on one fixed layout, but breaks on varied resumes. ## Need a custom AI solution for this use case? If you are looking to build a custom resume parsing, candidate data extraction, or ATS enrichment system for your business or internal workflow, email us at [contact@futuresmart.ai](mailto:contact@futuresmart.ai). ### Found something inaccurate or missing? We try to keep our AI research accurate and useful. If you found outdated information, an issue, or have a suggestion, email us at [collaborate@aidemos.com](mailto:collaborate@aidemos.com).