← All craftbooks

Résumé / CV

Documents and decksevalv1.0.3released 2026-09-01workflow: build-loop

Build a clean, ATS-friendly résumé or CV from a person's background, tailored to a target role. Scopes the target role and the highlight reel of achievements FIRST (so the résumé is targeted, not a life history), then designs a single-column, parser-safe layout, then writes impact-led bullets with metrics that fit one to two pages. Use for job applications, LinkedIn-to-résumé conversions, and role-targeted CV rewrites.

Steps

Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Scope the résuméplannerentry

    target role, must-hit keywords, and the achievement highlight reel

    Show working prompt
    Target before drafting. Step 1: identify the target role/title and, if a job description is provided, extract the must-hit skills and keywords. Step 2: from the person's background, select the experiences that matter for THIS role and set aside the rest — a résumé is a targeted highlight reel, not a complete history. Step 3: choose the section set and order (summary, experience, skills, education, plus optional projects/certs) and decide the length cap (1 page for <10 yrs experience, 2 max). Step 4: for each kept role, note the 2-4 strongest achievements and where a metric exists (numbers, %, scale). Step 5: write an acceptance-criteria checklist ('targeted to the stated role', 'reverse-chronological experience', 'every role has impact bullets, most with a metric', 'must-hit keywords appear naturally', 'fits within the page cap', 'no objective-statement filler'). Write the scope + highlight reel + checklist via write_task_note AND to {{workPath}}/scope.md. No layout or final bullets yet.
    
    The deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.
  2. Design the layoutdesigner

    single-column ATS-safe template with clean hierarchy

    Show working prompt
    Design a layout that BOTH a recruiter and an ATS parser can read. Step 1: choose a single-column layout (multi-column and tables confuse parsers) with a clear header (name, title, contact line) and standard section headings (Experience, Skills, Education) in plain text. Step 2: pick a conservative type scale and a restrained palette (mostly ink-on-white, at most one subtle accent) with strong contrast; no graphics, no icons that carry meaning, web-safe fonts only. Step 3: define the entry format for experience (Company | Title | Dates on one line, bullets beneath) and a compact skills format. Step 4: set print rules (@page, Letter/A4) and a height constraint matching the page cap. Step 5: write a visual-criteria checklist ('single column, no tables for layout', 'standard parser-friendly section headings', 'consistent date alignment', 'fits the page cap in print'). Write the layout spec + checklist via write_task_note AND to {{workPath}}/design.md. No copy yet.
    
    The deliverable `{{workPath}}/design.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.
  3. Write the résumécopywriter

    write impact bullets into index.html, tailored and within the cap

    Show working prompt
    Write the résumé and assemble it into the layout as a single self-contained index.html (inline CSS with print rules). Step 1: write a 1-2 line professional summary tailored to the target role, weaving in must-hit keywords naturally. Step 2: write experience entries in reverse-chronological order with impact-led bullets — each starts with a strong verb and, wherever the highlight reel supplied one, includes a metric (scale, %, $, time saved). Step 3: write a scannable skills section using the role's keywords, and a compact education section. Step 4: cut ruthlessly to fit the page cap; remove dated or irrelevant roles before adding pages. Step 5: ensure no objective-statement filler and no first-person pronouns in bullets. On a loop-back, fix ONLY the named gaps. Write the path + a note confirming page count and that keywords are covered via write_task_note.
  4. Evaluatereviewer

    Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.

    Show working prompt
    QA the résumé. Step 1: open/render index.html and, if print-preview is available, confirm it is within the page cap. Step 2: check EACH acceptance criterion: targeted to the stated role, single-column parser-safe layout with standard section headings, reverse-chronological experience, every role has impact bullets and most carry a metric, must-hit keywords appear naturally, no objective-statement filler, dates aligned consistently. Step 3: read it as a recruiter for the target role and confirm the fit is obvious in the top third. Write PASS/FAIL per criterion; if it exceeds the page cap, FAIL and loop back to trim.
    
    Then route — this is the whole point of the loop:
    
    - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`.
    - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "write" })` to loop back. The builder fixes exactly those gaps.
    
    Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.
  5. Finishdeveloper

    All acceptance criteria met. Stamp a short summary and report DONE.

    Show working prompt
    Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.

Triggers

Phrases that suggest this craftbook to a crew.

Source

View this craftbook on GitHub · MIT license