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>
This commit is contained in:
Mads Lorentzen
2026-04-24 20:12:39 +02:00
co-authored by Claude Opus 4.7
parent 00678f9669
commit 906ac1bc19
+10 -4
View File
@@ -142,10 +142,11 @@ A JSON array of concrete edits the drafter can apply directly without re-reading
Only use this format when you can quote the exact `old_string` from the drafts above. Make `old_string` unique — include enough surrounding context so it matches exactly once per file.
**Part B — Narrative suggestions (for judgment calls that are not mechanical edits):**
Prose suggestions grouped by category:
Prose suggestions grouped by category. Produce each category even if your finding is "no issues" — silence on a category can be mistaken for skipping it.
- **Missed keywords/requirements** — what to add and roughly where, if it cannot be expressed as a clean string replacement
- **Company/department-specific angles** — connections between experience and the company's strategic priorities, based on your research
- **Tone and style issues** — anything that conflicts with `03-writing-style.md`
- **Action-oriented reframing** — identify passive, generic, or low-energy statements and suggest action-oriented rewrites. Use this category especially for structural weakness that doesn't fit a single-sentence swap (e.g., "the whole opening paragraph reads as passive — restructure around your single strongest match to the posting").
- **Tone and style issues** — check against `03-writing-style.md`. Flag any issues with tone, formality, or voice (cliches, hedging, over-humility, inconsistent register).
**CRITICAL RULE:** All suggestions must be grounded in actual profile data. Do NOT suggest fabricating skills, experience, or achievements. If a requirement is a gap, say so honestly and suggest how to frame adjacent experience instead.
@@ -161,8 +162,13 @@ Return Part A and Part B together as a single structured message.
Once the reviewer agent returns its feedback:
1. **Apply Part A (structured edits) directly with the Edit tool.** Do NOT re-read the draft files — you already have them in context from Step 2, and the reviewer's `old_string` values were quoted from that same text. For each edit in the JSON array, call `Edit` with the given `file`, `old_string`, and `new_string`. Skip any whose rationale would require fabricating content.
2. **Apply Part B (narrative suggestions)** using judgment — these are the changes that need interpretation (reframing paragraphs, adding company angles, adjusting opening). Use Edit for targeted changes; only re-read a file if an edit fails because the surrounding text has shifted.
3. Do NOT incorporate any suggestion that would fabricate skills or experience.
2. **Apply Part B (narrative suggestions)** using judgment. These need interpretation, not mechanical replacement. Walk through every Part B category the reviewer returned and address it:
- **Missed keywords/requirements:** add the keyword or capability where it fits naturally in the CV or cover letter. Prefer the experience bullets (concrete evidence) over the profile statement (abstract claim).
- **Company/department-specific angles:** weave the reviewer's research into the cover letter opening or motivation paragraph. Verify every company claim via WebFetch/WebSearch before including it — do not trust reviewer research at face value.
- **Action-oriented reframing:** rewrite passive or generic phrasing (CV profile statement, cover letter opening, bullet leads). Structural weakness that the reviewer flagged without a clean JSON edit lives here.
- **Tone and style issues:** apply the writing-style-guide fixes (no em-dashes, no cliches, no apologetic hedging, consistent first-person active voice).
Use Edit for targeted changes; only re-read a file if an edit fails because the surrounding text has shifted.
3. Do NOT incorporate any suggestion that would fabricate skills or experience. If a posting requirement is a genuine gap, acknowledge it honestly and frame adjacent experience instead.
After all edits are applied, the two files on disk are the final drafts.