Guides
Guides
Guides from Haisleaf, each written from something we had to build: the parsers that read a resume out of a PDF, and the engine that decides where its pages break.
There is a great deal of resume advice and most of it is the same advice. These are the things we ended up knowing because we had to build them — what a parser can see in a file, and what decides where a page ends. Where a claim here is mechanical, it is a fact about software we wrote rather than a rule of thumb.
01 — From building the PDF and DOCX parsers that import resumes into Haisleaf.
What an applicant tracking system actually reads from your resume
Written from the inside of a resume parser: what a PDF gives up and what it silently loses, why bold text is invisible to it, how two columns interleave, and the five things that reliably break extraction.
02 — From building the pagination engine that decides where Haisleaf breaks a page.
Why your resume runs onto a second page, and how to pull it back
A page break is decided by measured heights, not by word count. What actually moves a section onto page two, why a heading can leave a third of a page blank, and the four levers that change it.
03 — From the PDF extractor in Haisleaf, and from the emphasis check we shipped wrong and had to delete.
Does an applicant tracking system read bold text?
The usual answer is that bold is a font-weight flag any parser reads straight through. Measured against the library most parsers are built on, a PDF hands over no font name at all — and a DOCX hands over the style by name.
04 — From the column-detection thresholds in the PDF extractor that imports resumes into Haisleaf, and the paragraph reassembly that runs after it.
Why two-column resumes get scrambled, and the number that decides it
A parser sees no columns — only fragments with positions on a page. Whether your two columns survive comes down to whether the gutter between them is wider than a wide space, which is a measurement you control and nobody tells you about.
05 — From the space-reconstruction threshold in the PDF extractor that imports resumes into Haisleaf, and the tracking values in our own templates.
Why a letter-spaced heading breaks, and why some resumes arrive as SoftwareEngineer
A PDF often does not contain the spaces you can see — they are inferred from the gaps between glyphs. One threshold decides, and there are two ways to fall off it: track a heading too wide and every letter gets a space, set words too tight and they run together.
06 — From parseDateParts, the date reader in Haisleaf’s own document schema, and the import path that calls it.
What a parser does with “Summer 2019”, and why 03/04/2024 is a coin flip
A date a parser cannot read does not raise an error — it becomes a piece of text, invisible to anything that sorts or filters by time. An all-numeric date is worse: it parses perfectly, into the wrong month.