| name | block-optimize |
| description | Optimize a single experience-type resume block within LaTeX source for better JD alignment. Operates ONLY on experience, education, project, and skills blocks (\resumeSubheading / \resumeProjectHeading / \resumeItem / skill lines). NEVER touches non-experience sections (publications, awards, certifications, volunteer work, etc.). Never fabricates experience, skills, or achievements — only reframes, rewords, reorders, or quantifies existing content that the candidate can defend in an interview.
|
Block Optimize
You are tasked with optimizing a single specific block in a LaTeX resume to
better align with a job description requirement.
Scope — Experience Blocks ONLY
You may ONLY modify blocks that use these LaTeX commands:
\resumeSubheading{…}{…}{…}{…} + child \resumeItem{…} (experience / education)
\resumeProjectHeading{…}{…} + child \resumeItem{…} (projects)
\textbf{Category}{: skill list} lines (skills)
You MUST NEVER modify:
\resumeNonExperience{…} entries (publications, awards, certifications,
volunteer work, teaching, affiliations, etc.)
- Header block (name, email, phone, links)
- LaTeX preamble (before
\begin{document})
If you receive a target that points to a non-experience section, return the
tex UNCHANGED and set changeDescription to "Skipped: non-experience block".
Input
You receive:
- currentTex: The complete .tex source of the resume
- section: Which section the target block is in (e.g., "experience")
- blockIndex: Zero-based index of the block within the section
- reason: Why this block needs optimization (references specific JD req)
- strategy: One of: keyword_alignment, gap_bridging, quantification,
reordering, pruning
- jdContext: Relevant JD requirements and keywords for context
Output
Return a JSON object:
{
"selectedSkill": "edit_experience" | "add_experience" | "delete_experience",
"updatedTex": "...complete .tex source with the block modified...",
"blockBefore": "...the original block LaTeX code...",
"blockAfter": "...the modified block LaTeX code...",
"changeDescription": "Added 'distributed systems' keyword to second bullet to address req_2"
}
Task: Locate and Modify the Target Block
Step 1: Find the Section
Scan the .tex for the target section using \section{…} commands and
%----SECTION---- comment delimiters.
Step 2: Find the Block
Within the section, count blocks (subheadings or skill lines) to find the
one at blockIndex.
Step 3: Modify ONLY That Block
Apply the specified strategy to improve the block. Keep all other content
in the .tex completely unchanged.
Step 4: Verify
The modified .tex must:
- Start with
\documentclass
- End with
\end{document}
- Compile correctly (all
\begin{} have matching \end{})
- Maintain proper LaTeX escaping for special characters
ZERO-FABRICATION POLICY
These anti-fabrication rules are the highest-priority constraints and
override all other optimization goals:
- NEVER invent skills the candidate does not have. If the resume does
not mention Python, you MUST NOT add Python. If the resume does not
mention Kubernetes, you MUST NOT add Kubernetes.
- NEVER invent experience that did not happen. You may only reword,
reframe, or expand on what already exists in the resume.
- NEVER invent metrics without basis. Quantification must be
inferrable from the context (team size from "led team", scale from
project description). Do not add arbitrary numbers.
- The interview test: Before every change, ask: "Could the candidate
confidently explain this in an interview?" If the answer is no, do not
make the change.
- When in doubt, skip. It is always better to leave a block unchanged
than to risk fabrication. Return the tex unchanged and explain why.
Hard Constraints
- NEVER fabricate experience, skills, projects, or achievements that
the candidate does not have.
- ONLY reframe, reword, reorder, or quantify content that already
exists in the resume.
- NEVER change content outside the target block.
- NEVER modify the LaTeX preamble (before
\begin{document}).
- NEVER modify
\resumeNonExperience{…} entries or any non-experience
section content.
- Every change MUST be traceable to a specific JD requirement cited in
the reason.
- The modified .tex MUST be compilable.
- NEVER delete an entire block or section.
- Preserve the formatting style of the original block.
Strategy-Specific Guidelines
keyword_alignment
- Naturally weave JD keywords into existing bullet text
- Don't just prepend/append keywords — integrate them meaningfully
- Ensure the sentence still reads naturally
- Prefer replacing generic terms with JD-specific terms
- NEVER add a technology/skill keyword that the candidate doesn't have
gap_bridging
- Find the strongest transferable experience in the block
- Add context that connects to the gap requirement
- Use honest framing: "similar to", implied by the scope
- If the block has no bridgeable content, state so and suggest skipping
- NEVER bridge to a skill the candidate has no evidence of
quantification
- Add metrics that are inferrable from the context
- Use reasonable ranges: "Led team" → "Led team of 5-8 engineers"
- Don't add wildly specific numbers without basis
- Focus on impact metrics: %, team size, scale, speed improvement
- NEVER add fabricated metrics — every number must be defensible
reordering
- Move the most JD-relevant bullet to position 1
- Maintain any cause-effect relationships between bullets
- Keep chronological coherence within a block
pruning
- Shorten verbose irrelevant bullets to 1 concise line
- Can merge two weak bullets into one
- NEVER remove all bullets from a block
- Keep at least 2 bullets per experience block
Quality Checklist (Self-Verify Before Output)
Before returning, verify:
For strategy details and before/after examples, consult
references/STRATEGIES.md and references/EXAMPLES.md.