[ Template ]
Minimalist LaTeX resume template
Minimal strips out everything Classic still keeps: no bold except the name and job titles, small gray uppercase section labels over a 0.3pt hairline instead of a bold rule, and sans-serif (Helvetica) throughout instead of serif. The name itself is set huge but medium-weight — not bold — which is the template's whole thesis: confidence through restraint, not emphasis.
It's a Swiss-design instinct applied to a resume — generous spacing, gray tone instead of black-and-white contrast, nothing fighting for attention. It reads calm rather than plain.
Suits design, product, and other roles where a resume with visible taste is a quiet asset, without going as far as Banner's bold color treatment.

Who it's for
- You want a resume that looks deliberately restrained, not just plain.
- You're in design, product, or a field where typographic taste reads as a signal.
- You'd rather everything stay gray and quiet except your name.
Works with ATS software
Minimal is single-column LaTeX with a full text layer — the gray tone and thin hairlines are pure visual styling (xcolor and titlerule), with no effect on the extracted text. It parses the same as any other Refyn template; the restraint is entirely for the human reader.
View the full LaTeX source
% ---------- Tagged PDF (optional) ----------
% Uncomment the next line for a tagged PDF: real reading order and list
% semantics for screen readers. Works with pdflatex on TeX Live 2023+.
% The LaTeX tagging project still labels this experimental, so it is off
% by default.
% \DocumentMetadata{lang=en-US, testphase={phase-III}}
\documentclass[letterpaper,10pt]{article}
% -------------------- Packages --------------------
\usepackage[letterpaper,margin=0.8in]{geometry}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}
\usepackage{xcolor}
\usepackage{helvet}
\usepackage{etoolbox}
\renewcommand{\familydefault}{\sfdefault}
% -------------------- Formatting --------------------
% Swiss/hairline minimalism — sans throughout, only the name and job titles
% ever go bold, everything else stays light and generously spaced.
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt}
\linespread{1.05}
\setlist[itemize]{label=--,itemsep=1pt,topsep=4pt,leftmargin=0.2in}
\sloppy
\raggedbottom
% Section formatting — small gray uppercase label over a 0.3pt gray hairline.
% No letterspacing package is allowlisted, so the "wide tracking" feel comes
% from the small caps-ish uppercase + gray tone instead of true kerning.
\titleformat{\section}
{\small\bfseries\color{gray!55!black}}
{}{0em}{}[{\color{gray!40}\titlerule[0.3pt]}]
\titlespacing*{\section}{0pt}{10pt}{5pt}
% -------------------- Semantic macros --------------------
% render.py (app/services/conversion/render.py) only ever emits calls to the 11
% macros below, with data already massaged (dates joined, "Present" resolved,
% link labels derived, etc.) but with ALL visual decisions — bold/italic, hfill
% alignment, icons, separators, list styling, gap sizes — owned here. See the
% macro contract in that module's docstring before changing signatures.
% Every template MUST define all 11, including \closebullets and \entrygap.
\newtoggle{citemnotfirst}
\newtoggle{bulletsopen}
\newtoggle{skilllinenotfirst}
% \closebullets closes the itemize list \rbullet opens. render.py calls it
% right after emitting the \rbullet run for an entry. \AtEndDocument is a
% defensive backstop only, in case a future call site forgets.
\newcommand{\closebullets}{%
\iftoggle{bulletsopen}{\end{itemize}\togglefalse{bulletsopen}}{}%
}
\AtEndDocument{\closebullets}
% Left-aligned name at \Huge but plain weight (\mdseries — no bold here, the
% whole point of this template is restraint), small gray contact line below.
\newcommand{\resumeheader}[3]{%
\noindent{\Huge\mdseries #1}\ifblank{#2}{}{\quad{\color{gray!60!black}#2}}\\[4pt]
\noindent{\small\color{gray!60!black}\togglefalse{citemnotfirst}#3\par}
\vspace{4pt}
}
% No icons, no color on the punctuation — #1 (kind) is only checked for
% "email" so that case gets a real mailto: link; everything else just
% hyperlinks #2 when present.
\newcommand{\citem}[3]{%
\iftoggle{citemnotfirst}{ \textperiodcentered\ }{\toggletrue{citemnotfirst}}%
\ifstrequal{#1}{email}{\href{mailto:#2}{#3}}{\ifblank{#2}{#3}{\href{#2}{#3}}}%
}
\newcommand{\sectionstart}[1]{\togglefalse{skilllinenotfirst}\section*{\MakeUppercase{#1}}}
% The one other place bold survives: the job title itself.
\newcommand{\job}[4]{%
\textbf{#1}\ifblank{#4}{}{ \hfill {\color{gray!60!black}#4}}\\
#2\ifblank{#3}{}{, #3}%
}
\newcommand{\rbullet}[1]{%
\iftoggle{bulletsopen}{}{\begin{itemize}\toggletrue{bulletsopen}}%
\item #1%
}
\newcommand{\skillline}[2]{%
\iftoggle{skilllinenotfirst}{\\}{\toggletrue{skilllinenotfirst}}%
#1: #2%
}
\newcommand{\edu}[4]{%
#1\ifblank{#3}{}{ \hfill {\color{gray!60!black}#3}}\\
#2\ifblank{#4}{}{ \hfill GPA: #4}%
}
\newcommand{\cert}[1]{\\ Certification: #1}
\newcommand{\project}[4]{%
\textbf{#1}\ifblank{#2}{}{ -- #2}\ifblank{#3}{}{ \hfill \href{#3}{[#4]}}%
}
\newcommand{\entrygap}{\vspace{6pt}}
% -------------------- Document --------------------
\begin{document}
\resumeheader{Jordan Rivera}{}{%
\citem{email}{jordan.rivera@example.com}{jordan.rivera@example.com}
\citem{phone}{}{(555) 123-4567}
\citem{location}{}{Austin, TX}}
\sectionstart{PROFESSIONAL SUMMARY}
Product-minded software engineer with 6 years building scalable web applications and leading cross-functional teams.
\sectionstart{PROFESSIONAL EXPERIENCE}
\job{Senior Software Engineer}{Acme Corp}{Austin, TX}{Jan 2022 -- Present}
\rbullet{Led a team of 4 engineers to redesign the checkout flow, increasing conversion by 18\%.}
\rbullet{Built an internal analytics platform now used by 200+ employees.}
\closebullets
\entrygap
\job{Software Engineer}{Beta Systems}{Remote}{Jun 2018 -- Dec 2021}
\rbullet{Shipped a real-time notification service handling 1M+ events per day.}
\closebullets
\sectionstart{SKILLS}
\skillline{Languages}{Python, TypeScript, Go}
\skillline{Tools}{Docker, PostgreSQL, AWS}
\sectionstart{EDUCATION \& CERTIFICATIONS}
\edu{University of Texas at Austin}{B.S. in Computer Science}{Aug 2014 -- May 2018}{3.7}
\cert{AWS Certified Solutions Architect}
\end{document}
Free to download and use anywhere. Compiles with pdflatex.
Common questions
Is a gray, low-contrast resume risky for ATS parsing?
No — the gray coloring is applied to the visual layer only. The underlying text layer that a parser reads is plain, full-contrast text, same as every Refyn template.
Is Minimal too plain for a corporate application?
It's restrained but not informal — it reads as considered rather than unfinished. For a fully conservative, zero-design reader, Harvard is the safer choice; Minimal still carries a visible point of view.
How is Minimal different from Harvard, since both avoid color?
Harvard is serif and traditional — Palatino, small caps, bold rules. Minimal is sans-serif and modern — hairlines, gray tone, no bold outside the name. Both skip color, but they read very differently.
Can I make the name bold in Minimal?
Not from the picker — medium-weight is the template's signature choice. You can edit the .tex source directly if you'd rather have it bold.


