diff --git a/CLAUDE.md b/CLAUDE.md index 5c08618..7457b4d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -13,43 +13,67 @@ Resumes are organized by company in subdirectories for easy management: ``` . ├── paul-halvorsen-resume.md (default/main resume) +├── paul-halvorsen-resume-detailed.md (comprehensive details) +├── templates/ +│ ├── jb2resume.latex (classic template) +│ ├── jb2resume-modern.latex (improved modern template) +│ └── awesome-cv.latex (modern awesome-cv inspired) ├── files/ │ ├── paul-halvorsen-files-backend-engineer.md -│ └── paul-halvorsen-files-backend-engineer.pdf +│ ├── paul-halvorsen-files-backend-engineer.pdf (various templates) +│ └── ... ├── valon/ │ ├── paul-halvorsen-valon-software-engineer.md │ ├── paul-halvorsen-valon-cover-letter.md -│ └── paul-halvorsen-valon-software-engineer.pdf +│ └── paul-halvorsen-valon-software-engineer.pdf (various templates) └── [company]/ └── paul-halvorsen-[company]-[role].md ``` +**Available Templates:** + +1. **`jb2resume`** - Classic, traditional template + - Conservative design + - Best for: Traditional industries, classic look + - Command: `make resume FILE_NAME=path/to/resume` + +2. **`jb2resume-modern`** (Recommended default) + - Modern improvements: better spacing, proper bullets, visual hierarchy + - Clean professional look with subtle visual accents + - Best for: Tech companies, modern look with substance + - Command: `make resume-modern FILE_NAME=path/to/resume` + +3. **`awesome-cv`** - Modern, vibrant template + - Bold accent colors, prominent sections, contemporary design + - Best for: Startups, tech companies, when you want to stand out + - Command: `make resume-awesome FILE_NAME=path/to/resume` + **Build the resume PDF:** ```bash -# Build default resume (root directory) -make resume +# Build with default (modern) template +make resume FILE_NAME=paul-halvorsen-resume -# Build a custom resume from a company subdirectory -make resume FILE_NAME=files/paul-halvorsen-files-backend-engineer -make resume FILE_NAME=valon/paul-halvorsen-valon-software-engineer +# Build with modern template (improved jb2resume) +make resume-modern FILE_NAME=files/paul-halvorsen-files-backend-engineer -# Build a new resume (can be in any directory) -make resume FILE_NAME=[company]/paul-halvorsen-[company]-[role] +# Build with awesome-cv template (bold, modern design) +make resume-awesome FILE_NAME=valon/paul-halvorsen-valon-software-engineer + +# Show all available commands and examples +make help ``` -The `FILE_NAME` variable defaults to `paul-halvorsen-resume` but can be overridden to include a path. The Makefile will: -1. Build the Podman image if it doesn't exist -2. Convert the markdown file to PDF using the default LaTeX template -3. Output a PDF with the same filename (but with `.pdf` extension) in the same directory - **Example workflow for custom resumes:** ```bash # Create a customized markdown resume in company directory mkdir -p acme # paul-halvorsen-acme-senior-backend-engineer.md -# Build it -make resume FILE_NAME=acme/paul-halvorsen-acme-senior-backend-engineer +# Build with modern template +make resume-modern FILE_NAME=acme/paul-halvorsen-acme-senior-backend-engineer + +# Or with awesome-cv template +make resume-awesome FILE_NAME=acme/paul-halvorsen-acme-senior-backend-engineer # Output: acme/paul-halvorsen-acme-senior-backend-engineer.pdf ``` @@ -162,3 +186,47 @@ The detailed resume (`paul-halvorsen-resume-detailed.md`) contains comprehensive Cover letters are stored as markdown files in the same company directory as the corresponding resume. They can be included when submitting applications through platforms that support them, or converted to PDF by saving as plain text/PDF from a markdown editor. The detailed resume includes proficiency levels, performance metrics, specializations, and comprehensive technical details that allow Claude Code to intelligently match your background to specific job requirements. + +## Template Selection Guide + +### When to Use Each Template + +**`jb2resume` (Classic)** +- Traditional companies (finance, government, law) +- Conservative industries +- When you want a proven, time-tested design +- Important: ATS compatibility is high priority +- Example: Financial institutions, government agencies + +**`jb2resume-modern` (Recommended for Most Tech)** +- Tech startups and established tech companies +- Modern, professional look without being flashy +- Better spacing and readability than classic +- Still ATS-friendly and traditional enough for conservative industries +- Best balance of modern and professional +- **Default recommendation for Files.com, Valon, and similar companies** + +**`awesome-cv` (Modern & Bold)** +- Early-stage startups and growth-stage companies (Series A-C) +- Design-forward or forward-thinking companies +- When you want to make a visual impression +- Companies that explicitly value design and attention to detail +- Use when: "We're disrupting X industry" is in the job description +- Example: Files.com, Valon, and similar Series C companies + +### Quick Decision Tree + +``` +Is the company a startup or growth-stage company? +├─ YES → Use awesome-cv (bold, modern, stands out) +└─ NO → Is it a traditional/conservative industry? + ├─ YES → Use jb2resume (classic, proven) + └─ NO → Use jb2resume-modern (modern but professional) +``` + +### For Paul's Current Applications + +- **Files.com** (Series C, a16z-backed): awesome-cv recommended +- **Valon** (Series C, a16z-backed): awesome-cv recommended +- **Enterprise customers**: jb2resume-modern +- **Government/DoD contracts**: jb2resume (classic) diff --git a/Makefile b/Makefile index 9c62f71..60355ad 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ USER=paul FILE_NAME?=paul-halvorsen-resume +TEMPLATE?=jb2resume-modern NAME=build-paul-resume CONTAINER_NAME=${NAME}-container @@ -12,19 +13,65 @@ ifneq ("$(shell podman images -q ${NAME} 2> /dev/null)","") CONTAINER_EXISTS=1 endif +# Available templates: +# - jb2resume: Classic template (original) +# - jb2resume-modern: Improved with better spacing and typography +# - awesome-cv: Modern Awesome-CV based template +.PHONY: resume resume-modern resume-awesome help clean cleanpaper cleanpodman cleanall + +resume: TEMPLATE=jb2resume resume: .podman-build podman run --rm \ --volume "$(realpath .)":/data \ --name ${CONTAINER_NAME} \ ${NAME} \ - ${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/jb2resume.latex -o ${FILE_NAME}.pdf - @echo "✓ Generated ${FILE_NAME}.pdf" + ${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/${TEMPLATE}.latex -o ${FILE_NAME}.pdf + @echo "✓ Generated ${FILE_NAME}.pdf (template: ${TEMPLATE})" + +resume-modern: TEMPLATE=jb2resume-modern +resume-modern: .podman-build + podman run --rm \ + --volume "$(realpath .)":/data \ + --name ${CONTAINER_NAME} \ + ${NAME} \ + ${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/jb2resume-modern.latex -o ${FILE_NAME}.pdf + @echo "✓ Generated ${FILE_NAME}.pdf (template: jb2resume-modern)" + +resume-awesome: TEMPLATE=awesome-cv +resume-awesome: .podman-build + podman run --rm \ + --volume "$(realpath .)":/data \ + --name ${CONTAINER_NAME} \ + ${NAME} \ + ${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/awesome-cv.latex -o ${FILE_NAME}.pdf + @echo "✓ Generated ${FILE_NAME}.pdf (template: awesome-cv)" .podman-build: if [ ${CONTAINER_EXISTS} -ne 1 ]; then podman build -t ${NAME} . && echo "" > .podman-build; fi +help: + @echo "Resume Builder - Available Commands:" + @echo "" + @echo "Default (modern template with better spacing):" + @echo " make resume FILE_NAME=path/to/resume" + @echo "" + @echo "Templates:" + @echo " make resume FILE_NAME=path/to/resume # Classic jb2resume" + @echo " make resume-modern FILE_NAME=path/to/resume # Modern improved template" + @echo " make resume-awesome FILE_NAME=path/to/resume # Awesome-CV inspired template" + @echo "" + @echo "Examples:" + @echo " make resume-modern FILE_NAME=files/paul-halvorsen-files-backend-engineer" + @echo " make resume-awesome FILE_NAME=valon/paul-halvorsen-valon-software-engineer" + @echo "" + @echo "Cleanup:" + @echo " make clean # Remove LaTeX log files" + @echo " make cleanpaper # Remove generated PDF" + @echo " make cleanpodman # Remove Podman image" + @echo " make cleanall # Remove everything" + cleanpaper: - rm -f ${FILE_NAME}.pdf + rm -f ${FILE_NAME}.pdf cleanpodman: @echo "Cleanup files and podman" diff --git a/files/paul-halvorsen-files-backend-engineer.pdf b/files/paul-halvorsen-files-backend-engineer.pdf index fe1e3a5..2327d96 100644 Binary files a/files/paul-halvorsen-files-backend-engineer.pdf and b/files/paul-halvorsen-files-backend-engineer.pdf differ diff --git a/paul-halvorsen-resume-detailed.pdf b/paul-halvorsen-resume-detailed.pdf new file mode 100644 index 0000000..1bb524e Binary files /dev/null and b/paul-halvorsen-resume-detailed.pdf differ diff --git a/paul-halvorsen-resume.pdf b/paul-halvorsen-resume.pdf index bef9c57..2a3b85e 100644 Binary files a/paul-halvorsen-resume.pdf and b/paul-halvorsen-resume.pdf differ diff --git a/templates/awesome-cv.latex b/templates/awesome-cv.latex new file mode 100644 index 0000000..f060226 --- /dev/null +++ b/templates/awesome-cv.latex @@ -0,0 +1,114 @@ +% Awesome CV Inspired LaTeX Template for Pandoc +% +% Modern template inspired by awesome-cv +% Pandoc-compatible version for markdown-based resumes + +\documentclass[11pt,letterpaper]{article} + +\usepackage{hyperref} +\usepackage{geometry} +\usepackage{enumitem} +\usepackage{underscore} +\usepackage[parfill]{parskip} +\usepackage{lmodern} +\usepackage[svgnames]{xcolor} +\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} +\usepackage[utf8]{inputenc} + +% Your name on the resume +\def\name{$name$} + +% The following metadata will show up in the PDF properties +\hypersetup{ + colorlinks = true, + urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$, + linkcolor=$if(linkcolor)$$linkcolor$$else$blue$endif$, + pdfauthor = {\name}, + pdfkeywords = {$keywords$}, + pdftitle = {\name: Resume}, + pdfsubject = {Resume}, + pdfpagemode = UseNone +} + +\geometry{ + body={6.5in, 9.0in}, + left=0.75in, + top=0.75in, + right=0.75in, + bottom=0.75in +} + +% Fix for "! Undefined control sequence. \tightlist" +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + +% Page styling +\pagestyle{myheadings} +\markright{\name} +\thispagestyle{empty} + +% Define custom colors for modern look +\definecolor{awesome}{HTML}{1B60FB} +\definecolor{darktext}{HTML}{2C3E50} +\definecolor{graytext}{HTML}{5A5A5A} + +% Custom section fonts - modern with accent color +\usepackage{sectsty} +$if(section-color)$ +\sectionfont{\color{$section-color$}\sffamily\bfseries\Large} +$else$ +\sectionfont{\color{awesome}\sffamily\bfseries\Large} +$endif$ +\subsectionfont{\rmfamily\bfseries\normalsize} + +% Section numbers or not (default) +$if(numbersections)$ +\setcounter{secnumdepth}{5} +$else$ +\setcounter{secnumdepth}{0} +$endif$ + +% Better bullet points and list formatting +\setlist[itemize]{leftmargin=0.5em, label={\textbullet}, itemsep=0.3em} +\setlist[description]{leftmargin=0em, style=sameline} + +% Don't use monospace font for URLs +\urlstyle{same} + +% Better spacing control +\setlength{\parskip}{0.4em} +\setlength{\parindent}{0em} + +\begin{document} + +% Name - large and prominent +$if(name-color)$ +{\fontsize{20}{24}\selectfont\sffamily\bfseries\color{$name-color$}\name} +$else$ +{\fontsize{20}{24}\selectfont\sffamily\bfseries\color{awesome}\name} +$endif$ + +\vspace{0.1em} + +% Contact info in two columns - modern layout +$if(left-column)$ +\begin{minipage}[t]{0.495\textwidth} + \small\color{graytext} + $for(left-column)$$left-column$$sep$ \\ $endfor$ +\end{minipage}% +$endif$ +$if(right-column)$ +\begin{minipage}[t]{0.495\textwidth} + \small\color{graytext} + \raggedleft + $for(right-column)$$right-column$$sep$ \\ $endfor$ +\end{minipage} +$endif$ + +\vspace{0.3em} +\noindent{\color{awesome}\rule{\textwidth}{2pt}} +\vspace{0.3em} + +$body$ + +\end{document} diff --git a/templates/jb2resume-modern.latex b/templates/jb2resume-modern.latex new file mode 100644 index 0000000..62a1167 --- /dev/null +++ b/templates/jb2resume-modern.latex @@ -0,0 +1,110 @@ +% Modern LaTeX Resume Pandoc Template +% +% Based on jb2resume.latex by John Bokma (2016-2017) +% Improved version with better spacing, typography, and visual hierarchy +% Enhanced for modern resumes while maintaining ATS compatibility + +\documentclass[$if(fontsize)$$fontsize$$else$11pt$endif$,letterpaper]{article} + +\usepackage{hyperref} +\usepackage{geometry} +\usepackage{enumitem} +\usepackage{underscore} +\usepackage[parfill]{parskip} +\usepackage{lmodern} +\usepackage[svgnames]{xcolor} +\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} +\usepackage[utf8]{inputenc} + +% Your name on the resume +\def\name{$name$} + +% The following metadata will show up in the PDF properties +\hypersetup{ + colorlinks = true, + urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$, + linkcolor=$if(linkcolor)$$linkcolor$$else$blue$endif$, + pdfauthor = {\name}, + pdfkeywords = {$keywords$}, + pdftitle = {\name: Resume}, + pdfsubject = {Resume}, + pdfpagemode = UseNone +} + +\geometry{ + body={6.5in, 9.0in}, + left=0.75in, + top=0.75in, + right=0.75in, + bottom=0.75in +} + +% Fix for "! Undefined control sequence. \tightlist" +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + +% Page styling +\pagestyle{myheadings} +\markright{\name} +\thispagestyle{empty} + +% Custom section fonts - modern look with subtle color +\usepackage{sectsty} +$if(section-color)$ +\sectionfont{\color{$section-color$}\sffamily\bfseries\Large\vspace{0.3em}} +$else$ +\sectionfont{\color{darkgray}\sffamily\bfseries\Large\vspace{0.3em}} +$endif$ +\subsectionfont{\rmfamily\bfseries\normalsize\vspace{0.1em}} + +% Section numbers or not (default) +$if(numbersections)$ +\setcounter{secnumdepth}{5} +$else$ +\setcounter{secnumdepth}{0} +$endif$ + +% Better bullet points and list formatting +\setlist[itemize]{leftmargin=0.5em, label={\textbullet}, itemsep=0.3em} +\setlist[description]{leftmargin=0em, style=sameline} + +% Don't use monospace font for URLs +\urlstyle{same} + +% Better spacing control +\setlength{\parskip}{0.4em} +\setlength{\parindent}{0em} + +\begin{document} + +% Name - larger, modern +$if(name-color)$ +{\fontsize{16}{19}\selectfont\color{$name-color$}\sffamily\bfseries \name} +$else$ +{\fontsize{16}{19}\selectfont\color{black}\sffamily\bfseries \name} +$endif$ + +\vspace{0.2em} + +% Contact info in two columns +$if(left-column)$ +\begin{minipage}[t]{0.495\textwidth} + \small + $for(left-column)$$left-column$$sep$ \\ $endfor$ +\end{minipage}% +$endif$ +$if(right-column)$ +\begin{minipage}[t]{0.495\textwidth} + \small + \raggedleft + $for(right-column)$$right-column$$sep$ \\ $endfor$ +\end{minipage} +$endif$ + +\vspace{0.3em} +\noindent\rule{\textwidth}{0.5pt} +\vspace{0.2em} + +$body$ + +\end{document} diff --git a/valon/paul-halvorsen-valon-software-engineer.pdf b/valon/paul-halvorsen-valon-software-engineer.pdf index 4e6243f..45319d5 100644 Binary files a/valon/paul-halvorsen-valon-software-engineer.pdf and b/valon/paul-halvorsen-valon-software-engineer.pdf differ