mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
docs: document PDF verification loop and relevance-weighted cutting
Updates README.md and SETUP.md to reflect the new /apply workflow additions shipped in the previous commit: - Bumps the /apply step list from 6 to 7, adding "Compile and inspect" between Revise and Present - Adds a "What makes this workflow different" subsection highlighting the PDF verification loop, relevance-weighted CV cutting, drafter-reviewer separation, and token-efficient dispatching - Updates prerequisites note to call out lualatex (CV) and xelatex (cover letter) explicitly, with the reason each engine is required - Updates SETUP.md's LaTeX section to match (pdflatex -> lualatex for the CV, with the MiKTeX fontawesome5 caveat) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
32e63e5143
commit
00678f9669
@@ -33,7 +33,7 @@ The framework encodes career guidance best practices, including structured evalu
|
|||||||
- [Claude Code](https://claude.com/claude-code) (CLI)
|
- [Claude Code](https://claude.com/claude-code) (CLI)
|
||||||
- Python 3.10+
|
- Python 3.10+
|
||||||
- [Bun](https://bun.sh) (for Danish job search CLI tools)
|
- [Bun](https://bun.sh) (for Danish job search CLI tools)
|
||||||
- LaTeX distribution (for compiling CVs and cover letters): [TeX Live](https://tug.org/texlive/) or [MiKTeX](https://miktex.org/)
|
- LaTeX distribution with `lualatex` and `xelatex`: [TeX Live](https://tug.org/texlive/) or [MiKTeX](https://miktex.org/). The CV compiles with `lualatex` (pdflatex often fails on modern MiKTeX installs with `fontawesome5` font-expansion errors); the cover letter compiles with `xelatex` because `cover.cls` requires `fontspec`.
|
||||||
|
|
||||||
## Quick start
|
## Quick start
|
||||||
|
|
||||||
@@ -127,17 +127,25 @@ ai-job-search/
|
|||||||
|
|
||||||
## How `/apply` works
|
## How `/apply` works
|
||||||
|
|
||||||
The `/apply` command runs a **drafter-reviewer workflow**:
|
The `/apply` command runs a **drafter-reviewer workflow** with mandatory PDF compilation:
|
||||||
|
|
||||||
1. **Parse** the job posting (URL or text)
|
1. **Parse** the job posting (URL or text)
|
||||||
2. **Evaluate fit** against your profile (skills, experience, culture, location, career alignment)
|
2. **Evaluate fit** against your profile (skills, experience, culture, location, career alignment)
|
||||||
3. **Draft** a tailored CV and cover letter in LaTeX
|
3. **Draft** a tailored CV and cover letter in LaTeX
|
||||||
4. **Spawn a reviewer agent** that researches the company and critiques the drafts
|
4. **Spawn a reviewer agent** that researches the company and critiques the drafts
|
||||||
5. **Revise** based on the reviewer's feedback
|
5. **Revise** based on the reviewer's feedback
|
||||||
6. **Present** the final output with a verification checklist
|
6. **Compile and inspect** both PDFs: lualatex for the CV, xelatex for the cover letter. Claude reads the rendered pages and iterates on the LaTeX until the CV is exactly 2 pages with no orphaned entry titles, and the cover letter is exactly 1 page with the signature visible and fonts consistent.
|
||||||
|
7. **Present** the final output with a verification checklist
|
||||||
|
|
||||||
All claims in the CV and cover letter are verified against your actual profile. The system never fabricates skills or experience.
|
All claims in the CV and cover letter are verified against your actual profile. The system never fabricates skills or experience.
|
||||||
|
|
||||||
|
### What makes this workflow different
|
||||||
|
|
||||||
|
- **PDF verification loop.** Most LaTeX-resume templates produce "looks fine in the .tex" output that breaks in the PDF: job titles orphan to the next page, cover letters spill onto page 2, bullet fonts silently fall back to the body font. The `/apply` command compiles and visually inspects every PDF and applies targeted fixes (`\needspace`, `\enlargethispage`, font-matching wrappers for list items) until the layout is clean. This runs automatically on every application.
|
||||||
|
- **Relevance-weighted CV cutting.** When a CV overflows 2 pages, the workflow does not cut mechanically from the "oldest" section. It scores each candidate line by (a) relevance to the target posting, (b) uniqueness in the document, and (c) whether the cover letter depends on it, and cuts the lowest-total-score line first. An older-role bullet that hits posting keywords survives ahead of a recent-role bullet that does not.
|
||||||
|
- **Drafter-reviewer separation.** The drafter writes; a second Claude agent, spawned with a fresh context, researches the company and critiques the drafts. The drafter then revises. This catches missed keywords, weak framing, and generic language that a single pass often leaves in.
|
||||||
|
- **Token-efficient.** Reviewer receives drafts inline rather than re-reading files. Verification runs once, at the end.
|
||||||
|
|
||||||
## Customization
|
## Customization
|
||||||
|
|
||||||
### Which files to edit manually
|
### Which files to edit manually
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ Install a LaTeX distribution to compile the generated `.tex` files to PDF:
|
|||||||
- **macOS:** [MacTeX](https://tug.org/mactex/)
|
- **macOS:** [MacTeX](https://tug.org/mactex/)
|
||||||
- **Linux:** `sudo apt install texlive-full` or `sudo dnf install texlive-scheme-full`
|
- **Linux:** `sudo apt install texlive-full` or `sudo dnf install texlive-scheme-full`
|
||||||
|
|
||||||
The CV compiles with `pdflatex`. The cover letter compiles with `xelatex` (for custom fonts).
|
The CV compiles with `lualatex` (pdflatex often fails on modern MiKTeX installs with `fontawesome5` font-expansion errors). The cover letter compiles with `xelatex` because `cover.cls` requires `fontspec` for its custom Lato/Raleway fonts.
|
||||||
|
|
||||||
## 2. Fork and clone
|
## 2. Fork and clone
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user