- cv/main_example.tex: add color1 overrides for firstnamestyle, lastnamestyle, and sectionstyle so the first name, last name, and section headings render in the moderncv blue accent instead of black (default banking on modern MiKTeX). Strip 21 inter-item \vspace{1pt} lines from itemize lists, which intermittently produced an oversized gap before a single bullet because the inter-item \vspace creates a paragraph break that interacts with the list's internal \itemsep.
- .claude/skills/job-application-assistant/05-cv-templates.md: document both patterns so /apply produces CVs that match the example template.
- SETUP.md: fix two stale pdflatex references that contradicted the rest of the docs (README, CLAUDE.md, and 05-cv-templates.md already specified lualatex).
Two stragglers in SETUP.md still recommended pdflatex even though the
README, CLAUDE.md, and 05-cv-templates.md all correctly say lualatex.
The compile snippet in section 7 used pdflatex, and the troubleshooting
section described the CV compile as "standard LaTeX." Both updated to
match the rest of the documentation.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two additions to 05-cv-templates.md so the /apply workflow follows the
same patterns as cv/main_example.tex:
1. Add the three \renewcommand* lines to the documented preamble so
downstream CVs inherit the color1 overrides for firstname, lastname,
and section headings. Includes a short paragraph explaining the
reason and a note for users who prefer regular-weight firstname.
2. Add a "Spacing inside itemize lists" subsection that calls out the
inter-item \vspace anti-pattern with a wrong/right example and
explicitly preserves the two related patterns that DO render fine
(post-section spacer, inter-cventry \vspace{3pt}).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Two fixes for the moderncv banking + lualatex + MiKTeX combination that
the README documents as the recommended setup:
1. **Color overrides for names and section headings.** Default banking on
modern MiKTeX renders firstname, lastname, and \section headings in
black, which clashes with the rest of the blue accent scheme (links,
bullets, contact icons). Add three \renewcommand* lines that force
firstnamestyle, lastnamestyle, and sectionstyle to use \color{color1}.
Both names render bold in matching blue, and every \section heading
renders blue with the standard horizontal underline. No effect for
users on a setup where the defaults already render blue.
2. **Remove \vspace{1pt} between \item entries in itemize lists.** This
pattern (used 21 times in the template) intermittently produces an
oversized gap before a single item: every adjacent pair has the same
separator in the source, but LaTeX renders one of them noticeably
wider because the inter-item \vspace creates a paragraph break that
interacts with the list's internal \itemsep. Removing the inter-item
\vspace lets itemize use its native uniform spacing, which renders
consistently. \vspace{1pt} immediately after \section{...} (between
header and first item) and \vspace{3pt} between top-level \cventry
blocks are kept - those are different patterns and render fine.
Also updated the file's compile-comment from "pdflatex" to "lualatex"
to match the README.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The original bullet ("Token-efficient. Reviewer receives drafts inline
rather than re-reading files. Verification runs once, at the end.") is
technically true for the reviewer-dispatch path but invites readers to
infer that the overall workflow uses fewer tokens than master. That is
not actually defensible: the new Step 5 (compile-and-inspect) spends
tokens on Read'ing both PDFs and on layout-fix iteration cycles, which
typically offsets the savings from inline draft passing and scoped
reviewer reads. End-to-end the workflow is roughly token-neutral, with
the variance dominated by how many layout fixes the CV needs.
Reframes the bullet as "Token-efficient reviewer dispatch" (which is
accurate and verifiable from the prompt structure) and adds an explicit
note that Step 5 spends some of those savings on PDF rendering. The
trade is real - tokens for fewer broken PDFs reaching the user - and
worth surfacing honestly rather than overclaiming.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Brings 02-behavioral-profile.md back into the reviewer's reading list (it
was dropped in the earlier token-efficiency refactor). The reviewer now
reads four files: 01 (candidate profile), 02 (behavioral profile), 03
(writing style), 04 (job evaluation). The LaTeX template files (05, 06)
remain excluded, since those govern structural/LaTeX concerns the drafter
already applied.
The behavioral profile is there to let the reviewer cross-check whether
the cover letter's voice matches the candidate's natural register -
something 03-writing-style.md does not encode (03 has the universal rules
like "no em-dashes, no cliches"; 02 has the per-person register like
"Collaborator PI should not be given a combative solo-hero tone").
Also cross-references 02 explicitly in the Part B "Tone and style issues"
category so the reviewer actually uses it during critique rather than
just skimming it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Audit of master vs the branch found three real coverage gaps in the
reviewer prompt and drafter's revise step. This commit restores them
without giving up the Part A (JSON edits) + Part B (narrative) structure.
1. Action-oriented reframing is restored as a Part B narrative category.
The previous refactor folded reframing into Part A edit rationales, but
structural weakness (e.g. "the whole opening paragraph is passive") does
not fit a clean find-and-replace and needs prose critique to surface.
2. Tone and style phrasing is strengthened from "anything that conflicts
with 03-writing-style.md" back to the master's proactive "check
against... flag issues with tone, formality, or voice", with explicit
examples (cliches, hedging, over-humility, inconsistent register).
3. Step 4 revise guidance is expanded from "Apply Part A... Apply Part B
using judgment" (which could be read as a free-for-all) to an
enumerated sub-list under Part B covering every category the reviewer
returns: missed keywords, company angles, action-oriented reframing,
tone/style. Keeps the architectural change (Part A/B split) but
restores the master's explicit "apply every kind of fix" discipline.
Also adds a small instruction to the reviewer: produce each Part B
category even if the finding is "no issues" - silence on a category can
be mistaken for skipping it.
One remaining judgment call left unchanged in this commit: the reviewer
no longer reads 02-behavioral-profile.md. The refactor excluded it on the
reasoning that 03-writing-style.md carries the voice/tone rules. This is
a conscious trade-off; if voice-matching starts slipping in practice,
restoring 02 to the reviewer's reading list is a one-line fix.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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>
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>