Improved
Parsing API now parses text faster and more accurately with Atlas
3 days ago by Rajaa El Hamdani
POST /text/parsing with parsing_model set to atlas now answers in 36% to 47% less time and extracts job sections, job titles and entities more accurately.
Action required
- Now: none.
POST /text/parsingkeeps its parameters (texts,parsing_model,output_object), their defaults and its response format. - Later: none. Nothing in this update is deprecated.
What changed
- Job sections (
atlas,output_object=job): the culture, benefits, responsibilities, requirements and interviews sections now keep the offer's own wording, in its language and with its line breaks, where they were often partly rewritten or merged into a single sentence. A copied passage can start in lowercase or end mid-sentence. - Job title and location (
atlas,output_object=job): both are extracted more accurately; see Performance. - Languages (
atlas,output_object=text):parsing.languageslists the language names only, without their level ("English", not "English (Fluent)"). - Tasks and skills (
atlas,output_object=text): an activity is listed intasksand no longer repeated inskills_hard; a tool named inside a task is still listed as a hard skill. - More entities (
atlas,output_object=text): more certifications, education titles, job titles, hard and soft skills and tasks are found. - Phones (
atlas,output_object=text):phonesusually lists each number twice, as written in the text and in international format. - Experiences (
atlas,output_object=profile): the number of experiences and educations found in a resume text is right more often. - Speed (
atlas): requests answer faster for everyoutput_object; see Performance.
Performance
parsing_model=atlas | Before | Now | Change |
|---|---|---|---|
Response time, output_object=job (median) | 3.67 s | 1.99 s | 45% less time |
Response time, output_object=profile (median) | 8.06 s | 4.24 s | 47% less time |
Response time, output_object=text (median) | 3.87 s | 2.46 s | 36% less time |
Entity lists, output_object=text (F1) | 0.57 | 0.61 | 6% better F1 |
Job titles exactly right, output_object=job | – | – | +67.0 points, 83% fewer errors |
Responsibilities section, output_object=job (token F1) | 0.62 | 0.91 | 45% better token F1 |
Requirements section, output_object=job (token F1) | 0.61 | 0.89 | 45% better token F1 |
Benefits section, output_object=job (token F1) | 0.44 | 0.84 | 88% better token F1 |
Resumes with the right number of experiences, output_object=profile | – | – | +5.2 points, 10% fewer errors |
Measured on our internal benchmark of job offers, resume texts and short texts, one text per request and 4 requests in parallel, on 2026-09-30 (before) and 2026-10-02 (now).
Example
curl -X POST https://api.hrflow.ai/v1/text/parsing \
-H "X-API-KEY: <your_api_key>" \
-H "X-USER-EMAIL: <your_email>" \
-H "Content-Type: application/json" \
-d '{
"texts": ["Heading an enterprise data science division requires strong skills in NLP and ML"],
"parsing_model": "atlas",
"output_object": "text"
}'The response keeps the format documented in the reference:
{
"code": 200,
"message": "Text extraction finished in 0.01 seconds.",
"data": [
{
"entities": [{"end": 73, "label": "skill_hard", "start": 70}],
"parsing": {
"skills_hard": ["NLP", "ML"],
"tasks": ["Heading an enterprise data science division requires strong skills"]
},
"text": "Heading an enterprise data science division requires strong skills in NLP and ML"
}
]
}