Commit Graph
211 Commits
Author SHA1 Message Date
Mads Lorentzen 1bf6a22cd9 Merge pull request #8 from MadsLorentzen/feat/moderncv-color-overrides-and-itemize-cleanup
- 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).
2026-04-28 21:08:20 +02:00
Mads LorentzenandClaude Opus 4.7 83ca0a8557 docs(setup): fix stale pdflatex references to 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>
2026-04-28 21:03:20 +02:00
Mads LorentzenandClaude Opus 4.7 465c429f94 docs(skill): document moderncv color overrides and itemize spacing rule
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>
2026-04-28 21:03:02 +02:00
Mads LorentzenandClaude Opus 4.7 3f8d04d759 fix(cv): override moderncv banking colors and remove inter-item \vspace
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>
2026-04-28 20:46:32 +02:00
Mads Lorentzen 6c23f80c03 Merge pull request #7 from MadsLorentzen/feat/compile-verify-and-relevance-weighted-cutting
Add PDF verification loop and relevance-weighted CV cutting to /apply
2026-04-25 13:57:45 +02:00
Mads LorentzenandClaude Opus 4.7 f62b9ec893 docs(README): soften "token-efficient" bullet to match reality
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>
2026-04-25 13:56:41 +02:00
Mads LorentzenandClaude Opus 4.7 fa9c422d26 feat(apply): restore 02-behavioral-profile.md to reviewer reading list
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>
2026-04-24 20:14:59 +02:00
Mads LorentzenandClaude Opus 4.7 906ac1bc19 fix(apply): restore QC coverage dropped during earlier token-efficiency refactor
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>
2026-04-24 20:12:39 +02:00
Mads LorentzenandClaude Opus 4.7 00678f9669 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>
2026-04-24 19:36:45 +02:00
Mads LorentzenandClaude Opus 4.7 32e63e5143 feat(apply): add mandatory PDF compile-and-inspect step and relevance-weighted cutting
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>
2026-04-24 19:34:46 +02:00
AI Job SearchandClaude Opus 4.6 c66d599d75 Initial release: AI-powered job application framework
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 08:34:06 +01:00