- Fix summary placeholders: 15 years development, 20 years professional experience - Update Makefile to accept FILE_NAME parameter for building custom resumes - Add confirmation message on successful PDF generation - Document customization workflow in CLAUDE.md with examples - Add section on creating tailored resumes from job descriptions - Include security clearance and additional details in detailed resume This enables a streamlined workflow: provide job description → Claude generates customized markdown → build PDF with: make resume FILE_NAME=paul-halvorsen-[company]-[role] Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
137 lines
5.3 KiB
Markdown
137 lines
5.3 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
This is a resume builder using Pandoc to convert Markdown resumes with YAML metadata to PDF via LaTeX templates. The build process is containerized using Podman (Docker alternative) for reproducibility and portability.
|
|
|
|
## Build and Development Commands
|
|
|
|
**Build the resume PDF:**
|
|
```bash
|
|
# Build default resume
|
|
make resume
|
|
|
|
# Build a custom resume with a specific filename
|
|
make resume FILE_NAME=paul-halvorsen-acme-senior-backend-engineer
|
|
```
|
|
|
|
The `FILE_NAME` variable defaults to `paul-halvorsen-resume` but can be overridden to use any markdown file in the directory (without the `.md` extension). 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 name as the input markdown file (but with `.pdf` extension)
|
|
|
|
**Example workflow for custom resumes:**
|
|
```bash
|
|
# Create a customized markdown resume
|
|
# paul-halvorsen-acme-senior-backend-engineer.md
|
|
|
|
# Build it
|
|
make resume FILE_NAME=paul-halvorsen-acme-senior-backend-engineer
|
|
|
|
# Output: paul-halvorsen-acme-senior-backend-engineer.pdf
|
|
```
|
|
|
|
**Clean commands:**
|
|
- `make clean` - Remove LaTeX log files
|
|
- `make cleanpaper` - Remove the generated PDF (uses FILE_NAME variable)
|
|
- `make cleanpodman` - Remove the Podman image and build cache (forces rebuild next time)
|
|
- `make cleanall` - Remove everything (logs, PDF, and Podman image)
|
|
|
|
## High-Level Architecture
|
|
|
|
### Resume Processing Pipeline
|
|
1. **Input**: Markdown file with YAML metadata block (`*.md`)
|
|
2. **Processing**: Pandoc converts markdown to LaTeX using a template
|
|
3. **Output**: PDF generated via LaTeX compilation
|
|
4. **Containerization**: All processing happens in a Podman container to ensure consistent output
|
|
|
|
### Key Components
|
|
|
|
**Templates** (`templates/` directory):
|
|
- `jb2resume.latex` - Default resume template (recommended)
|
|
- `jb2-modern.latex` - Alternative modern template
|
|
|
|
Both templates are dual-licensed under GPL v2+ and BSD 3-Clause.
|
|
|
|
**Dockerfile**:
|
|
- Based on `pandoc/latex:latest`
|
|
- Installs additional LaTeX packages: `enumitem`, `sectsty`, `underscore`
|
|
- Sets `/data` as the working volume
|
|
|
|
**Makefile**:
|
|
- Uses Podman (not Docker)
|
|
- `FILE_NAME=paul-halvorsen-resume` - Change this to build a different `.md` file
|
|
- `USER=paul` - Container user for file permissions
|
|
- Automatically detects if the Podman image needs rebuilding
|
|
|
|
### Resume Structure
|
|
|
|
**YAML Metadata Block** (top of `.md` file):
|
|
```yaml
|
|
---
|
|
name: [Your Name]
|
|
keywords: [comma-separated keywords for PDF metadata]
|
|
left-column:
|
|
- [Line 1 for left column under name]
|
|
- [Line 2 for left column]
|
|
right-column:
|
|
- [Line 1 for right column under name]
|
|
- [Line 2 for right column]
|
|
fontsize: [default 10pt]
|
|
fontenc: [default T1]
|
|
urlcolor: [default blue]
|
|
linkcolor: [default magenta]
|
|
numbersections: [true/false, controls section numbering]
|
|
name-color: [SVG color name like DarkSlateGray, applies to name]
|
|
section-color: [SVG color name like Tomato, applies to section headers]
|
|
---
|
|
```
|
|
|
|
The metadata block is required and must appear at the very top of the markdown file before any content.
|
|
|
|
**Resume Content**: Standard Markdown after the metadata block. Headers become sections, lists are formatted naturally.
|
|
|
|
### Multiple Resume Versions
|
|
|
|
The repository contains two main resume files:
|
|
- `paul-halvorsen-resume.md` - Concise version (built by default via Makefile)
|
|
- `paul-halvorsen-resume-detailed.md` - Extended version with more details
|
|
|
|
To build a different version, either:
|
|
1. Modify the `FILE_NAME` variable in the Makefile, or
|
|
2. Run Pandoc directly with the desired input file
|
|
|
|
### Important Notes
|
|
|
|
- The Makefile assumes Podman is installed and available
|
|
- Build output (.pdf files) and Podman artifacts (.podman-build file) are not tracked in git
|
|
- The `.podman-build` marker file prevents unnecessary image rebuilds (remove it to force rebuild)
|
|
- All LaTeX processing happens inside the container; no local LaTeX installation is needed
|
|
|
|
## Creating Customized Resumes for Job Applications
|
|
|
|
The detailed resume (`paul-halvorsen-resume-detailed.md`) contains comprehensive information across all roles and projects. To create a customized resume for a specific job application:
|
|
|
|
1. **Get job description** - Copy the job posting or description
|
|
2. **Provide to Claude Code** - Share the job description with Claude Code along with a request to create a customized resume
|
|
3. **Output format** - Claude will create a new markdown file using the naming convention:
|
|
```
|
|
paul-halvorsen-[company-name]-[role-title].md
|
|
```
|
|
Example: `paul-halvorsen-stripe-senior-rust-engineer.md`
|
|
|
|
4. **Build the PDF** - Generate the PDF using:
|
|
```bash
|
|
make resume FILE_NAME=paul-halvorsen-stripe-senior-rust-engineer
|
|
```
|
|
|
|
5. **Expected result** - A 1-2 page resume tailored to the job requirements with:
|
|
- Reordered work experience (most relevant roles first)
|
|
- Emphasized skills and metrics matching the job description
|
|
- Highlighted relevant accomplishments and projects
|
|
- Customized summary/intro focused on the role
|
|
|
|
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.
|