Skip to content

ozankiratli/Resume-ATS-Friendly

Repository files navigation

drevo — ATS-Friendly LaTeX Resume & Cover Letter

License: LPPL 1.3c Version

A modern, ATS-friendly LaTeX document class for resumes/CVs and cover letters, built on top of moderncv. Designed to maximize readability by Applicant Tracking Systems while still producing a clean, professional-looking document.


✨ Features

  • ATS-friendly — avoids tables and complex layouts that confuse parsers; uses semantic, linear text flow
  • Two document classesdrevoresumecv for resumes/CVs, drevocover for cover letters
  • Specialized section commands — purpose-built commands for experience, education, skills, honors, talks, outreach, and more
  • Auto-generated smart footer — name, email, and social links built automatically from preamble declarations
  • Multi-page aware — smart footer shows page numbers and full socials on even pages
  • Flexible name formatting — supports prefix (Dr., Prof.), middle name, and suffix (Jr., Ph.D.)
  • Biblatex integration — publications section with author highlighting out of the box
  • Highly customizable — fine-grained length controls for spacing, indentation, column widths

📋 Prerequisites

You need a LaTeX distribution with the following packages available:

  • moderncv
  • sourcesanspro
  • biblatex with biber backend (resume class only)
  • geometry, inputenc, fontenc
  • multicol, enumitem, xcolor, amssymb, array, ifthen
  • lastpage, tabto, fancyhdr, needspace, setspace, import

All of these are included in a standard TeX Live or MiKTeX installation.

Recommended Compiler

lualatex  →  biber  →  lualatex  →  lualatex

Or with pdflatex:

pdflatex  →  biber  →  pdflatex  →  pdflatex

📁 File Structure

Resume-ATS-Friendly/
├── drevoresumecv.cls     # Resume/CV document class
├── drevocover.cls        # Cover letter document class
├── Resume.tex            # Example resume
├── CoverLetter.tex       # Example cover letter
├── MyPublications.bib    # Example bibliography file
├── Resume.pdf            # Compiled example resume
└── CoverLetter.pdf       # Compiled example cover letter

🚀 Quick Start

Resume

\documentclass[details]{drevoresumecv}

% Personal info
\firstname{Jane}
\middlename{A.}
\lastname{Doe}
\title{Software Engineer}
\email{jane.doe@example.com}
\phone[mobile]{+1~(555)~123~4567}
\address{New York}{NY}{USA}

% Social links (also auto-populate the footer)
\linkedin{janedoe}
\github{janedoe}
\website{janedoe.dev}

% Bibliography for publications
\addbibresource{MyPublications.bib}

\begin{document}

\begin{cvsection}{Experience}
  \cvexperience{2022 -- Present}{Senior Engineer}{Acme Corp.}{New York, NY}{Full-time}{
    \cvlistitem{Led migration of monolithic app to microservices.}
    \cvlistitem{Reduced deployment time by 40\%.}
  }
\end{cvsection}

\begin{cvsection}{Education}
  \cveducation{2018 -- 2022}{B.S. Computer Science}{State University}{New York, NY}{GPA: 3.9/4.0}{}
\end{cvsection}

\begin{cvsection}{Skills}
  \cvskilllist{Languages}{Python, C++, Rust, Go}
  \cvskilllist{Tools}{Docker, Kubernetes, Git, CI/CD}
\end{cvsection}

\end{document}

Cover Letter

\documentclass[details]{drevocover}

\firstname{Jane}
\lastname{Doe}
\email{jane.doe@example.com}

\coverdate{March 26, 2026}
\coverrecipient{Hiring Manager \\ Acme Corp. \\ New York, NY}
\coveropening{Dear Hiring Manager,}
\coverclosing{Sincerely,}

\begin{document}

\coverparagraph{
  I am writing to express my interest in the Senior Engineer position at Acme Corp...
}

\coverparagraph{
  My experience in distributed systems aligns well with your requirements...
}

\end{document}

📖 Command Reference

Preamble — Personal Info

These commands are shared by both classes and must be set before \begin{document}.

Command Description
\firstname{text} First name
\middlename{text} Middle name(s) — optional
\lastname{text} Last name
\nameprefix{text} Name prefix, e.g. Dr. — optional
\namesuffix{text} Name suffix, e.g. Jr., Ph.D. — optional
\shortname{text} Override auto-generated footer name — optional
\title{text} Professional title shown under name
\email{address} Email address
\phone[type]{number} Phone number; type is mobile, fixed, or fax
\address{street}{city}{country} Mailing address
\linkedin{handle} LinkedIn username (sets social + footer)
\github{handle} GitHub username (sets social + footer)
\website{url} Personal website, without https://

drevoresumecv — Resume Commands

\cvsummary

A short professional summary at the top of the resume.

\cvsummary{
  Experienced software engineer with 6+ years building distributed systems...
}
Argument Description
[gap] Optional — vertical space after (default: \itemsgap)
{text} Summary text

\cvexperience

Work experience entry with optional bullet list.

\cvexperience{2022 -- Present}{Senior Engineer}{Acme Corp.}{New York, NY}{Full-time}{
  \cvlistitem{Designed and deployed a real-time data pipeline handling 1M events/day.}
  \cvlistitem{Mentored 3 junior engineers.}
}
Argument Description
[gap] Optional — vertical space after
{date} Date range, e.g. Jan 2020 -- Mar 2022
{title} Job title (bold)
{organization} Company or institution name
{location} City, State or City, Country
{type} Employment type, e.g. Full-time, Internship
{items} Bullet list using \cvlistitem{...}; pass empty {} to omit

