Here is the most common ATS systems in the USA

- NLP algorithms extract key information from resumes:
- Name, contact info
- Work history (titles, dates, companies)
- Education history
- Skills (technical and soft)
- Certifications
- Keywords (specific to the job description)
- Some systems even assess resume formatting and penalize unusual structures.
📊 Keyword & Contextual Matching
- Traditional ATSs used keyword matching: “Does this resume contain the exact phrase ‘Python’?”
- AI systems now use contextual language models (like BERT or domain-specific LLMs) to understand:
- Synonyms and related skills (e.g., ‘TensorFlow’ implies knowledge of ‘deep learning’)
- Contextual relevance (e.g., Python used in data science vs. web development)
- Relative recency and duration of skills in use
📊 Job Description Analysis
- The AI parses the job description itself using NLP to:
- Identify required and preferred qualifications
- Understand role seniority and core competencies
- Cross-reference industry-specific terminology
📊 Scoring & Ranking Candidates
- AI assigns a fit score or ranking based on:
- Resume-job description alignment
- Employment gaps (sometimes flagged)
- Seniority match
- Location (if remote/hybrid policies apply)
- Salary expectations (if disclosed)
This returns a matching score, that if a threshold is set, can be used to dynamically filter resumes because the U.S. is in a position that there are more resumes inputted than positions available.
- .
📌 Excessive Use of Tables
- Problem: Many Canva or Word templates use tables for layout.
- Why ATS struggles: Depending on how the parser reads the document (Word vs. PDF vs. plaintext), tables might:
- Get flattened improperly
- Lose hierarchy
- Merge unrelated content
- Modern AI systems: Handle basic tables but nested or heavily styled tables (with background colors, merged cells) still risk errors.
📌 Unusual Bullet Styles
- Problem: Fancy symbols like ✔️, ✪, ➤, or emoji bullets.
- Why ATS struggles: Most parsers tokenize standard bullets (
•
,-
,*
). Non-ASCII symbols can:- Be ignored
- Be replaced by garbage characters
- Break parsing continuity in older systems
📊 How Traditional (Legacy) Keyword Matching Worked
➡️ Exact match only
- Would look for the precise string
Python
. - If your resume said
Proficient in scripting languages like Python and Java
, it counted as a hit. - If it said
Worked with scripting languages (e.g. Python)
— depending on the parser, this might get missed. - No understanding of synonyms, context, or phrasing variations.
It also typically scored matches based on:
- Frequency (how many times a term appeared)
- Section weighting (keywords in the Experience section might be worth more than in Skills)
📊 How Modern AI/NLP-Driven ATS Keyword Matching Works
➡️ Contextual and semantic matching using NLP models
These systems leverage tools like:
- Named Entity Recognition (NER): to pick out technologies, job titles, company names.
- Word embeddings / transformers (like BERT): to understand relationships between words.
For example:
Python
would be associated with terms likeFlask
,Django
,NumPy
,pandas
, and concepts likedata science
,automation scripting
.- The system can infer that
developed machine learning models using scikit-learn
implies familiarity withPython
, even if the wordPython
isn’t explicitly mentioned.
Modern systems also use lemmatization and stemming:
Managed
,managing
, andmanage
are treated as the same base wordmanage
.
And even phrase detection:
- Recognizing that
machine learning
is a single skill/keyword rather than two separate unrelated words.
📉 Keyword Pitfalls: What NOT to Do
- Keyword stuffing: Repeating terms excessively (like listing
Python
10 times) can get flagged by some ATS. - Keyword spamming: White text on a white background — older trick that modern ATS systems detect and penalize.
- Using obscure synonyms: Say ‘prognostic model development’ instead of ‘predictive modeling’ — ATS may not link the two unless it’s semantically sophisticated.
📊 Best Practice for Keyword Optimization
- Use language from the job description. If it says
SQL
, don’t just sayrelational databases
. - Mirror phrasing and terminology. If they say
machine learning engineer
, mention bothmachine learning
andengineer
explicitly. - Include a clear ‘Skills’ section listing hard and soft skills.
- Contextualize keywords in your job descriptions. Don’t just dump a list.
📌 Pro Tip:
You can use free tools like:
- Jobscan.co
- Resumeworded.com
To compare your resume against a job description and get a keyword match score.
🔍 Final Thought:
Modern ATS keyword matching is far more sophisticated than it used to be, but it still heavily favors alignment with the job description language. You’re optimizing for both a robot and a human — so clarity and readability matter alongside match rates.
I am looking at engineering a system which parses a master resume, and then creates new content for a resume based on a local GPU using Ollama, and can “spoof” an ATS system. I haven’t been making progress that rapidly.