Important Disclaimer & PrivacyThis is an AI-powered simulation of generic enterprise ATS logic (like Workday, Taleo). Every company configures their ATS differently. A high score here does not guarantee a job interview.Privacy Note: The raw text extracted from your PDF is sent to our AI providers for parsing. Please do not upload sensitive documents if you do not consent to this.
Drag & drop your CV here
Supports exactly 1 PDF file (max 5MB)
How the ATS check works
Most CVs are not rejected by a person. They are parsed by software that turns a PDF into structured fields, and anything the parser cannot read is simply missing from the profile a recruiter searches. This tool runs your CV through the two layers that decide whether that happens.
1 · Deterministic rules
16 checks implemented as pure functions — no AI, no randomness. The same CV always produces the same result (an open-ended role marked “Present” is measured against today's date), and every finding names the rule it came from, so you can verify it yourself instead of trusting a score.
2 · AI evaluation
A language model reads the extracted text and scores formatting, impact and completeness the way a screener would, then lists what to change. Paste a job description and it also reports which of the posting's keywords your CV is missing.
The 16 deterministic checks
These run before any AI is involved. They are grouped by what fails when the check fails.
Contact details
A parser that cannot find how to contact you drops the application, however strong the experience is.
- Email address
- Phone number
- LinkedIn URL
- GitHub URL
- Personal website / portfolio
- Location / timezone
Bullet quality
What recruiters skim after the parser is done: does each line start with a verb and end with a number?
- Action verbs
- Bullet point length
- Measurable metrics
Structure
ATS software segments a CV by section heading and date. Non-standard headings and broken date ranges lose entire roles.
- Standard sections
- Dates & timeline
- Employment gaps
- Recent roles without end date
ATS-specific parsing
The mistakes that look fine to a human and turn into garbage once the text is extracted.
- Special characters / emoji
- Skills parsability
- File name
Why CVs fail before a human reads them
The five problems below account for most silent rejections. None of them look like mistakes when you open the PDF yourself.
- Skills in a table or multi-column layout
- Text extraction reads columns in the wrong order, so skills end up glued to unrelated job titles.
- Section headings like “My Journey” instead of “Experience”
- The parser has no rule for a creative heading and files the whole block as untagged text.
- Icons and emoji next to contact details
- Glyphs from an icon font extract as unknown characters, which can corrupt the email or phone number next to them.
- Dates written as “2022 – now” or only as years
- Duration cannot be computed, so filters on “3+ years of experience” never match you.
- A file named cv_final_v3(1).pdf
- It survives parsing, but a recruiter scanning an attachment list reads it as carelessness.
Fixing these by hand in a word processor tends to reintroduce them. The CraftCV editor exports a single-column, parser-safe PDF, so the layout cannot drift back into a table.
Questions people actually ask
Is this a real ATS or a simulation?
A simulation. Nobody outside Workday or Taleo can run your CV through the real thing — and every company configures its own parser, keyword weights and knock-out questions. What is reproducible is the class of formatting and content problems that break parsers generally, and that is what the 16 deterministic checks measure.
Why two scores?
The lint score comes from the 16 deterministic checks: pure functions, same input, same output, every time. A passed check counts as full credit, a warning as half, and the two checks whose own advice calls them optional (GitHub, personal website) are left out of the score entirely, so a CV is never penalised for advice it can legitimately ignore. The ATS score is the AI evaluation, which reads the extracted text and judges formatting, impact and completeness the way a screener would. They answer different questions, so they are kept separate instead of averaged into one meaningless number.
What does adding a job description change?
It turns on the keyword gap report: the tool extracts the terms from the posting and reports which ones are missing from your CV. Without a job description there is nothing concrete to match against, so the keyword match score stays empty rather than being guessed.
What happens to my PDF?
The text extracted from it is sent to the AI provider for parsing and evaluation. The file itself is not stored in an account, because there are no accounts. Details are in the privacy policy — if a document is confidential, do not upload it.
Does a high score mean I get the interview?
No. It means the document is unlikely to be mangled or filtered out before a person reads it. That is a floor, not an advantage — the content still has to match the role.
After the report
The report tells you what to change; fixing it is a separate job. You can rebuild the CV from scratch in the editor, keep the file local, and re-run this check on the export until nothing is flagged.