Click the green "Use this template" button at the top of the page, then choose "Create a new repository".
This will create your own copy of this project, which you can modify freely — no need to fork!
This repository is based on a LaTeX Docker container which is very easy to use even for people without Docker knowledge. The only thing you need is to install Docker Desktop, which is super easy and straightforward. This approach eliminates all the headaches of setting up a LaTeX environment locally while providing a full-featured system that works perfectly across all operating systems. A major advantage over Overleaf is that you can use GitHub Copilot in VS Code or Cursor here, which significantly enhances productivity when working with LaTeX.
This repository provides comprehensive resources and practical guidance for creating professional resumes targeted specifically at tech industry positions.
Getting started with this LaTeX resume environment is simple:
-
Prerequisites: Install Docker Desktop, Cursor or VS Code with Dev Containers extension
-
Clone Repository:
# Clone this repository git clone <repository-url> cd Resume_CV_ATS-Friendly
-
Open in Editor:
- Open with Cursor:
cursor .
- Open with VS Code:
code .
- Or use the editor's GUI to open the folder
- Open with Cursor:
-
Start Container (Two Methods):
Method 1 - Using Dev Containers (Recommended):
- If prompted, select
Reopen in Container
- If not prompted, press
Ctrl+Shift+P
then selectDev Containers: Rebuild and Reopen in Container
- Shutdown: Simply close the editor window when finished - it will automatically handle stopping the container
Method 2 - Using Docker Compose:
- Start the container from the terminal:
docker-compose up -d --build
- Shutdown: Simply close the editor window when finished - it will automatically handle stopping the container
- If prompted, select
-
Edit LaTeX Files:
- Navigate to the
personal-resume
directory and create a separate folder for each resume you want to make. This keeps your files organized, as each.tex
file generates multiple supporting files when compiled. - Copy a
.tex
template from theATS-Friendly-Templates
folder into your new resume folder insidepersonal-resumes
. - Click the play button in the top right to compile the
.tex
file. You only need to do this once - after that, it will compile automatically when you make changes. - Open the
.pdf
file next to your.tex
file to view your resume. Unlike Overleaf, you'll see all changes update instantly in the PDF as you edit. - All changes are automatically saved to your local workspace.
- Use Copilot and other extensions to help you write better LaTeX code.
- Important: Enable Auto Save in VS Code/Cursor by going to File > Auto Save. This prevents losing your work and only needs to be set up once - it will apply to all files and repositories.
- Navigate to the
Table of Contents
3. Applicant Tracking Systems (ATS)
3.2. How ATS Systems Process Resumes
3.3. Key Strategies for ATS Optimization
3.4. Formatting Rules for ATS Compatibility
3.5. Common Mistakes That Trigger Rejection
3.6. Section & Field Best Practices
3.7. Testing & Optimization Tools
3.8. Advanced Optimization Tips
3.9. Quick Self-Check Before Submitting
This repository serves as a comprehensive guide for creating professional, ATS-friendly resumes using LaTeX. It includes templates, best practices, and detailed instructions that help job seekers in the tech industry create resumes that pass through Applicant Tracking Systems while maintaining a professional appearance. The resources here are designed to be practical, actionable, and based on current industry standards.
This tutorial is designed for several groups of users:
- Job seekers in tech fields: Software engineers, data scientists, UX/UI designers, product managers, and other technical professionals looking to optimize their resumes
- Recent graduates or career changers: Those entering the tech industry who need guidance on creating industry-specific resumes
- Career coaches and mentors: Professionals who help others with job search materials
- LaTeX beginners and experts: Whether you're new to LaTeX or experienced, you'll find value in adapting professional templates for tech resumes
By following this repository's guidance, you will learn:
- How to set up and use LaTeX for resume creation with VS Code across different operating systems
- Understanding of Applicant Tracking Systems (ATS) and how to optimize your resume for them
- Strategic selection of fonts, layouts, and formatting to appeal to tech employers
- Best practices for structuring content to highlight technical skills and accomplishments
- How to create a resume that balances machine readability with human appeal
- Techniques for customizing resumes for specific job postings without starting from scratch each time
- Version control strategies for maintaining multiple resume versions
- You can jump directly to the ATS optimization sections
- Browse the templates directory for inspiration
- Consider contributing your own templates or improvements
- Follow the LaTeX installation guide for your operating system
- Start with the beginner-friendly templates
- Take time to understand the template structure before making extensive modifications
- Begin with the "Introduction to LaTeX" tutorial
- Follow the step-by-step guides for installation and setup
- Use the provided templates with minimal modifications initially
- Consider reading the recommended resources on resume content before diving into formatting
Folder PATH listing
+---.devcontainer <-- Dev container config
│ devcontainer.json <-- VS Code dev container settings
│ docker-compose.yml <-- Docker compose configuration
│ README.md <-- Dev container documentation
│
+---ATS-Friendly-Templates <-- ATS-friendly resume templates
│ base-rover.pdf <-- Base rover resume PDF
│ base-rover.tex <-- Base rover resume LaTeX source
│ fancy-rover.pdf <-- Fancy rover resume PDF
│ fancy-rover.tex <-- Fancy rover resume LaTeX source
│ README.md <-- Templates documentation
│
+---images <-- Image resources
│ banner.png <-- Banner image
│ base-rover.jpg <-- Base rover template preview
│ base-rover-on-notepad.jpg <-- ATS compatibility example
│ fancy-rover.jpg <-- Fancy rover template preview
│ fancy-rover-on-notepad.jpg <-- Non-ATS compatible example
│ README.md <-- Images documentation
│
+---personal-resumes <-- Personal resume examples
│ +---Mostafa_base-rover <-- Mostafa's base rover resume
│ +---Mostafa_fancy-rover <-- Mostafa's fancy rover resume
│ README.md <-- Personal resumes overview
│
│ .gitignore <-- Git exclusions
│ docker-compose.yml <-- Root Docker compose file (for quick dcu/dcd)
│ LICENSE <-- License information
│ README.md <-- Project overview
Choosing the right LaTeX environment is crucial for creating professional resumes efficiently. This section outlines the recommended options for working with LaTeX, with a focus on reliability, ease of use, and compatibility with modern development tools. We'll explore both containerized solutions and web-based platforms to help you select the approach that best fits your workflow.
Based on our experience, we recommend two primary approaches for working with LaTeX for your resume projects. Local installations of LaTeX on Windows and WSL can be problematic and time-consuming, so we recommend these more reliable options:
Best For:
- Users who need AI assistance with Cursor Copilot, need offline capabilities, or prefer working in their own development environment.
Feature | Description |
---|---|
Full Capabilities | Docker-based LaTeX provides complete functionality equivalent to traditional installations |
Environment Control | Offers full control over package installation and configuration |
Consistency | Ensures identical behavior across different machines and operating systems |
Integration | Works seamlessly with local development tools like Cursor Copilot |
Collaboration | Can be paired with GitHub workflows for version control and team collaboration |
Isolation | Keeps LaTeX environment separate from host system, preventing conflicts |
Portability | Easy to replicate environment on different machines without lengthy setup |
Best For:
- Users who prioritize ease of use, frequent collaboration, or need to access documents from multiple devices without setup.
Feature | Description |
---|---|
Accessibility | Web-based interface accessible from any device with internet connection |
Zero Setup | Eliminates need for local installation or configuration |
Built-in Collaboration | Supports real-time editing with multiple users simultaneously |
User-Friendly | Designed with intuitive interface for both beginners and advanced users |
Templates | Provides extensive library of pre-designed templates |
Limited Offline Use | Requires internet connection for most functionality |
Our repository uses the texlive/texlive
Docker image (texlive/texlive:latest
), specifically configured for Cursor Copilot integration. This image was chosen for several important reasons:
Feature | Description |
---|---|
Complete TeXLive Distribution | Includes the full TeX Live 2025 distribution with most LaTeX packages |
Debian-Based | Built on Debian for better compatibility with Cursor AI |
Optimized for Dev Containers | Works well with VS Code/Cursor dev container workflows |
Pre-configured LaTeX Workshop | Works seamlessly with the LaTeX Workshop extension |
Regular Maintenance | Actively maintained with updates |
Avoid Alpine Issues | Prevents common Alpine Linux compatibility problems with LaTeX |
Our container setup includes:
Extension | Purpose | Benefits |
---|---|---|
LaTeX Workshop | Compilation and preview | Automatic builds, PDF preview, syntax highlighting |
LaTeX Utilities | Enhanced LaTeX editing | Smart environments, math preview, better snippets |
LTeX | Grammar checking | Language-aware proofreading for LaTeX documents |
Code Spell Checker | Spell checking | Identifies typos in code and text |
Copilot | AI assistance | Code completion and suggestions for LaTeX |
The container is configured to:
- Automatically build LaTeX documents on save
- Clean auxiliary files after successful builds
- Use SyncTeX for synchronized PDF viewing
- Update all TeX packages on container startup
You can see the full configuration in the .devcontainer/devcontainer.json
file.
The Docker image (texlive/texlive:latest
) is large due to the comprehensive nature of the full TeX Live distribution:
- Actual installed size: 4.4 GB for the TeX Live installation in our current container
- Total container size: Around 4-5 GB download, using approximately 5-7 GB on disk
You can check the size of your TeX Live installation inside the container with:
# Check TeX Live installation size
du -sh /usr/local/texlive
# Check overall disk usage
df -h
Example output showing the TeX Live installation size:
4.4G /usr/local/texlive
You can check Docker image sizes on your host system (not inside the container) with:
# List all Docker images with sizes
docker images
# Or check a specific image (returns empty if not downloaded yet)
docker images texlive/texlive:latest
If a specific image search returns no results, it means that image hasn't been downloaded to your system yet. The image is only downloaded when you first use it.
Example output showing the TeX Live image:
IMAGE ID REPOSITORY TAG SIZE CREATED
8a56b68b4458 texlive/texlive latest 4.51GB 2 weeks ago
This is normal for a complete LaTeX environment that includes thousands of packages, fonts, and documentation. Some key points to understand:
- The image is only downloaded once and cached locally by Docker
- Subsequent project openings reuse the cached image without re-downloading
- The container is created when you open the project and removed when you close your editor
- Docker only downloads updates when the base image changes
If you're concerned about disk space, smaller alternatives like ghcr.io/qdm12/latexdevcontainer:latest-basic
(around 2-3 GB) are available, but they include fewer LaTeX packages and may not support all advanced resume templates.
Use the LaTeX Workshop extension:
- Name: LaTeX Workshop
- ID:
James-Yu.latex-workshop
- Marketplace: View on VS Code Marketplace
- Live PDF preview with sync (forward/inverse search)
- Auto build on save
- Syntax highlighting and snippet support
- IntelliSense for citations, labels, and refs
- Works with both Windows and WSL backends
While this repository uses and recommends the TeX Live 2025 environment described above, some users may prefer alternative LaTeX environments:
- Overleaf: A popular online LaTeX editor with real-time collaboration
- ShareLaTeX Docker Container: For those who want a local web-based interface:
# Basic command to run ShareLaTeX locally docker run -d -p 80:80 -v sharelatex_data:/var/lib/sharelatex --name mylatex sharelatex/sharelatex
These alternatives offer web-based interfaces that some users may find more familiar. However, they lack direct integration with Cursor AI and have more limited offline capabilities compared to the TeX Live setup.
For most resume projects, the TeX Live 2025 environment recommended in section 2.2 provides the best combination of features, flexibility, and AI integration.
Understanding how Applicant Tracking Systems work is essential for creating resumes that successfully navigate the initial screening process. This section provides a comprehensive overview of ATS functionality, optimization strategies, and formatting rules that will help your resume reach human reviewers. Follow these guidelines to ensure your qualifications aren't filtered out by automated systems.
An Applicant Tracking System (ATS) is software that employers use to manage job applications and screen candidates. Key facts:
- 95%+ of Fortune 500 companies use ATS software
- ATS filters out 75% of resumes before a human sees them
- Average corporate job posting receives 250+ applications
- Most resumes are reviewed for only 6-7 seconds by humans (if they pass ATS)
Think of an ATS as a digital gatekeeper that determines if your resume reaches human reviewers.
Process Step | Description |
---|---|
Resume Parsing | ATS extracts text from your document and categorizes information into predefined fields (name, work history, education, skills) |
Keyword Matching | Compares your resume against job description keywords and qualification requirements |
Ranking | Assigns scores to candidates based on matching criteria |
Database Storage | Saves your resume and information in searchable format |
Filtering | Screens out candidates who don't meet minimum requirements |
Strategy | Implementation |
---|---|
Match the Job Description | Tailor resume keywords to match each specific job posting |
Use Standard Sections | Include clearly labeled sections for Experience, Skills, Education |
Include Hard Skills | List relevant technical skills, certifications, and software proficiencies |
Format Simply | Use clean, standard fonts and straightforward layouts |
Keyword Placement | Include key terms in work experience (not just skills section) |
Guideline | Why It Matters | Quick Tip |
---|---|---|
Stick to standard fonts | ATS parsers are trained on common system fonts; exotic ones can become garbled text | Use Arial, Calibri, or Times New Roman at 10–12 pt |
Use a single-column layout | Columns, text boxes, headers/footers, and graphics can break parsing | Build in a plain Word doc, not a designer template |
Save as .docx unless told otherwise | Some ATS struggle with PDFs; .docx is universally readable | Switch to PDF only if the posting explicitly requires it |
Left-align everything | Ensures a predictable reading order | Avoid centering critical details like dates or job titles |
Name the file clearly | Recruiters search filenames inside the ATS | Mostafa_Rezaee_ML_Engineer.docx |
- Graphic résumé templates (infographics, headshots, charts)
- Keyword stuffing—repeating "Python" 20 × with no context lowers match score
- Important data in images (e.g., certification logos)
- Acronyms without the long form: write "Natural Language Processing (NLP)" the first time
- Uncommon section titles: use "Professional Experience," not "My Journey"
Section | Tips for ATS |
---|---|
Contact | Put phone, email, LinkedIn on one line; skip graphics |
Professional Summary | 2–3 lines rich in role-specific keywords ("Dockerized ML APIs" vs "hard-working professional") |
Skills | Separate Hard Skills (Python, Kubernetes) and Tools/Frameworks (Docker, FastAPI); use plain bullets |
Experience | Start each bullet with an action verb + measurable impact + embedded keyword ("Deployed Docker-based FastAPI recommender, cutting inference latency 40 ms") |
Education/Certifications | List formal degrees first, certs second; spell out acronyms once |
Tool | What It Does | How to Use |
---|---|---|
Jobscan | Compares a résumé to a specific job description; returns a match score and keyword gaps | Iteratively tweak until you reach ≥ 75 % match |
Resume Worded / TopResume | Free résumé graders that flag formatting and ATS issues | Upload your file, apply the fixes they suggest, then rescan |
Indeed "Preview Résumé" | Shows how Indeed's ATS will parse your document before you submit | Paste or upload your résumé text and check for missing fields |
-
Mirror the job title exactly once under your name if you're a close fit (e.g., Machine Learning Engineer).
-
Embed context keywords in accomplishments, not just a skills list—ATS algorithms weight experience bullets more heavily.
-
Keep dates in the same format (MM/YYYY or YYYY) throughout; inconsistent patterns can scramble timelines.
-
Refresh older roles with 1-line summaries so long careers don't exceed two pages; ATS ranks recent matches higher.
-
Condense older positions (7+ years old) into single-line summaries with just title, company, years, and one key achievement with relevant skills—focus detailed bullets on recent roles that ATS weights more heavily.
-
Use proper hyperlinks in digital versions by including the full URL text alongside any hyperlinked text (e.g., "Portfolio: johndoe.com [https://www.johndoe.com]"). Never use URL shorteners as recruiters and hiring managers may ignore or skip them due to uncertainty about their destination.
Note for Rover resume template users: The basic Rover template doesn't support hyperlinks by default. Add these packages to your preamble, after
\documentclass
and before\begin{document}
:\usepackage{hyperref} % for links \usepackage{textcomp} % for \textdollar command
Then you can create links with:
\href{https://www.example.com}{Link Text}
-
Right-align dates and locations to create a cleaner, more structured layout that makes your timeline easy to scan.
Note for Rover resume template users: The basic Rover template doesn't support right-aligned elements by default. Add these packages to your preamble, after
\documentclass
and before\begin{document}
:% Disable hyphenation and use looser line-breaking to prevent overflow \usepackage[none]{hyphenat} % ← Disable hyphenation \emergencystretch=2em % ← Looser line-breaking to prevent overflow
This will improve the layout and prevent text overflow issues.
-
Test PDF Text Extraction:
- Open the compiled PDF
- Select all text (Ctrl+A)
- Copy and paste into a .txt file or plain editor
- If everything pastes cleanly and in the right order, including your contact info and job history → you're likely safe
- If text appears garbled, out of order, or some parts don't paste at all → not ATS-friendly
Here are an example of ATS-friendly resume when pasted into Notepad:
-
Run a test scan using one of the tools above.
-
Verify keyword density is natural—aim for ~2 % of total words.
-
Confirm file name & format follow the job posting instructions.
Below are some outstanding examples of LaTeX resumes that demonstrate effective formatting, content organization, and ATS compatibility. These templates can serve as inspiration for creating your own professional resume. Each example shows how to balance visual appeal with machine readability—a critical consideration in today's job application process.
Typography and layout play crucial roles in creating effective resumes, impacting both human readability and ATS compatibility. The design choices you make can significantly influence how your resume is perceived by recruiters and processed by automated systems. This section provides comprehensive guidance on selecting appropriate fonts for pdfLaTeX and implementing typography and layout best practices.
IMPORTANT ATS COMPATIBILITY NOTE
pdfLaTeX is the recommended LaTeX engine for resumes as it produces highly ATS-friendly documents that parsing systems can reliably extract text from.
For maximum ATS compatibility, use pdfLaTeX with standard fonts that are natively supported by this engine.
pdfLaTeX works with several font packages that provide excellent alternatives to the default Computer Modern:
% In your preamble (after \documentclass, before \begin{document})
% For Helvetica-like sans-serif
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
% For Times Roman-like serif
\usepackage{mathptmx}
% For Palatino
\usepackage{palatino}
% For Bookman
\usepackage{bookman}
% For Charter
\usepackage{charter}
% For Garamond-like fonts
\usepackage{ebgaramond}
When submitting through ATS systems, use these safe font choices:
- Body text: Helvetica, Times Roman, Palatino, or Charter (11pt)
- Section headings: Same font as body, but bold (14pt)
- LaTeX engine: pdfLaTeX
- Comic Sans / Papyrus – Unprofessional; credibility killer.
- Display or script faces – Contain non-standard ligatures that can scramble ATS parsing.
- Icon/Web fonts (e.g., Font Awesome) – ATS cannot read icons; vital info disappears.
- Custom or uncommon fonts – May not be properly extracted by ATS systems, causing parsing failures.
- Fonts not natively supported by pdfLaTeX – Require engine switching which can reduce ATS compatibility.
Font Package | Style | Best Use & Rationale | ATS Compatibility |
---|---|---|---|
helvet | Sans-serif | Clean, modern equivalent to Helvetica; excellent for tech roles | Excellent |
mathptmx | Serif | Times Roman equivalent; traditional and highly readable | Excellent |
palatino | Serif | Elegant with good readability; slightly wider than Times | Excellent |
charter | Serif | Clean, professional serif with good screen readability | Excellent |
bookman | Serif | Bold, distinctive serif for traditional industries | Excellent |
avant | Sans-serif | Alternative sans-serif option; good for headings | Excellent |
Implementation Example:
% Modern, clean sans-serif (similar to Helvetica)
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
% For better spacing and hyphenation
\usepackage[none]{hyphenat} % Disable hyphenation
\emergencystretch=2em % Looser line-breaking to prevent overflow
Best Practice | Implementation in LaTeX | ATS Benefit |
---|---|---|
Consistent spacing | \setlength{\parskip}{6pt} |
Improves parsing accuracy |
Proper document structure | Use standard section commands | Helps ATS categorize content |
Simple bullets | \usepackage{enumitem} with basic settings |
Ensures list content is correctly extracted |
Left alignment | Default in most templates | Maintains reading order for parsers |
Clean hyperlinks | \usepackage{hyperref} with visible URLs |
Makes contact info accessible |
Guidelines:
- Limit yourself to one body font plus one heading font.
- Body size 10–12 pt; headings 12–14 pt for serif, 14–16 pt for sans-serif.
- Use default LaTeX packages available with pdfLaTeX.
- Avoid any font that swaps letters for glyphs or uses advanced ligatures.
For maximum ATS compatibility with good visual design:
-
Fonts & Sizes
- Body text: Helvetica or Times Roman 11 pt (via helvet or mathptmx packages)
- Section headings: Same font, Bold, 14 pt
- LaTeX engine: pdfLaTeX
- Rationale: These fonts are universally recognized by ATS systems.
-
File Format
- Generate with pdfLaTeX for best text extraction.
- Submit as .pdf unless the job post specifically requests .docx.
- If using Word: File → Options → Save → "Embed fonts in the file".
-
Layout
- Single column, fully left-aligned.
- Standard section titles only: Summary, Experience, Education, Skills, Certifications.
- No tables, text boxes, graphics, or page borders.
-
Spacing & Margins
- Line spacing 1.3 (achieved with
\linespread{1.3}
in LaTeX). - 6 pt space after each paragraph with
\setlength{\parskip}{6pt}
. - Page margins 0.65 in on all sides using
\usepackage[margin=0.65in]{geometry}
.
- Line spacing 1.3 (achieved with
-
Text Styling
- Bold section headings with
\textbf{}
. - Use basic bullets with
\usepackage{enumitem}
. - Text color black on white background—no shading or color accents.
- Bold section headings with
-
LaTeX-Specific Tips
- Use
\usepackage{hyperref}
for properly formatted links. - Add
\usepackage[none]{hyphenat}
to prevent hyphenation issues. - Consider
\usepackage{ragged2e}
for better text alignment. - Include
\usepackage{microtype}
for improved typography and spacing.
- Use
-
File Naming Convention
Lastname_Firstname_TargetRole.pdf
Example:Rezaee_Mostafa_ML_Engineer.pdf
-
Final QA Checklist (60 seconds)
- Open in Adobe Reader and try to select/copy text—all text should be selectable.
- Run a quick scan with Jobscan or Resume Worded; fix any missing keywords.
- Confirm file size ≤ 500 KB.
- Test PDF text extraction with a free online PDF-to-text converter to simulate ATS parsing.
Apply these eight rules verbatim and your résumé will render identically on any recruiter's screen, remain perfectly parsable by every major Applicant Tracking System, and present a crisp, professional aesthetic suited to tech or start-up roles.
For questions not addressed in the resources above, please connect with Mostafa Rezaee on LinkedIn for personalized assistance.