
Template details
Expressive Resume
A LaTeX resume and cover letter template pair that uses declarative commands to produce clean, ATS-friendly PDFs.
About this template
Expressive Resume is an open-source LaTeX2e resume and cover letter template pair by software engineer Joseph Hale that accepts declarative content commands and outputs a typeset, ATS-friendly PDF. You write a plain .tex file using either the ExpressiveResume or ExpressiveCoverLetter documentclass, and the class handles layout, spacing, and typography without a long preamble.
What is Expressive Resume?
Expressive Resume is a LaTeX class and template set for producing resumes and matching cover letters from high-level commands. It includes two documentclasses — ExpressiveResume and ExpressiveCoverLetter — provided as .cls files in the src folder, and it runs on any LaTeX2e-compatible typesetting engine. Input is a .tex file that calls commands like \experience, \role, \achievement, \degree, \award, and \tech; the output is a compiled PDF. The project was created by Joseph Hale, an engineer with experience building automated resume parsers for Applicant Tracking Systems.
What makes Expressive Resume stand out?
- Declarative commands — Describe work history with
\experience,\role, and\achievement; the class handles bullet formatting, indentation, and spacing. - Matching cover letter template —
ExpressiveCoverLettermirrors the resume header and accepts inline\techhighlights for skills. - ATS-friendly layout — Designed by someone who built resume parsers, so the generated structure avoids common machine-parsing issues.
- Minimal preamble — A resume begins with
\documentclass{ExpressiveResume}and content, skipping the 100–200 lines of formatting code typical of other LaTeX templates. - LaTeX2e compatibility — Works with most LaTeX engines instead of requiring a specific compiler.
- VS Code devcontainer — The repository includes a container with LaTeX pre-installed, using Docker, so setup works across Windows, Linux, and macOS. First launch downloads roughly 4 GB of TeX packages.
- Flexible header —
\resumeheaderaccepts optional parameters for contact details plus a QR code image, andcityonly appears whenstateis also provided. - Equivalent titles — A
\rolecan include\equivalentto show a renamed title that better matches actual duties.
Who is it for?
- Job seekers who use LaTeX — Keep a resume in plain text and compile to a consistently formatted PDF without adjusting layout code.
- Software engineers and developers — Version-control the resume in Git, fork the template, and use semantic commands that read like structured data.
- Applicants worried about ATS filters — Use a template whose layout was designed with automated parsing in mind.
- Anyone needing a coordinated resume and cover letter — Two documentclasses in one repository keep visual styling consistent across both files.
What can you do with Expressive Resume?
- Build a complete resume — Combine
\objective, one or more\experienceblocks,\project,\degree, and\awardinto a single compiled document. - Show career progression — Place multiple
\roleentries inside one\experienceto list promotions at the same organization. - Handle job-title mismatches — Add
\equivalentto display a title that matches responsibilities rather than the official one. - Write a styled cover letter — Use
\coverletterheader, separate paragraphs with blank lines, and call\techto bold or highlight relevant skills.
How does Expressive Resume work?
Use the GitHub "Use this template" button or fork the repository, then clone it and open the folder in VS Code with Docker and the Remote Containers extension installed. VS Code will prompt "Reopen in Container," which builds a sandboxed LaTeX environment on first run. Create a .tex file in src that declares \documentclass{ExpressiveResume} or \documentclass{ExpressiveCoverLetter}, fill in the provided commands, and compile to produce the PDF. If LaTeX is already installed locally, you can clone the repo and skip the container entirely.
FAQ
Is Expressive Resume free to use?
Yes — the repository is public on GitHub and includes a license file. The author also has a GitHub Sponsors page for optional support, but there is no paid tier or watermark mentioned.
Do I need to install LaTeX myself?
Not if you use the included VS Code devcontainer, which has LaTeX pre-installed in a sandbox. If you already have a LaTeX distribution, you can clone the repository and start writing immediately.
What documentclasses are included?
Two: ExpressiveResume and ExpressiveCoverLetter. Both are .cls files placed in the src folder and referenced with \documentclass in your .tex source.
Can I add a QR code to my resume?
Yes. The \resumeheader command accepts a qrcode parameter for the path to an image file, and the image appears in the top-right corner of the resume.
Does the cover letter match the resume?
Yes — ExpressiveCoverLetter uses the same header style and the \tech command for inline skill highlights, so the two documents present a consistent visual identity.















