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:
Pythonwould 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-learnimplies familiarity withPython, even if the wordPythonisn’t explicitly mentioned.
Modern systems also use lemmatization and stemming:
Managed,managing, andmanageare treated as the same base wordmanage.
And even phrase detection:
- Recognizing that
machine learningis a single skill/keyword rather than two separate unrelated words.
📉 Keyword Pitfalls: What NOT to Do
- Keyword stuffing: Repeating terms excessively (like listing
Python10 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 learningandengineerexplicitly. - 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.