Loading page content
Loading
Preparing your experience
Please wait while we fetch the latest data and prepare the page for you.
Loading
Preparing your experience
Please wait while we fetch the latest data and prepare the page for you.
The VeriWorkly ATS Engine reads a resume the way an applicant tracking system does, recovers the fields it stores, scores it with a published rubric and matches it to a job posting, requirement by requirement. Deterministic, explainable, and small enough to run in the browser.
npm install @veriworkly/ats-engineThese are invented resumes. The engine loads into this page and scores them in your browser: nothing is uploaded. Edit the posting and watch the job match and the requirements change.
A clean, single-column resume with measured results, against a matching posting.
Maya Okafor Senior Backend Engineer [email protected] | +1 (415) 555-0142 | linkedin.com/in/maya-okafor-example | Oakland, CA SUMMARY Backend engineer building payment and data services in Go and PostgreSQL since 2016. EXPERIENCE Senior Backend Engineer, Northwind Payments | Mar 2021 – Present - Cut p99 checkout latency from 840 ms to 210 ms by moving card tokenisation to a Go service. - Led the migration of 14 services to Kubernetes, reducing infrastructure cost by 31%. - Designed an idempotent ledger in PostgreSQL that processes 2.4 million transactions a day. - Mentored 4 engineers and ran the on-call rotation for the payments platform. Backend Engineer, Bluefin Analytics | Jun 2018 – Feb 2021 - Built a Kafka ingestion pipeline handling 50,000 events per second with exactly-once delivery. - Reduced nightly batch runtime from 6 hours to 45 minutes by partitioning PostgreSQL tables. - Shipped a gRPC API used by 12 internal teams, with 99.95% availability over two years. Software Engineer, Lumen Health | Aug 2016 – May 2018 - Wrote REST services in Python and Go for appointment booking used by 300 clinics. - Added integration tests that raised coverage from 42% to 81%. EDUCATION B.S. Computer Science, University of Michigan | 2016 SKILLS Go, Python, PostgreSQL, Kafka, Kubernetes, Docker, gRPC, AWS, Terraform, Redis CERTIFICATIONS Certified Kubernetes Administrator (CKA), Cloud Native Computing Foundation, 2022
An ATS does not rank a resume. It extracts the text, files it into fields recruiters search, and filters on them. The engine does the same, then tells you what got lost and how to fix it.
PDF, DOCX, HTML, plain text and JSON Resume. It rebuilds the reading order, joins wrapped lines and reads spaced-out letters back, the way an ATS extracts text before it files anything.
The fields an ATS stores: name, contact, one row per role with title, employer and dates, education with its level, skills, certifications and spoken languages, each marked with where it came from.
A readiness score from 0 to 100 across parsing, contact, structure, evidence, format and writing. Every failed rule comes with what it found, quoted from the resume, and the fix.
A posting is read requirement by requirement: years of experience, degree level, skills, languages, clearances and the right to work, each met, partial, missing or unverifiable, with evidence.
There is no model in the score. Each point a resume loses traces back to one rule, the evidence it found and the fix. Read the full rubric.
35 rules, each with its category, weight, what it reads, when it passes and the fix. The docs page is generated from the engine itself.
The same resume, policy and date always give the same report. Every report carries the engine version and a fingerprint of the policy that scored it.
Rules, weights, keywords and synonyms are data, not code. Copy the community policy, change it, and the fingerprint tells your reports apart.
Tricks aimed at screening software come off the finished score as deductions. An honest resume never meets them: it scores exactly as if these rules did not exist.
Instructions aimed at AI screeners, including ones hidden in Unicode tag characters or PDF metadata.
Text set in white, too small to read, off the page or covered by a shape, read from the uploaded file itself.
Terms repeated far beyond what the text needs, and a posting pasted into the resume.
Letters from another alphabet posing as Latin ones, and invisible characters hidden between words.
One engine and one published rubric, wherever you run it. The CLI, the Action and the MCP server attach the built-in language and region packs; attach them in the library too and you get the same scores.
One function, no network calls. Works the same in a React component, a route handler or a Worker.
Read the Library guidenpm install @veriworkly/ats-engineimport { check } from "@veriworkly/ats-engine";
const report = check(resumeText, undefined, { jobDescription });
report.readinessScore; // 0–100
report.failedChecks; // each with evidence and a fix
report.parsed.roles; // title, employer, start, end
report.requirements; // met, partial, missing, unverifiableThe core makes no network calls and has no file system access, so it runs wherever JavaScript does. Sizes are gzipped, for each entry point bundled on its own.
| Import | What it holds | Runs in | Size |
|---|---|---|---|
| @veriworkly/ats-engine | check(), parsing, scoring | Browser, edge, Node | 101 KB |
| /locales | German, French, Hindi; US, UK, DE, FR, IN | Browser, edge, Node | 75.5 KB |
| /job | Postings from HTML and JSON-LD | Browser, edge, Node | 3.5 KB |
| /format | Labels, bands, dates for your UI | Browser, edge, Node | 1.2 KB |
| /ai | Optional: explain, repair, convert | Server, with fetch | 73 KB |
| /node | PDF and DOCX extraction | Node.js 22.12+ | 21.1 KB |
Bring your own key for Anthropic, OpenAI, Gemini, Groq, OpenRouter, Together or a local Ollama. A model can explain a report or fill gaps in a parse; any value it returns that is not in the resume is dropped, and contact details are redacted before analysis.
German, French and Hindi packs, and region rules for the US, UK, Germany, France and India: day-first dates, national credentials, and whether a photo or a date of birth is expected.
Every pattern runs in linear time, inputs are capped, crafted DOCX archives are refused before parsing, and extraction can run in a child process with a timeout.
Each release is checked against hand-written resumes and 30 generated ones rendered as text, PDF, two-column PDF and DOCX. All of them are invented, so treat these as regression figures, not real-world accuracy. Engine 0.11.0. How they are measured.
Anywhere a candidate wants to know how their resume reads before a recruiter sees it.
Score as people type, show the rows an ATS would recover, and point at the exact line to fix.
Show a candidate how their resume reads against a posting before they apply.
Give every student the same published standard, and explain each score line by line.
Ground an assistant's resume advice in a deterministic report instead of a model's guess.
The engine is built for candidates checking their own resume. It is not designed or validated to screen, rank or filter people, which can bring legal duties under laws such as New York City's Local Law 144 and the EU AI Act. Responsible use
Compared by kind of tool, not by vendor. What a given vendor offers varies, so check theirs.
| Feature | VeriWorkly ATS Engine | Hosted parsing APIs | AI-scored checkers |
|---|---|---|---|
| How the score is made | Published rules | Usually no score | A model's judgement |
| Same input, same result | Always, with a policy fingerprint | Depends on the vendor | Can vary between runs |
| Every rule and weight public | Yes | No | Rarely |
| Where the resume goes | Nowhere: runs in your code | The vendor's servers | The vendor's servers |
| Requirement-by-requirement match | Yes, with evidence | Some | Some |
| Price | Free, MIT | Usually per document | Usually a subscription |
With a VeriWorkly API key you can call /ats/check, /ats/extract and /ats/analyze. They share your account's scan quota: 2 scans a day on a free account and 300 per billing period on a paid plan. There is no separate developer plan yet. For volume, run the library yourself: it is free.
What it does, where it runs, and what it is not for.
One npm install, one function call, and a report you can show your users as it is.
npm install @veriworkly/ats-engine