This directory helps turn a CV into a document that parsers can extract, recruiters can scan, and agents can safely tailor without breaking the layout.
1. Overview: The ATS problem
The prettiest CV is not always the strongest CV. If the parser misses the name, dates, skills, or job titles, the design has already failed.
When you apply for a job, a human recruiter may not read your CV first. Many hiring teams use an Applicant Tracking System (ATS) to store applications, parse resumes into structured fields, search for candidates, and manage review workflows before a human evaluates the final profile.
The problem is that ATS parsers do not understand visual design the way a human does. They extract text from PDF or Word files, look for standard section headers such as “Experience” and “Education,” and map the result into database fields. Some workflows also use keywords, filters, or matching tools to help recruiters find relevant candidates.
The solution is to design a CV for reliable parsing first and human readability second. This module provides constraints and strategies for building a machine-readable CV that gives the user’s qualifications the best chance of being extracted correctly.
Weak bullet:
"Worked on backend APIs and improved performance."
Stronger bullet:
"Reduced API response time by 38% by adding Redis caching and optimizing PostgreSQL queries."
2. Use this module when
- A CV needs to be tailored for a specific job description.
- The layout may be too visual, too dense, or hard for parsers to extract.
- Bullet points need stronger metrics, clearer action verbs, or better keyword alignment.
- A LaTeX, Markdown, Word, or PDF CV needs an agent-safe editing workflow.
3. Fast path
- Start with Core sections to check the required structure.
- Use Formatting rules before changing layout or typography.
- Run the checks in Common pitfalls before sending the CV.
- Use Keyword strategy and Achievement metrics when tailoring content to a role.
- Use Agent workflow when an AI agent is editing a source file.
4. Module index
The optimization logic is divided into the following documents, ordered from the most foundational structural rules to advanced AI workflows:
- Core sections: The mandatory CV sections you must include, their exact naming conventions, and the correct chronological ordering.
- Formatting rules: Hard constraints on the single-page layout, typography, file types, and eliminating wasted space.
- Common pitfalls: The elements that immediately break ATS parsers (graphics, tables), how to run the mandatory “copy-paste-friendly” test, and avoiding the LinkedIn “Trust Gap”.
- Keyword strategy: The methodology for extracting hard and soft skills, handling gap analysis and skill translation, and injecting keywords for Reasoning-Based Matching.
- Achievement metrics: The syntactic formula (Action Verb + Task + Result) and STAR/STAR+R/XYZ methods for writing high-impact bullet points, including the Resume Quantifier strategy.
- Agent workflow: Why plain-text LaTeX (.tex) is the preferred format for automated CV tailoring by AI agents.
- Sources: Citations and research on legacy and LLM-based ATS algorithms and parsing logic.
5. Usage for agents
When an AI agent is tasked with optimizing a user’s CV:
- Review this index to determine which specific sub-module is relevant to the task.
- If building a CV from scratch, start with
core-sections.mdandformatting-rules.md. - If fixing parsing issues, load
common-pitfalls.md. - If rewriting bullet points, load
achievement-metrics.mdandkeyword-strategy.md. - Always prioritize empirical constraints over creative formatting.
Section: achievement metrics
This file defines the mandatory formula for structuring work experience bullet points so they highlight quantifiable impact for both parsers and human reviewers.
1. Overview
Recruiters and many screening workflows prioritize candidates who demonstrate impact rather than just listing responsibilities. The structure of a bullet point must clearly connect an action to a business result. This document enforces a specific syntactic formula so bullet points are rich in relevant keywords, easily parsed, and persuasive to humans.
2. The bullet point formula
Rule: Structure every bullet point using an established framework like STAR, STAR+R, or XYZ. Adopt a rigorous formula to make impact visible. The baseline is Action Verb + Task + Result. Highly recommended variations include:
- STAR: Situation (context), Task (challenge), Action (what you did), Result (quantifiable outcome).
- STAR+R: Adds Reflection to STAR (what was learned or how it shaped future architectural decisions). This is useful for seniority signals and interview preparation, especially when a reviewer wants evidence of reasoning.
- XYZ: Accomplished [X] as measured by [Y], by doing [Z].
Rule: Quantify achievements with hard numbers. Use numeric values (%, $, #) to define the result. Numbers make impact easier to scan and easier to search. If exact numbers are unknown, use the Resume Quantifier strategy to ethically estimate impact based on defensible proxy metrics (e.g., “Reduced latency by an estimated 30% based on baseline profiling”).
Rule: Use the active voice and past tense for past roles. Avoid passive phrases like “Responsible for” or “Tasked with.” Start immediately with the action. Use present tense only for ongoing responsibilities in a current role.
3. Examples
Good example:
<!-- CORRECT -->
- Architected and migrated the legacy monolithic application to a microservices architecture using Docker and AWS, reducing server response time by 40% and cutting hosting costs by $12,000 annually.
Why it works (STAR/XYZ method): It establishes the Action (Architected and migrated), the Task (legacy monolithic to microservices with Docker/AWS), and the clear Result/Measurement (40% reduction, $12,000 savings).
Bad example:
<!-- WRONG -->
- Responsible for migrating the old application to the cloud, which made it run faster and saved the company money.
Why it fails: It uses passive phrasing (“Responsible for”) and lacks any specific technical keywords or quantifiable numbers.
4. Anti-Patterns
The job description replica
What it looks like: Bullet points that read like a list of duties: “Attended daily standups,” “Wrote code for the frontend,” “Fixed bugs.” Why it fails: Listing duties proves you held the job, but it does not prove you were good at it. It lacks the target keywords and metrics that recruiters and screening systems use to understand fit. What to do instead: Translate duties into achievements using the Action Verb + Task + Result formula.
Next step: Automate this process in Agent workflow.
Section: agent workflow
This file details a robust technical workflow for AI agents managing CVs, advocating for LaTeX (
.tex) as a version-controlled source format with precise visual control.
1. Overview
While word processors like Microsoft Word are standard for humans, they introduce invisible metadata, complex XML structures, and layout shifts when edited programmatically. For an AI agent tasked with continuously updating a user’s CV to match specific job descriptions, plain text source formats are easier to review and version. LaTeX (.tex) is a strong default for this workflow when the user is comfortable compiling PDFs.
2. The LaTeX advantage
Rule: Use .tex as the source of truth for programmatic CV generation. LaTeX files are pure plain text. This allows AI agents to directly inject keywords, rewrite bullet points, and reorder sections without ever breaking the visual layout.
Recommendation: Compile .tex directly to PDF for the final ATS submission. A PDF generated from LaTeX gives strong control over layout, margins, and typography. Unlike Word-to-PDF exports that can scramble the underlying text layer with floating text boxes, pdflatex or xelatex usually produces a cleaner text layer. The exported PDF still needs to pass a plain-text extraction check before submission.
3. Agent workflow constraints
Rule: Maintain strict separation of content and styling macros. When an agent edits a .tex file, it must only modify the content strings within predefined macros (e.g., \cventry{Role}{Date}). Do not alter the document preamble (\usepackage, \geometry) unless explicitly directed to change the global design.
Recommendation: Use the provided templates as the baseline. The files in cv-ats/examples/ are personal worked examples, not normative templates. Use them only to understand how real application artifacts can look in practice; apply the canonical rules from this workflow, the formatting rules, and the templates when generating or editing user-facing CVs.
4. Examples
Good example:
<!-- CORRECT -->
% Clean, macro-driven content injection \mysection{Experience} \cventry{Security Engineer Intern, Tech Corp}{Feb 2026 - Present} \begin{itemize}
\item Architected a microservices backend... \end{itemize}
Why it works: The agent can easily locate the \cventry and the itemize block using regex or basic parsing, safely injecting new bullet points tailored to a specific job description without affecting the alignment of the date.
Bad example:
<!-- WRONG -->
% Hardcoded spatial formatting \noindent \textbf{Security Engineer Intern, Tech Corp} \hspace{4cm} \textbf{Feb 2026 - Present} \\
Architected a microservices backend...
Why it fails: Manual spacing (\hspace) and forced line breaks (\\) make the document fragile. If the agent changes the job title length, the date alignment will break.
Return to the CV and ATS optimization index.
Section: common pitfalls
This file catalogs common errors that cause a CV to be misparsed, and provides a practical method to verify ATS compatibility.
1. Overview
Many candidates are filtered out or slowed down not because they lack qualifications, but because the CV is difficult for parsing systems to extract cleanly. This document highlights the most common technical formatting mistakes and introduces a quick plain-text compatibility test.
2. Critical errors to avoid
Rule: Do not use headers and footers for critical information. Keep contact information in the main document body. Many resume parsers and screening workflows handle headers and footers unreliably, so they are the wrong place for email addresses, phone numbers, or portfolio links.
Rule: Do not embed hyperlinks in text. Write out URLs explicitly (e.g., linkedin.com/in/username or github.com/username). Do not rely on anchor text such as “Portfolio” or “Click here” as the only visible representation of the link.
Rule: Avoid visual skill rating elements. Do not use progress bars, star ratings, or pie charts to represent your proficiency in a skill (e.g., “Python: 4/5 stars”). The parser cannot read the visual graphic, and the resulting text extraction will be gibberish.
Rule: Avoid the “Trust Gap” (LinkedIn De-sync). Ensure the CV and public LinkedIn profile remain factually aligned. If dates, titles, or major claims differ across public materials, the candidate creates an avoidable credibility problem.
3. Verification: The Copy-Paste-Friendly test
Rule: Always verify the CV using a hard copy-paste into a plain text editor. Many modern ATS platforms parse PDFs well, but a plain-text check is still the cheapest way to catch missing text, reordered content, and broken layout before submission.
- Open the finalized PDF in a standard PDF viewer.
- Select all text (Ctrl+A / Cmd+A) and perform a hard copy.
- Paste the text into a plain text editor (e.g., Notepad on Windows, TextEdit on macOS in plain text mode).
- Review the output.
If the text is out of order, missing entirely, or contains strange characters, the file needs to be fixed before submission. Adjust the layout until the plain-text output reads logically from top to bottom.
4. Anti-Patterns
The hyperlink masking
What it looks like: [View my GitHub profile here](https://github.com/username) Why it fails: When the ATS strips the formatting, the resulting text will just say “View my GitHub profile here,” and the actual URL is lost. What to do instead: Write the URL directly into the text: GitHub profile: github.com/username.
Next step: Extract and inject the right vocabulary using the Keyword strategy.
Section: core sections
This file specifies the safest default sections for an ATS-optimized CV, using standard naming and structural hierarchy.
1. Overview
Applicant Tracking Systems and resume parsers work better with recognizable section names than with novelty labels. This document defines the safest naming patterns and ordering conventions for a machine-readable CV.
2. Core sections and naming rules
Rule: Use standard section headers. Do not use creative variations for core sections. Safe defaults include:
- Contact Information (Do not use a header; place directly at the top)
- Professional Summary
- Work Experience or Experience
- Skills
- Education
Recommendation: Format section headers consistently. ALL CAPS is acceptable, but consistency matters more than the exact visual treatment.
Rule: Structure the CV in reverse-chronological order. Within the Work Experience and Education sections, list entries from the most recent to the oldest.
3. Formatting rules within sections
Rule: Follow the “Top Line” rule for your name. The first line of the document should contain the full name only. Move degrees or credentials to later lines so the file opens with one clean identity signal.
Rule: Place contact information in the document body. Do not put email, phone number, or LinkedIn URL in the header or footer, because these areas are handled less reliably by parsers.
Rule: Use one explicit date format throughout the document. Use an unambiguous format such as MM/YYYY - MM/YYYY or Month YYYY - Month YYYY, and apply it consistently. Do not use seasons such as “Summer 2021” or year-only ranges if a month is known.
4. Examples
Good example:
<!-- CORRECT -->
## Work Experience
**Software Engineer** Tech Corp | San Francisco, CA | 06/2021 - Present
- Bullet point one.
- Bullet point two.
Bad example:
<!-- WRONG -->
## Professional Journey
**Tech Corp** - Software Engineer (Summer '21 to Now)
- Bullet point one.
- Bullet point two.
Why it fails: The header is harder to classify, and the date format is ambiguous.
5. Anti-Patterns
Creative section headers
What it looks like: Using “What I’ve Built” instead of “Work Experience”. Why it fails: The section becomes harder for both parsers and recruiters to classify quickly. What to do instead: Use a standard header such as “Work Experience” or “Experience”.
Next step: Apply the strict layout constraints in Formatting rules.
Section: formatting rules
This file defines conservative CV formatting constraints that improve the odds of clean parsing across Applicant Tracking Systems. Deviation from these layout rules can cause missing, reordered, or poorly classified text.
1. Overview
Applicant Tracking Systems and resume parsers extract text from uploaded files and try to map it into structured fields. They are much less reliable than a human reader when layout becomes decorative. This document defines the safest constraints for fonts, layout, and file types.
2. Layout constraints
Recommendation: Default to one page unless the profile clearly needs more space. This is mainly a recruiting and readability rule, not an ATS rule. For early-career candidates, one page is usually the strongest default.
Rule: Optimize horizontal space and eliminate orphan words. If a bullet point wraps to a new line leaving only one or two words on that line (an “orphan”), you are wasting an entire line of vertical space. Either prune filler words to pull the sentence back onto a single line, or expand the achievement with more metrics to fully utilize the second line.
Rule: Use a strict single-column layout. Multi-column layouts are still one of the most common causes of scrambled extraction. A single column is the safest default across parsers.
Rule: Do not use tables, text boxes, or floating elements. Information placed inside tables or text boxes is more likely to be skipped, reordered, or appended incorrectly during extraction.
Rule: Keep margins within standard limits (0.5” to 1”). Set document margins between 0.5 inches (1.27 cm) and 1 inch (2.54 cm) on all sides. This ensures printing and PDF conversion do not clip text, while maintaining enough “white space” for OCR systems to distinguish between sections.
3. Typography constraints
Rule: Stick to standard system fonts and size. Use established system fonts (Arial, Calibri, Georgia, Helvetica, Times New Roman, or Tahoma). Do not use custom web fonts. Maintain a minimum font size of 10pt, with 11pt body text preferred in most cases.
Recommendation: Disable automatic hyphenation. Do not split words across lines with automatic hyphenation if the template can avoid it. Plain-text extraction is cleaner when keywords stay intact.
Rule: Avoid graphics, icons, and non-standard bullets. Do not use SVG icons, PNG graphics, or custom bullet point shapes that can compile into garbled characters. Stick to simple hyphens or standard solid bullets.
4. File format rules
Rule: Submit CVs in .docx or text-based .pdf format only. If the employer does not specify a format, .docx and text-based .pdf are the safest options. If the employer specifies a format, follow the employer’s instruction.
Recommendation: Use LaTeX (.tex) compiled to PDF for absolute layout control. LaTeX is a strong option for version-controlled, text-first workflows because the source file is plain text and layout is explicit. It is not magic: the exported PDF still needs to pass a plain-text extraction check.
Warning: Never submit an image-based PDF (a scanned document or a flat image saved as a PDF). The ATS may not read the text, resulting in a blank or incomplete profile.
5. Examples
Good example:
<!-- CORRECT -->
- Font: Arial 11pt
- Layout: Single column, left-aligned
- File type: exported from Word as a text-PDF
Good example (LaTeX):
<!-- CORRECT -->
% Standard article class with clean Helvetica font \documentclass[a4paper,10pt]{article} \usepackage[scaled]{helvet} \renewcommand{\familydefault}{\sfdefault} \usepackage[left=1.4cm,right=1.4cm,top=1.2cm,bottom=1.2cm]{geometry}
Bad example:
<!-- WRONG -->
- Font: Custom Google Web Font (Inter)
- Layout: Two-column grid with a sidebar for skills
- File type: JPEG saved inside a PDF container
6. Anti-Patterns
The invisible table hack
What it looks like: Using a two-column table with hidden borders to align dates on the right side of the page.
Why it fails: The parser may read the table in the wrong order, disconnecting the date from the job title.
What to do instead: Use standard tab stops or right-alignment formatting within a single text line to position dates. If using LaTeX, the \hfill command is perfect for this: \textbf{Role}\hfill\textbf{Date} generates the visual space while parsing sequentially as pure text.
Next step: Learn how to test your layout in Common pitfalls.
Section: keyword strategy
This file defines how to identify high-value keywords from a job description and integrate them naturally into a CV for safer ATS parsing and recruiter screening.
1. Overview
ATS platforms and recruiter workflows often use keyword matches, structured fields, and search filters to surface candidates. The exact scoring behavior varies by vendor and employer. This document provides the strategy for identifying the right keywords (hard vs. soft skills) and contextualizing them within the CV without creating spammy or unreadable text.
2. Keyword extraction rules
Rule: Differentiate between hard skills and soft skills. Hard skills are technical abilities, tools, and platforms (e.g., “Python,” “AWS,” “Figma”). These are usually easier for parsers and recruiters to search directly, so prioritize them. Soft skills (e.g., “Leadership,” “Communication”) are secondary and should be demonstrated through context rather than listed verbatim.
Rule: Mirror the exact phrasing of the job description for hard skills. If the job description asks for “Search Engine Optimization,” do not write only “SEO Strategy.” Some systems and recruiter searches still rely on exact string matching.
Rule: Handle acronyms defensively. Include both the spelled-out term and the acronym on the first mention to capture all possible search queries.
Rule: Use Skill Translation for career transitions. Map transferable skills from one industry to the terminology of another. For example, translate “Project Management” in construction to “Agile Delivery” in tech to align with the target ATS dictionary.
3. Keyword integration rules
Recommendation: Contextualize keywords for semantic matching. Modern recruiting tools increasingly use semantic search or AI-assisted screening, but the exact models are usually not public. Integrate target keywords directly into Work Experience bullet points to show how the skill was used and why it mattered. Do not create a massive block of comma-separated keywords at the bottom of the CV.
Rule: Avoid keyword stuffing. Do not hide keywords using white text or artificially repeat a keyword more than naturally required. Parsers may still extract hidden text, and human reviewers can reject the application if the tactic is discovered.
Recommendation: Balance tailoring with speed (The “First-Come” Factor). Do not over-optimize at the expense of time. Many recruiters review applications in arrival order or in batches. A clear, well-tailored CV submitted early can outperform a heavily polished CV submitted after the hiring pipeline is already crowded.
4. Examples
Good example:
<!-- CORRECT -->
- Managed Search Engine Optimization (SEO) strategies across 5 enterprise client accounts, increasing organic traffic by 45% year-over-year.
Why it works: It includes the exact phrasing, the acronym, and provides a contextual metric for the skill.
Bad example:
<!-- WRONG -->
Skills: SEO, Search Engine Optimization, SEO strategy, search engine marketing, leadership, management, team player.
Why it fails: It lists variations of the same keyword without providing context, which reads poorly to humans and can be flagged by ATS filters.
5. Anti-Patterns
The invisible keyword dump
What it looks like: A paragraph of job description keywords copy-pasted at the footer of the CV and changed to white text to blend into the background. Why it fails: ATS parsers extract all text regardless of color. The resulting profile will show a block of disjointed text, causing human recruiters to immediately reject the candidate for attempting to game the system. What to do instead: Integrate the most important keywords naturally into the Professional Summary and Work Experience sections.
Next step: Prove your keywords with impact in Achievement metrics.
Section: sources
This file contains the research, citations, and system documentation that validate the rules and constraints defined in the cv-ats module.
1. Overview
The rules defined in the cv-ats module are based on a mix of university career-center guidance and documentation from resume parsing vendors or ATS platforms. This file favors inspectable sources over generic marketing pages.
2. Core principles
The core principles of ATS optimization stem from the technical limitations of parsing software:
- Parsers extract text from uploaded files and map that text into structured candidate fields.
- Decorative layout elements increase the risk of missing or reordered extraction.
- Plain-text verification is an inexpensive way to catch extraction failures before applying.
3. Sources
- Make your resume ATS-friendly (MIT CAPD) - Strong university source for avoiding tables, text boxes, graphics, and for using a plain-text test.
- How to write an ATS friendly resume (Microsoft Create) - Supports single-column layouts, common fonts, and avoiding graphics or decorative formatting.
- Resumes (Yale Office of Career Strategy) - Provides ATS-formatted resume templates and institutional guidance on resume review workflows.
- What is Resume Parsing and Why You Should be Using it (SmartRecruiters) - Explains resume parsing and gives concrete candidate-side formatting recommendations such as avoiding headers, footers, tables, and scanned PDFs.
- Parse a resume (SmartRecruiters Developers) - Official developer documentation showing that an unparseable resume can fail parsing, for example when the upload is an image.
- Unsuccessful resume parse (Greenhouse Support) - Official support article confirming that formatting issues and oversized files can cause partial or failed parsing.
- Plain Text Resume Parsing for Mobile Devices (Oracle Taleo) - Official documentation showing that pasted plain text is parsed directly into candidate records.