Benchmarks
What npm run bench measures for the VeriWorkly ATS Engine, its 0.11.0 results on synthetic resumes, bundle sizes, and the limits of those numbers.
npm run bench in the engine repository measures how accurately the parser recovers fields from resumes, and how long a parse takes. The corpora are invented resumes. There is no third-party or real-world benchmark yet.
Read the caveat first
Every resume in these corpora is synthetic. The numbers show that the parser reads the shapes the generator and the fixtures produce. They do not predict accuracy on resumes in the wild.
What it measures
Field accuracy: for each labelled resume, whether the parser recovered each field correctly. Two corpora:
- Hand-written fixtures. The resumes in the repository's test fixtures, read as text. This is a regression check, since the engine was built against them.
- Generated resumes. 30 seeded invented resumes with varied separators, date forms, city placement, headings and section order. Each is rendered four ways: as text, as a PDF, as a two-column PDF and as a DOCX. They are labelled from their inputs and never from what the engine reads, and they are not tuned to the engine.
bench/baseline.json lists every field each corpus misses today. The run fails on a miss that is not listed, so one field read better cannot hide another read worse.
Results on 0.11.0
| Corpus | Field accuracy |
|---|---|
| Hand-written fixtures (regression check) | 99.7% |
| Generated, as text | 100.0% |
| Generated, as PDF | 100.0% |
| Generated, as two-column PDF | 99.9% |
| Generated, as DOCX | 100.0% |
Timing over 142 parses, after one warm-up: median 4.3 ms, p95 31.2 ms, measured on 0.10.0 (0.11.0 changes no reading or scoring code). These were taken on a developer machine, and timing varies with the machine and the load.
Bundle sizes
Minified and gzipped, from npm run size, on 0.11.0. Importing only part of a subpath bundles less: withLocales alone is 48.7 KB.
| Import | Gzipped |
|---|---|
@veriworkly/ats-engine | about 101 KB |
@veriworkly/ats-engine/locales | 75.5 KB |
@veriworkly/ats-engine/ai | 73.0 KB |
@veriworkly/ats-engine/node | 21.1 KB |
@veriworkly/ats-engine/job | 3.5 KB |
@veriworkly/ats-engine/document | 2.1 KB |
@veriworkly/ats-engine/format | 1.2 KB |
@veriworkly/ats-engine/ai/openai-compatible | 1.9 KB |
@veriworkly/ats-engine/ai/anthropic | 1.9 KB |
@veriworkly/ats-engine/ai/testing | 1.2 KB |
withLocales alone | 48.7 KB |
/node runs on Node only. The other subpaths run in browsers and at the edge.
Run it yourself
git clone https://github.com/VeriWorkly/ats-engine.git
cd ats-engine
npm ci
npm run build
npm run benchYou need Node 22.12 or later. npm run bench -- --verbose lists the fields missed in the generated corpus. Run npm run size for the bundle table.
Responsible use
The VeriWorkly ATS Engine is for candidates checking their own resume, not for screening or ranking applicants. Why, and what to tell your users.
Roadmap
The VeriWorkly ATS Engine's 0.x stability policy, the API changes planned before 1.0, what is planned without dates, and what will not be built.