Back to templates

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 — ExpressiveCoverLetter mirrors the resume header and accepts inline \tech highlights 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 — \resumeheader accepts optional parameters for contact details plus a QR code image, and city only appears when state is also provided.
  • Equivalent titles — A \role can include \equivalent to 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 \experience blocks, \project, \degree, and \award into a single compiled document.
  • Show career progression — Place multiple \role entries inside one \experience to list promotions at the same organization.
  • Handle job-title mismatches — Add \equivalent to 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 \tech to 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.