Update resume infrastructure for job-specific customization
- 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>
This commit is contained in:
136
CLAUDE.md
Normal file
136
CLAUDE.md
Normal file
@@ -0,0 +1,136 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user