ATS guides
The Appliora CV parsing benchmark
Almost everything written about CV layouts and applicant tracking systems is assertion. This is a measurement. One identical CV was exported through 18 of Appliora's own template layouts, out of the 20 in the collection, and every resulting PDF was read by the same parser that powers the free checker. The method, the limits and the full result table are below, including the 12 layouts that came out badly - several of which are our own designs.
What the run found
Three numbers carry the result.
- 6 of 18 layouts returned a parse rate of 100%: every line of the document landed in the parser's output in document order.
- 12 of 18 tripped the reading-order check. In each case the parser recovered text from a side column interleaved with the main body, which is the failure that turns a readable CV into a scrambled one.
- Every layout that tripped it scored exactly 69. That is not a coincidence and not a measurement: 69 is the ceiling the scoring model applies to a document whose layout scrambled, defined as
scrambledLayoutMaxScorein the engine's configuration. A capped score says "this document has a reading-order problem", not "this document is 69% good".
Method
Written out so somebody else could repeat it, and so you can judge what it is worth.
- One CV, every layout. A single fictional CV was loaded into each template. Nothing about the content changed between runs, so the only variable is the layout.
- A real text layer. Each template was printed to PDF by headless Chrome with a genuine text layer. This is deliberately not the builder's own PDF export - see the limits below.
- The shipped parser, not a copy. Each PDF was scored in a browser by importing the live
js/ats/extract-pdf.mjsandjs/ats/engine.mjsmodules from the running site. A separate scoring implementation would drift from what visitors actually run, and the numbers would quietly stop being true. - Scoring model 4.5. The same 14-check model the free checker publishes weights for, on the date shown below.
- 18 of the 20 templates. The harness carries its own list of layouts and two of the collection are not on it, so the run is not the whole gallery. Which 18 were measured is in the table below - there is no unlisted result.
- Rerunnable.
npm run seo:benchmarkregenerates the data file this page reads. No number on this page is typed by hand.
Full results
Sorted by score. Parse rate is the share of the document's text the parser recovered in reading order.
| Template | Score | Parse rate | Reading order | Other findings |
|---|---|---|---|---|
| Dark Modern | 97 | 100% | clean | 2 |
| ATS Structured | 95 | 100% | clean | 3 |
| Product Systems | 95 | 100% | clean | 3 |
| Academic / Research | 94 | 100% | clean | 3 |
| ATS Clean | 92 | 100% | clean | 4 |
| Student / First Job | 90 | 100% | clean | 4 |
| Bold Modern | 69 | 71% | scrambled | 8 |
| Creative Portfolio | 69 | 89% | scrambled | 5 |
| Dark Sidebar | 69 | 79% | scrambled | 4 |
| Executive Premium | 69 | 76% | scrambled | 3 |
| Grand Hotel | 69 | 68% | scrambled | 4 |
| Growth Marketing | 69 | 82% | scrambled | 2 |
| Hospitality Service | 69 | 79% | scrambled | 5 |
| Light Sidebar | 69 | 78% | scrambled | 2 |
| Medical / Healthcare | 69 | 77% | scrambled | 4 |
| Swiss One Page | 69 | 67% | scrambled | 4 |
| Tech Stack | 69 | 88% | scrambled | 4 |
| Two Column Pro | 69 | 82% | scrambled | 4 |
Run 2026-09-18 against scoring model 4.5. Source data: content/data/parsing-benchmark.json.
How to read the table
A clean parse is a floor, not a ceiling
The 6 layouts with no critical finding still scored between 90 and 97, and the gap between those is content, not layout. A layout that parses cleanly has removed one class of mechanical failure. It has not made the writing better.
The capped scores are not comparable to each other
Thirteen layouts share the same number because they hit the same ceiling. A layout at 69 with a 89% parse rate lost less text than one at 69 with a 67% parse rate, and the score does not show that. Read the parse-rate column for the difference.
Some content findings are an artefact of the single-CV design
Pinning one CV across every layout is what makes the reading-order comparison valid, and it is also what makes a handful of the content findings meaningless. A layout designed around a short skills-led document was handed a bullet-heavy project management CV; where that produced a "no bullets found" finding, the finding is about the pairing, not the template. The reading-order column is the one to trust across rows.
What this does not show
What we do with this
The honest answer is that this is the argument for the layouts at the top of the table. When Appliora recommends a template on a CV example page, the reading-order column is one of the inputs. It is also why the checker's template bridge offers single-column layouts specifically, rather than whichever template looks best.
It does not mean the 12 layouts below the line are unusable. A two-column CV read by a person is often the better document, and plenty of applications go to a human first. It means the choice is a real trade-off with a measurable cost, rather than a matter of taste.
Questions about the method
Can I reuse this data?
Yes. Cite it as the Appliora CV parsing benchmark, with the run date and the scoring model version, and link this page so a reader can see the method and the limits. The raw results live in content/data/parsing-benchmark.json in the site's repository.
Why only Appliora templates?
Because exporting a competitor's template would mean paying for and redistributing their design, and scoring it would produce a number about their layout measured by our parser with no way for them to check it. Measuring our own collection is the version of this we can stand behind.
Does a higher score here mean more interviews?
No, and nothing on this page should be read that way. It means the parser recovered the text in order. Whether the CV earns an interview is about what the text says.
Will you re-run it?
Yes, when the template collection or the scoring model changes. The command is npm run seo:benchmark and it overwrites the data this page reads, so a re-run and a republish cannot disagree.
See what a parser reads from your CV
Upload your current file and get the extracted text plus a 0-100 score across 14 checks. No signup.