Skip to main content
โšก Calmops

LaTeX Resume and CV Templates: Professional Document Creation

Introduction

Your resume often serves as the first impression in job applications. While content quality matters most, document presentation influences how recruiters perceive your attention to detail and professionalism. LaTeX provides capabilities to create polished, ATS-friendly resumes that stand out from the typical Word documents.

This guide covers everything needed to create professional resumes and CVs using LaTeX, from selecting appropriate templates to customizing styling and optimizing for applicant tracking systems.

Why Use LaTeX for Resumes?

LaTeX offers several advantages for resume creation that justify the learning investment. The consistent spacing and typography produce professional-looking documents without manual formatting adjustments. Since LaTeX handles layout automatically, you achieve consistent results across different sections without worrying about alignment or spacing inconsistencies.

Version control works naturally with LaTeX resumes. You can maintain different versions for different job applications, track changes over time, and easily revert to previous versions if needed. This becomes valuable as your career progresses and you update your resume repeatedly.

The plain text format means your resume renders identically on any system with a LaTeX distribution. There’s no risk of formatting breaking when someone opens your document, a common problem with Word files that appear differently depending on installed fonts and versions.

ModernCV: The Classic Choice

ModernCV provides a complete resume/CV class with multiple color schemes and layout options. It’s the most popular LaTeX resume template for good reason:

\documentclass[11pt,a4paper,sans]{moderncv}

\moderncvstyle{casual}
\moderncvcolor{blue}

\name{John}{Doe}
\phone{+1 234 567 890}
\email{[email protected]}
\homepage{www.johndoe.com}
\social[linkedin]{johndoe}
\social[github]{johndoe}

\begin{document}

\makecvtitle

\section{Experience}
\cventry{2023--Present}{Senior Software Engineer}{Tech Company Inc.}{San Francisco}{}{
Led development of microservices architecture serving 10M+ users.
Implemented CI/CD pipelines reducing deployment time by 60\%.
Mentored junior developers and conducted code reviews.
}

\cventry{2020--2023}{Software Engineer}{StartupXYZ}{New York}{}{
Built RESTful APIs using Python and FastAPI.
Developed real-time data processing pipelines with Apache Kafka.
Collaborated with product team to define technical requirements.
}

\section{Education}
\cventry{2016--2020}{B.S. Computer Science}{University of Technology}{GPA: 3.8}{}{
Relevant coursework: Data Structures, Algorithms, Database Systems
}

\section{Skills}
\cvitem{Programming}{Python, JavaScript, Go, SQL}
\cvitem{Cloud}{AWS, GCP, Kubernetes, Docker}
\cvitem{Tools}{Git, Linux, Terraform}

\section{Languages}
\cvitemwithcomment{English}{Native}{}
\cvitemwithcomment{Spanish}{Professional}{Working proficiency}

\end{document}

ModernCV offers four style variants: casual, classic, banking, and oldstyle. Each provides a distinct visual identity while maintaining professional presentation.

AltaCV: Modern and Flexible

AltaCV provides a more contemporary design with support for profile photos and two-column layouts:

\documentclass[11pt,a4paper]{article}

\usepackage[margin=2cm]{geometry}
\usepackage{ AltaCV }

\personalinfo{
  \name{John}{Doe}
  \photo{profile.jpg}{4cm}
  \email{[email protected]}
  \phone{+1 234 567 890}
  \linkedin{johndoe}
  \github{johndoe}
  \location{San Francisco, CA}
}

\begin{document}

\makecvheader

\cvsection{Summary}
\cvtext{Results-driven software engineer with 5+ years of experience in distributed systems and cloud architecture. Passionate about building scalable solutions and mentoring teams.}

\cvsection{Experience}

\cvachievement{\faBriefcase}{Senior Software Engineer}{Tech Company Inc.}{2023--Present}{
\begin{itemize}
  \item Led architecture redesign improving system throughput by 300\%
  \item Implemented monitoring solutions reducing MTTR by 45\%
  \item Established coding standards and best practices documentation
\end{itemize}
}

\cvachievement{\faBriefcase}{Software Engineer}{StartupXYZ}{2020--2023}{
\begin{itemize}
  \item Developed microservices handling 1M+ daily requests
  \item Reduced database query times by 70\% through optimization
  \item Built automated testing framework increasing coverage to 85\%
\end{itemize}
}