\cveducation

Education entry with optional note line.

\cveducation{2018 -- 2022}{B.S. Computer Science}{State University}{New York, NY}{GPA: 3.9/4.0}{}
Argument Description
[gap] Optional — vertical space after
{date} Graduation year or date range
{degree} Degree and field (bold)
{institution} University or school
{location} City, State
{note} Additional info, e.g. thesis title or GPA; pass {} to omit

\cvskilllist

A labeled skill row with a tab-aligned value column.

\cvskilllist{Programming}{Python, Rust, Go, C++}
\cvskilllist{Tools}{Docker, Kubernetes, Terraform}
Argument Description
[gap] Optional — vertical space after
{label} Category label (bold)
{skills} Comma-separated skill list

The label column width is controlled by \skillscolumnlength (default 2in).


\cvhonors

Award or honor entry.

\cvhonors{2023}{Best Paper Award}{IEEE Conference}{Optional subtitle}{MIT Press}{Boston, MA}
Argument Description
[gap] Optional — vertical space after
{date} Year or date
{title} Award title (bold)
{subtitle} Optional subtitle; pass {} to omit
{organization} Awarding organization
{location} City, State

\cvtalk

Invited talk or presentation entry.

\cvtalk{2024}{Scaling ML Systems}{Jane Doe, John Smith}{International AI Conference}{Chicago, IL}
Argument Description
[gap] Optional — vertical space after
{date} Year or date
{title} Talk title (bold)
{authors} Presenter names
{venue} Conference or event name
{location} City, State

\cvoutreach

Outreach or service entry with optional bullet list.

\cvoutreach{2023 -- Present}{Workshop Organizer}{Graduate Women in CS}{
  \cvlistitem{Organized monthly networking events for 50+ participants.}
}
Argument Description
[gap] Optional — vertical space after
{date} Date range
{title} Role or event title (bold)
{organization} Host organization
{items} Bullet list using \cvlistitem{...}; pass {} to omit

\cvmembership

Simple membership or affiliation line.

\cvmembership{2020 -- Present}{ACM, IEEE, SIAM}
Argument Description
[gap] Optional — vertical space after
{date} Date range
{text} Membership description

\cvhobby

Hobby or personal interest entry with optional bullet list.

\cvhobby{}{Rock Climbing}{
  \cvlistitem{Lead climber, 5.11 grade.}
}
Argument Description
[gap] Optional — vertical space after
{date} Date (often left empty {})
{title} Hobby name (bold)
{items} Bullet list; pass {} to omit

cvsection Environment

Wraps any block in a named section with a decorative rule.

\begin{cvsection}{Publications}
  \nocite{*}
  \printbibliography[heading=none]
\end{cvsection}

Publications with Author Highlighting

In your .bib file, annotate your own name:

@article{doe2024,
  author+an = {1=highlight},
  author = {Doe, Jane and Smith, John},
  ...
}

The highlighted author will be rendered in bold.


drevocover — Cover Letter Commands

These must be set in the preamble (before \begin{document}).

Command Description
\coverdate{text} Date shown at top of letter
\coverrecipient{text} Recipient block; use \\ for line breaks
\coveropening{text} Salutation, e.g. Dear Hiring Manager,
\coverclosing{text} Closing, e.g. Sincerely,

In the document body, use \coverparagraph{text} for each paragraph:

\coverparagraph{First paragraph of body...}
\coverparagraph{Second paragraph...}

The signature is generated automatically from your name declarations. The date, recipient, opening, and closing are also inserted automatically.


⚙️ Class Options

Both classes accept:

Option Description
details (default) Show address, phone, email, and socials in the header
nodetails Hide contact details from the header (name and title only)
\documentclass[nodetails]{drevoresumecv}

🎨 Customization

Spacing Controls (drevoresumecv)

Override these lengths in your preamble after \documentclass:

\setlength{\titlespacing}{0pt}         % Space after header before first section
\setlength{\pageonesectionspacing}{0pt} % Extra space between sections on page 1
\setlength{\pagetwosectionspacing}{0pt} % Extra space between sections on page 2+
\setlength{\itemsleftindent}{2em}       % Left indent for bullet items
\setlength{\itemsrightindent}{0pt}      % Right indent for bullet items
\setlength{\itemslistgapbefore}{3pt}    % Gap before bullet list
\setlength{\itemslistgapafter}{3pt}     % Gap after bullet list
\setlength{\itemsgap}{.2em}             % Default gap after each cv entry
\setlength{\skillscolumnlength}{2in}    % Width of skill label column
\renewcommand{\itemspread}{0.95}        % Line spread inside bullet lists

Spacing Controls (drevocover)

\setlength{\coverdateabovespace}{0pt}       % Space above date
\setlength{\coverrecipientspace}{1em}       % Space around recipient block
\setlength{\coverparskip}{1em}             % Space between paragraphs
\setlength{\coversignatureabovespace}{2em}  % Space above signature

Helper Commands

\addspacepageone   % Insert \pageonesectionspacing of vertical space
\addspacepagetwo   % Insert \pagetwosectionspacing of vertical space
\removeonelinespace % Remove 1em of vertical space (fine-tuning)
\CPP               % Pretty-print C++ in text

📄 License

This work is distributed under the LaTeX Project Public License, version 1.3c.

Copyright 2022–2026 Ozan L. Z. Kiratli.


🙏 Acknowledgments

Built on top of moderncv by Xavier Danaux, with customized snippets from moderncvheadiii and moderncvbodyi.

About

ATS Friendly LaTeX Resume Template

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages