[ Template ]

New grad resume template (LaTeX)

Graduate uses the same Computer Modern serif as Jake's Resume, but with a different rhythm entirely: more space above each section, positive item spacing instead of Jake's tight negative spacing, and a header built to put education right where a first-time job seeker needs it — up front, not buried under experience you don't have yet.

It's built for the specific problem of a resume that doesn't have five jobs to fill a page with. Rather than shrinking margins to hide the white space, Graduate lets the page breathe — which reads as confident, not empty, when there's genuinely less to say yet.

Good for internships, new-grad roles, and career-changers whose most relevant credential right now is a degree or bootcamp rather than years of titles.

Graduate LaTeX resume template preview

Who it's for

  • You're a student, recent grad, or early-career applicant with a shorter work history.
  • You want education to lead, not trail behind a thin experience section.
  • You'd rather have a resume that looks intentionally spacious than one stretched thin to fill a page.

Works with ATS software

Graduate is single-column LaTeX with a full text layer, same contract as every Refyn template — the extra whitespace is spacing (parskip, itemsep, titlespacing), not layout tricks like columns or text boxes, so a parser reads it exactly as cleanly as a denser template.

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[a4paper,11pt]{article}

% lmodern + T1: keeps text extraction intact when tagging (\DocumentMetadata) is enabled
\usepackage{lmodern}
\usepackage[T1]{fontenc}

% -------------------- Packages --------------------
\usepackage[a4paper,margin=0.7in]{geometry}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}
\usepackage{etoolbox}

% -------------------- Formatting --------------------
% Deliberately no font package — Computer Modern, same as Jake's. New-grad
% look: roomier lists than Jake (positive itemsep, more topsep/parskip) since
% a shorter resume should breathe rather than cram.
\setlength{\parindent}{0pt}
\setlength{\parskip}{5pt}
\linespread{1.05}
\setlist[itemize]{itemsep=0pt,topsep=3pt,leftmargin=0.18in}
\sloppy
\raggedbottom

% Section formatting — small-caps-weight uppercase title, full-width rule,
% slightly heavier spacing above than Jake's (this template has fewer
% sections competing for the page, so each one gets to announce itself).
\titleformat{\section}
  {\large\bfseries\raggedright}
  {}{0em}{}[\titlerule]

\titlespacing*{\section}{0pt}{10pt}{4pt}

% -------------------- 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, contact line underneath. render.py hands \resumeheader's
% #3 as a sequence of \citem calls (one per contact item, each owning its own
% leading separator via the citemnotfirst toggle) — there's no per-item index
% or total count available to this macro, so a real "two lines" split isn't
% something \citem can decide on its own. Kept to one left-aligned line
% instead of faking a break that would land in the wrong place depending on
% how many contact fields a given resume happens to have.
\newcommand{\resumeheader}[3]{%
  \noindent{\huge\bfseries #1}\\[4pt]
  \ifblank{#2}{}{{\normalsize #2}\\[2pt]}%
  \noindent{\small\togglefalse{citemnotfirst}#3\par}
  \vspace{2pt}
}

% ATS-safe by design — #1 (kind) is only checked for "email" so that case
% gets a real mailto: link; every other kind just hyperlinks #2 when present.
\newcommand{\citem}[3]{%
  \iftoggle{citemnotfirst}{ $|$ }{\toggletrue{citemnotfirst}}%
  \ifstrequal{#1}{email}{\href{mailto:#2}{#3}}{\ifblank{#2}{#3}{\href{#2}{#3}}}%
}

\newcommand{\sectionstart}[1]{\togglefalse{skilllinenotfirst}\section*{\MakeUppercase{#1}}}

\newcommand{\job}[4]{%
  \textbf{#1}\ifblank{#4}{}{ \hfill #4}\\
  \textit{#2}\ifblank{#3}{}{ \hfill \textit{#3}}%
}

\newcommand{\rbullet}[1]{%
  \iftoggle{bulletsopen}{}{\begin{itemize}\toggletrue{bulletsopen}}%
  \item #1%
}

\newcommand{\skillline}[2]{%
  \iftoggle{skilllinenotfirst}{\\}{\toggletrue{skilllinenotfirst}}%
  \textbf{#1:} #2%
}

% Education matters most for new grads: institution bold, degree on its own
% line (any GPA text is already folded into the degree/description upstream
% or rendered via the dedicated GPA slot below), dates right-flushed.
\newcommand{\edu}[4]{%
  \textbf{#1}\ifblank{#3}{}{ \hfill #3}\\
  #2\ifblank{#4}{}{ \hfill GPA: #4}%
}

\newcommand{\cert}[1]{\\ \textbf{Certification:} #1}

\newcommand{\project}[4]{%
  \textbf{#1}\ifblank{#2}{}{ -- #2}\ifblank{#3}{}{ \hfill \href{#3}{[#4]}}%
}

% Roomier than Jake's — a shorter resume should breathe.
\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

Where does my GPA go in this template?

In your education entry, same place as any other detail — Refyn's editor doesn't have a dedicated GPA field, so add it inline in the entry description or degree line, however you'd like it to read.

Is Graduate good if I have almost no work experience?

That's what it's built for — education-forward structure and roomier spacing so a shorter resume doesn't look thin or padded.

Can I switch to Graduate later if I start with Jake's Resume?

If you started by uploading a resume, Refyn already rendered it in all ten looks — including Graduate — at creation time, so you can go back and pick it from that same upload. If you started from scratch in Jake's, there's no in-editor switcher; you'd copy your content into a new Graduate resume.

Is Graduate okay for internship applications?

Yes, it's one of the more common uses for it — the education-first layout matches what internship and new-grad postings usually screen for first.

Edit it live. Keep the .tex forever.

Start free

No credit card required.