mirror of
https://github.com/prdlk/cv.git
synced 2026-08-02 17:31:41 +00:00
6.7 KiB
6.7 KiB
description, argument-hint, allowed-tools
| description | argument-hint | allowed-tools |
|---|---|---|
| Optimize LaTeX resume wording for a target role, enforcing exactly one full page | <path-to-role-description.txt | pasted JD text> | Read, Edit, Write, Bash(pdflatex:*), Bash(tectonic:*), Bash(latexmk:*), Bash(pdfinfo:*), Bash(pdftotext:*), Grep, Glob |
Resume Optimizer
Tailor the best-matching resume variant under src/ to a target role by refactoring wording only — the set of
projects, experiences, employers, dates, and titles is FIXED and must never change.
Inputs
- Role description: $ARGUMENTS (a file path or pasted text; if a path, Read it)
- Source of truth: the YAML files under
docs/— the canonical inventory:docs/about/— summary/headline, contact, positioningdocs/experience/— roles, employers, dates, verified accomplishment bulletsdocs/projects/— project inventory with stack and outcomesdocs/skills/— skill taxonomy Read ALL files in these directories before selecting content. Every claim in the output must be traceable to an entry in one of them. If any directory is missing or empty, extract the current content of the react-native template (the most complete variant) into the right files and ask me to verify before proceeding.
- Templates: the role-variant resumes under
src/:- cryptography variant
- founding engineer variant
- protocol variant
- react native variant ← gold standard for structure, density, bullet style, and formatting. Treat it as the style reference for all others.
Template selection & facelift
- Glob
src/*.texand score the input JD against each base variant (domain keywords, stack overlap, seniority framing). Pick the closest match as the base. - Copy the base to a new application file — never edit the four base
variants in place:
src/PradNukala_<Role>_<Company>.tex(CamelCase fields, underscores between them, e.g.PradNukala_SeniorBackendEngineer_EllipsisLabs.tex). All content work happens in this copy; the glob Makefile emits the deliverabledist/PradNukala_<Role>_<Company>.pdfwith no Makefile edit. - If the selected base is NOT the react-native one, run a facelift pass
before content work: diff its structure against the react-native template
and bring it to parity — section ordering conventions, bullet formatting,
spacing macros, header/contact block, and overall density. Structure from
react-native; content from the selected variant's domain +
docs/. - If the JD is a hybrid (e.g., protocol + founding engineer), pick the closer
base and pull the other domain's content via
docs/, not by copy-pasting stale.texbullets across variants. - Never edit any base variant as collateral damage — react-native included; bases only change when intentionally updating the base itself.
Hard constraints
- No fabrication. Never invent metrics, technologies, scope, or outcomes not
present in the
docs/YAML files. Rewording is allowed; new claims are not. - Fixed inventory. Do not add or remove jobs/projects. You MAY reorder bullets
within a section and swap which projects are shown vs. cut, choosing the subset
most relevant to the role — but only from the
docs/inventory. - Exactly one page. Not 0.9 pages with whitespace at the bottom, not 1.05 pages. Full page, visually dense but readable.
- ATS-safe. No text in images, no tables for core content, standard section headers (Experience, Projects, Skills, Education).
Workflow
1. Analyze the role description
- Extract: required skills, preferred skills, seniority signals, domain keywords, and repeated phrases (repetition = what they actually screen for).
- Build a keyword priority list:
must-hit/should-hit/nice-to-hit.
2. Score and select content
- Score every experience bullet in
docs/experience/and every project indocs/projects/against the keyword list (relevance × recency × impact). - Select the highest-scoring subset that plausibly fills one page. Note what was cut and why — report this at the end.
3. Refactor wording
For each selected bullet:
- Lead with a strong verb, embed the highest-priority keyword naturally, end with a concrete outcome or metric from the yaml.
- Mirror the JD's exact terminology where truthful (if they say "distributed systems" and the yaml says "microservices at scale," use their phrasing).
- 1–2 lines per bullet in the compiled PDF. Never let a bullet wrap to a lonely 1–3 word second line (an "orphan") — tighten wording instead.
- Skills section: reorder so must-hit keywords appear first; drop irrelevant ones.
4. Compile and verify page fit (loop)
# <app> = PradNukala_<Role>_<Company>, the new application file under src/
make <app> && pdfinfo dist/<app>.pdf | grep Pages
- > 1 page: tighten in this order — (a) reword verbose bullets, (b) cut the
lowest-scoring bullet, (c) reduce
\itemsep/section spacing, (d) drop the lowest-scoring project. Recompile after each change. - < 1 full page (check visually via
pdftotextdensity or rendered output): expand in this order — (a) restore a cut high-scoring bullet, (b) add a relevant bullet from the yaml not currently used, (c) modestly increase spacing. Content before whitespace, always. - Repeat until exactly one full page. Cap at 6 compile iterations; if still fighting, show me the tradeoff options instead of thrashing.
5. Report
Output a summary:
- Which template was selected and its JD match score vs. the other three
- Facelift diff summary (if a non-react-native variant was uplifted): what structural changes were pulled from the gold standard
- Keyword coverage table: must-hit terms → where each landed (or "MISSING — not supported by docs/, do not fake it")
- What was cut/reordered and why
- Before/after for the 3 most significantly rewritten bullets
- Final page-fit status and compile command used
Notes
- Preserve any custom LaTeX macros in the template; edit content inside them.
- If the JD is for a materially different track than the yaml supports (e.g., pure ML role vs. infra background), say so up front rather than stretching.