\cvsection{Education}
\cvschool{B.S. Computer Science}{University of Technology}{2016--2020}{GPA: 3.8}

\cvsection{Skills}
\cvtag{Python} \cvtag{Go} \cvtag{JavaScript}
\cvtag{AWS} \cvtag{Kubernetes} \cvtag{Docker}
\cvtag{Git} \cvtag{Linux} \cvtag{SQL}

\end{document}

TwentySecondCV: Clean Two-Column Layout

For a modern two-column design, TwentySecondCV provides excellent structure:

\documentclass[letterpaper]{twentysecondcv}

\personalinfo{
  \name{John}{Doe}
  \mailaddress{[email protected]}
  \phone{+1 234 567 890}
  \homepage{www.johndoe.com}
  \github{johndoe}
  \linkedin{johndoe}
  \location{San Francisco, CA}
}

\makeprofile

\begin{document}

\section{about me}
Results-driven software engineer with expertise in distributed systems and cloud-native development. Strong advocate for clean code and automated testing.

\section{experience}
\job{2023--Present}{Senior Software Engineer}{Tech Company Inc.}{Led team of 5 engineers building high-performance APIs. Architected microservices handling 50M daily requests.}

\job{2020--2023}{Software Engineer}{StartupXYZ}{Built real-time analytics platform. Implemented event-driven architecture using Kafka and Redis.}

\section{education}
\job{2016--2020}{B.S. Computer Science}{University}{Graduated with honors, GPA 3.8}

\section{skills}
\skill{Python}
\skill{Go}
\skill{JavaScript}
\skill{AWS}
\skill{Kubernetes}
\skill{Docker}

\end{document}

Creating Custom Resume Layouts

While templates provide excellent starting points, custom layouts allow precise control over your resume’s appearance. Here’s a custom two-column resume structure:

\documentclass[11pt]{article}

\usepackage[margin=1in]{geometry}
\usepackage{parskip}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage{fontawesome5}

\titleformat{\section}{\large\bfseries\uppercase}{}{0em}{}[\titlerule]
\titlespacing{\section}{0pt}{12pt}{6pt}

\begin{document}

\begin{center}
{\LARGE\bfseries John Doe}\par
\vspace{6pt}
\faEnvelope\ [email protected] \quad
\faPhone\ +1 234 567 890 \quad
\faMapMarker\ San Francisco, CA\par
\faLinkedin\ linkedin.com/in/johndoe \quad
\faGithub\ github.com/johndoe
\end{center}

\vspace{12pt}

\section{Technical Skills}
\begin{tabular}{ll}
\textbf{Languages:} & Python, Go, JavaScript, TypeScript, SQL \\
\textbf{Cloud/DevOps:} & AWS, GCP, Kubernetes, Docker, Terraform, CI/CD \\
\textbf{Frameworks:} & React, FastAPI, Django, Node.js \\
\textbf{Databases:} & PostgreSQL, MongoDB, Redis, Elasticsearch \\
\textbf{Tools:} & Git, Linux, Agile, Scrum
\end{tabular}

\section{Professional Experience}

\subsection*{Senior Software Engineer \hfill Tech Company Inc.}
\textit{2023 -- Present}
\begin{itemize}[noitemsep]
  \item Led development of microservices platform serving 10M+ users
  \item Architected real-time data pipeline processing 50K events/second
  \item Implemented infrastructure-as-code reducing deployment time by 70\%
  \item Mentored team of 4 junior developers, established code review standards
\end{itemize}

\subsection*{Software Engineer \hfill StartupXYZ}
\textit{2020 -- 2023}
\begin{itemize}[noitemsep]
  \item Built RESTful APIs consumed by web and mobile applications
  \item Developed analytics dashboard with sub-second query performance
  \item Integrated third-party services and payment processing
  \item Wrote comprehensive documentation and technical specifications
\end{itemize}

\subsection*{Junior Developer \subsectionmark{Developer}}
\textit{2018 -- 2020}
\begin{itemize}[noitemsep]
  \item Developed frontend components using React and Redux
  \item Participated in agile ceremonies and sprint planning
  \item Contributed to open-source projects
\end{itemize}

\section{Education}

\subsection*{B.S. Computer Science \hfill University of Technology}
\textit{2014 -- 2018} \hfill GPA: 3.8

