
Template details
Lucid CV
LuaLaTeX class for modern, ATS-friendly resumes with PDF/A-2b, PDF/UA-1 and tagged PDF output, tested against 17 extractors.
About this template
Lucid CV is a LuaLaTeX document class for producing modern resumes (CVs) that stay readable both to humans and to machine parsers, and it is the one category of LaTeX template that treats PDF text extraction as a first-class design constraint.
What is Lucid CV?
Lucid CV is a LuaLaTeX class that takes LaTeX source (a header, a body file with sections and entries, and class options) and compiles it into a resume PDF. It runs on any LuaLaTeX toolchain (LaTeX format 2026-06-01 or newer, e.g. TeX Live 2026), on Overleaf, or via a bundled build.sh script. It is authored and maintained by Patrik Goldschmidt and released under LPPL 1.3c for the class and README, and MIT for tooling.
What makes Lucid CV stand out?
- Real word spaces in the PDF — with LuaLaTeX and PDF tagging enabled, word gaps are stored as actual space characters, so extractors need not infer word boundaries from horizontal positioning (avoiding merged words like
Loremipsumdolor). - Icons extract as whitespace — icon glyphs are turned into plain spaces via two independent mechanisms and tagged as decorative artifacts; the
noiconsoption removes them entirely for legacy systems. - Dotted leaders on flushed dates — right-aligned dates are connected to the entry title so parsers do not treat the gap as a separate column and detach the date.
- PDF/A-2b, PDF/UA-1 and tagged structure — headings are tagged
H2/H3, the photo is aFigurewith alternative text, links carry descriptions, decorative rules are artifacts; title, author and subject are populated automatically. - Layout switches without editing content —
onecolumn(default),twocolumn, andcompressedoptions reshape the same body;\cvcolumnbreakis silently ignored in single-column mode. - Preamble customization — accent color in any xcolor model, margins via
\geometry, column ratio via\columnratio, plus font sizes and spacing knobs, none of which require touching the class file. - Contact fields with prefixes — email, phone, address, location, homepage, LinkedIn, GitHub and ORCID print self-explanatory values such as
github.com/xGoldy, separated by explicit|delimiters; custom fields are declared with\CvInfoField. - Entry system and extras —
\cventryand\cvsubentry(wrapped incvgroupfor indented hierarchies), skill chips via\cvtag/\cvtaglist,\cvrefreferences, and\cvdividerdashed rules. - Bundled fonts — Inter, Source Sans 3 and Source Code Pro TTFs ship in
fonts/; falling back to the distribution's OTF copies triggers a warning because extraction is less reliable.
How is Lucid CV tested for ATS compatibility?
The tests/ directory (GitHub only, not in Overleaf/CTAN packages) reads a compiled resume back with 10 PDF/OCR engines across 17 configurations, including Poppler, MuPDF, PDFium, pdfminer.six, Ghostscript, pdf.js (old and new), PDFBox, Tika, iText and Tesseract. Three demo resumes pass every required check: on the 1-column two-page variant, all 16 text-layer configurations returned all 111 phrases in document order, and Tesseract recovered 106 of 111. Two-column layouts degrade for engines that reconstruct full-page-width lines (3 of 16 configurations at 60–63 of 89 phrases), which is why one column is the default. veraPDF checks PDF/A-2b and PDF/UA-1 conformance where installed, and a test asserts no hidden text.
Who should use Lucid CV?
- Job seekers applying through portals who cannot tell whether a human or an ATS will read the PDF — the one-column default maximizes parse reliability.
- Engineers and researchers who already write LaTeX and want a CV that compiles from a single content file across layouts.
- Recruiters-constrained applicants needing a strict one-page resume, using the
compressedoption with manual spacing tweaks. - Accessibility-minded authors who need PDF/UA-1 and tagged output for screen readers.
What can you do with Lucid CV?
- Apply to Workday, Greenhouse or Lever: upload a one-column PDF whose contact details, education, experience and skills extract into the right fields (tested by the author during a job search).
- Maintain one body, many layouts: keep
contents.texunchanged while switching between a two-page relaxed resume and a compressed one-pager through class options orbuild.sh --opt. - Rebrand per audience: change a single accent color and the fonts/spacing knobs to produce distinct resumes from the same class.
How does Lucid CV work?
Write \DocumentMetadata and \tagpdfsetup at the top of main.tex, load the class with options, set the header commands (\name, \tagline, \cvpersonalinfo, \makecvheader), then \input a body file inside the cvbody environment. Build with ./build.sh (two passes, three with biber), latexmk main.tex, or Overleaf.
FAQ
Is Lucid CV free?
Yes. The class, main.tex, latexmkrc, README and docs are under LPPL 1.3c; build scripts and the ATS test suite are MIT; bundled fonts use the SIL Open Font License. The author accepts donations via Ko-fi but the template is free to use.
What are Lucid CV's limitations?
Two-column layouts can extract out of order in position-sorting parsers, so one column is recommended when reviewers are unknown. TTF fonts must stay in place for best extraction (OTF fallback lost 5 of 111 phrases with poppler). PDF/UA-1 conformance is only guaranteed for what the class emits; images or TikZ you add need alternative text.
Does Lucid CV guarantee compatibility with commercial ATS?
No. Textkernel/Sovren, Daxtra and HireAbility are closed-source and cannot be run locally, so the suite only guarantees clean text extraction across 17 configurations, which is evidence of, not proof of, commercial ATS compatibility.
What LaTeX version does Lucid CV need?
LuaLaTeX with format version 2026-06-01 or newer (TeX Live 2026). An older format produces a warning and may add extra vertical space below list environments.















