mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
Adds a new Step 5 to the /apply workflow that compiles the CV (lualatex)
and cover letter (xelatex) and visually inspects the resulting PDFs before
presenting them to the user. This catches page-break failures that .tex
review cannot detect: orphaned cventry titles, cover letters spilling to
a second page, and bullet fonts not matching body text.
Also introduces relevance-weighted cutting as the rule for shrinking an
overflowing CV: score each candidate line by (a) relevance to the posting,
(b) uniqueness in the document, and (c) load-bearing role in the cover
letter, then cut the lowest-total-score line first, regardless of section.
This replaces the old static "cut oldest section first" heuristic, which
was wrong whenever a relevant older-role bullet competed with an
irrelevant recent-role bullet.
Bundled with the earlier pending token-efficiency improvements to the
/apply workflow (inline draft passing to the reviewer, scoped reviewer
file reads, single end-of-workflow verification pass).
Changes:
- .claude/commands/apply.md: new Step 5 (Compile & Inspect PDFs), renumber
old Step 5 to Step 6, update token-efficiency rules at top to reference
Step 6 for the verification checklist
- .claude/skills/job-application-assistant/05-cv-templates.md: switch
recommended compile engine from pdflatex to lualatex (pdflatex fails on
modern MiKTeX with fontawesome5 font-expansion errors), add
"Compile-and-Inspect Loop" section with needspace/enlargethispage
patterns, add "Relevance-weighted cutting" section
- .claude/skills/job-application-assistant/06-cover-letter-templates.md:
add compile command, add "Compile-and-Inspect Loop", document the
"\lettercontent{} + itemize" pitfall and the required font-matching
Raleway-Medium wrapper fix
- CLAUDE.md: add "Compiled PDF verification (MANDATORY)" checklist items
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.4 KiB
6.4 KiB
Job Application Assistant for [YOUR_NAME]
Role
This repo is a job application workspace. Claude acts as a career advisor and application assistant for [YOUR_NAME], helping with:
- Job fit evaluation - Assess job postings against your profile (skills, experience, behavioral traits)
- CV tailoring - Adapt existing CV templates (LaTeX/moderncv) to target specific roles
- Cover letter writing - Draft targeted cover letters using existing templates (LaTeX)
- Interview preparation - Prepare answers, questions, and talking points for interviews
- Career strategy - Advise on positioning and personal branding
Candidate Profile
Identity
- Name: [YOUR_NAME]
- Location: [YOUR_CITY], [YOUR_COUNTRY] ([YOUR_COMMUTE_CONSTRAINTS])
- Languages: [YOUR_LANGUAGES]
- Status: [YOUR_EMPLOYMENT_STATUS]
- LinkedIn headline: "[YOUR_LINKEDIN_HEADLINE]"
Education
- [DEGREE_LEVEL] in [FIELD] ([YEAR_START]-[YEAR_END]) - [INSTITUTION]
- Thesis: "[THESIS_TITLE]"
- Topics: [KEY_TOPICS]
Professional Experience
- [JOB_TITLE] ([START_DATE] - [END_DATE]) - [COMPANY] ([LOCATION])
- [KEY_RESPONSIBILITY_1]
- [KEY_RESPONSIBILITY_2]
- [KEY_ACHIEVEMENT]
Technical Skills
- Primary: [YOUR_PRIMARY_SKILLS]
- Secondary: [YOUR_SECONDARY_SKILLS]
- Domain: [YOUR_DOMAIN_EXPERTISE]
- Software: [YOUR_TOOLS_AND_SOFTWARE]
Certifications
- [CERTIFICATION_NAME] - [HOURS]h - completed [DATE]
Publications
- [AUTHOR_LIST] ([YEAR]). [TITLE]. [JOURNAL].
Awards
- [AWARD_NAME] - [EVENT] ([YEAR])
Behavioral Profile
- [TRAIT_1] - [DESCRIPTION]
- [TRAIT_2] - [DESCRIPTION]
- Strengths: [YOUR_STRENGTHS]
- Growth areas: [YOUR_GROWTH_AREAS]
- Thrives in: [YOUR_IDEAL_ENVIRONMENT]
What Excites You
- [PASSION_1]
- [PASSION_2]
Target Sectors
Deal-breakers
- [DEALBREAKER_1]
- [DEALBREAKER_2]
Repo Structure
cv/- LaTeX CV variants (moderncv template, banking style)cover_letters/- LaTeX cover letters (custom cover.cls template).claude/skills/- AI skill definitions for the application workflow.agents/skills/- Job search CLI tools
Workflow for New Job Applications
- User provides a job posting (URL or text)
- Always evaluate fit first: skills match, experience match, behavioral/culture match. Present this assessment to the user before proceeding.
- If good fit: create targeted CV (
cv/main_<company>.tex) and cover letter (cover_letters/cover_<company>_<role>.tex) - Verify both documents (see Verification Checklist below)
- Prepare interview talking points based on the role requirements and your strengths
Important: When mentioning agentic coding or AI tooling in CVs/cover letters, explicitly reference Claude Code by name.
Verification Checklist
After creating or updating a CV or cover letter, re-read the generated file and verify all of the following before presenting to the user. Report the results as a pass/fail checklist.
Factual accuracy
- All claims match actual profile (CLAUDE.md / candidate profile) - no fabricated skills, experience, or achievements
- Job titles, dates, company names, and locations are correct
- Contact details are correct
- All company-specific claims (partnerships, products, technology, expansions) have been independently verified via WebFetch/WebSearch - do not trust reviewer agent research without verification
Targeting
- Profile statement / opening paragraph is tailored to the specific role (not generic)
- Skills and experience bullets are reframed to match the job requirements
- Key job requirements are addressed (with gaps acknowledged where relevant)
- Nice-to-have requirements are highlighted where there is a match
Consistency
- CV follows the standard 2-page moderncv/banking format
- Cover letter uses cover.cls template and established structure
- Tone is consistent across CV and cover letter
- No contradictions between CV and cover letter content
Quality
- No LaTeX syntax errors (balanced braces, correct commands)
- No spelling or grammar errors
- Agentic coding / AI tooling references mention Claude Code by name
- Cover letter is addressed to the correct person (or "Dear Hiring Manager" if unknown)
- Cover letter fits approximately one page
Compiled PDF verification (MANDATORY - never skip)
Both documents MUST be compiled and visually inspected via the Read tool on the PDF output. "Looks fine in the .tex" is not acceptable - LaTeX page-break decisions are unpredictable. Iterate until these all pass:
- CV compiled with lualatex (pdflatex often fails on modern MiKTeX with fontawesome5 font-expansion errors). Cover letter compiled with xelatex (cover.cls requires fontspec).
- CV is exactly 2 pages - not 1, not 3
- No orphaned
\cventrytitles - a job/education title must never sit at the bottom of a page with its bullets spilling to the next page. Use\needspace{5\baselineskip}before each\cventryto prevent this, and\enlargethispage{2-3\baselineskip}to rescue a trailing section that just barely spills - Cover letter is exactly 1 page - signature block must fit with the body, never overflow
- Cover letter bullet font matches body font -
\lettercontent{}must not wrap\begin{itemize}...\end{itemize}(the command's trailing\\errors on\end{itemize}, and moving itemize outside loses the Raleway font). Standard pattern: close\lettercontent{}, then wrap the list in{\raggedright\fontspec[Path = OpenFonts/fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont \begin{itemize}...\end{itemize}\par}