\section{Certifications}
\begin{itemize}[noitemsep]
  \item AWS Certified Solutions Architect -- Associate (2024)
  \item Google Cloud Professional Data Engineer (2023)
  \item Certified Kubernetes Administrator (2022)
\end{itemize}

\end{document}

ATS Optimization

Applicant Tracking Systems parse resumes to extract relevant information. While LaTeX produces excellent visual output, you should ensure your resume remains ATS-compatible.

Clean Structure

ATS systems parse based on section headings. Use standard section titles like “Experience,” “Education,” and “Skills” rather than creative alternatives. ModernCV and similar templates use recognizable headings by default.

Avoid complex layouts with multiple columns, text boxes, or graphics. While these look professional to humans, they can confuse ATS parsers. If using a two-column layout, ensure the important information appears in the main parsing column.

Keyword Optimization

Review job descriptions to identify keywords and phrases the ATS likely scans for. Include these naturally throughout your resume, particularly in skills sections and job descriptions. Use standard skill namesโ€”write “JavaScript” rather than “JS” to maximize keyword matching.

However, avoid keyword stuffing. ATS systems increasingly detect unnatural repetition, and human readers will notice obviously forced inclusions.

File Format

Submit resumes in both PDF and plain text versions when possible. PDF preserves formatting while text versions ensure parsing compatibility. Name your file professionally: “John_Doe_Resume.pdf” rather than “resume_final_v3.pdf.”

Best Practices for Resume Content

Quantify Achievements

Replace generic responsibility descriptions with quantified achievements:

\begin{verbatim} Poor: “Responsible for improving database performance” Better: “Reduced average query time from 2s to 50ms” \end{verbatim}

LaTeX’s alignment features help present these metrics cleanly alongside descriptions.

\subsection*{Consistent Verb Tenses}

Use past tense for previous positions and present tense for current roles:

\cventry{2023--Present}{Engineer}{Company}{Location}{}{
Led development...          % Present for current role
Managed team of 4...         % Past for previous role
}

\subsection*{Bullet Point Formatting}

Keep bullet points concise, typically one to two lines. Use consistent punctuation and capitalization throughout:

\begin{itemize}
  \item Led architecture redesign improving throughput by 300\%
  \item Implemented monitoring reducing MTTR by 45\%
  \item Established coding standards and documentation
\end{itemize}

Version Control for Resumes

Treat your resume as code with version control:

git init resume
cd resume
git checkout -b job-application-amazon
# Edit resume for Amazon application
git add resume.tex
git commit -m "Tailor resume for Amazon SWE role"

Create branches for different job applications, maintaining a main branch with your master resume. This lets you customize for specific roles while preserving a canonical version.

Template Variables

For multiple applications, use variables to customize content:

\def\targetcompany{Amazon}
\def\targetrole{Senior Software Engineer}

\ifnum\equal{\targetcompany}{Google}
  \def\focusarea{distributed systems}
\else
  \def\focusarea{cloud architecture}
\fi

This allows quick customization while maintaining consistent base content.

Export and Distribution

PDF Generation

Generate PDFs using pdflatex or XeLaTeX for best results:

pdflatex resume.tex
biber resume  # If using bibliography
pdflatex resume.tex

For Unicode support with special characters, use XeLaTeX:

xelatex resume.tex

Quality Verification

Before submitting, verify your PDF:

\begin{itemize} \item Check that all fonts embed correctly \item Ensure hyperlinks work (using hyperref package) \item Verify text is selectable (not flattened to images) \item Test on different PDF viewers \item Print preview to catch formatting issues \end{itemize}

Conclusion

LaTeX provides powerful tools for creating professional resumes that stand out. Whether using established templates like ModernCV or building custom layouts, LaTeX ensures consistent, polished output that conveys professionalism.

The investment in learning LaTeX pays dividends beyond resumesโ€”these skills transfer to papers, reports, and technical documentation throughout your career. With the templates and techniques in this guide, you’re equipped to create resumes that make strong first impressions.

Remember that formatting supports rather than replaces content. The best resume template cannot compensate for unclear achievements or poorly organized experience. Use LaTeX to present your qualifications professionally, then focus energy on ensuring those qualifications are genuinely compelling.

Resources

Comments