---
name: make-resume
description: Generate a tailored evidence-first resume from a real job description. Use for new applications to assess hard qualifications and role fit before writing, select International Tech or Swiss/DACH format, plan canonical achievements, generate LaTeX, validate claims, compile, and record the application decision.
---

# Generate a Resume

## Input

Accept a JD file, pasted JD, or URL. Obtain the real posting text before analysis. If it cannot be retrieved, ask the user to paste it; never reconstruct it.

## Phase 0 — Canonical and JD Preflight

1. Read `resume_builder/reference/shared_ops.md`.
2. Read `resume_builder/canonical/claims.json` completely.
3. Read `config.md`, `AGENTS.md`, `application_strategy.md`, `resume_reference.md`, and `critique_framework.md`.
4. Run `python resume_builder/helpers/validate_resume_system.py`.
5. Verify and save the verbatim JD; record source/date/status.
6. Create the output folder and session from `session_file_template.md`.

## Phase 1 — Fit Gate Before Writing

Build a requirement table with Required/Preferred and Direct/Adjacent/Gap/Constraint classifications. Cite canonical claim IDs for every Direct or Adjacent match.

Compute Evidence Fit and identify hard gates using `critique_framework.md`. Then assign:

- Core.
- Adjacent.
- Stretch.
- No-go.

Record Channel Strength and a warm-channel action for Core roles.

Stop and present the fit decision before resume planning when:

- a hard gate fails;
- the role is Stretch;
- the selected cohort category is already full;
- a practical constraint is unresolved.

Proceed on a no-go only after the user explicitly overrides the stated reason. An override does not change the fit classification.

## Phase 2 — Audience and Content Plan

Select International Tech by default. Use Swiss/DACH or Employer-specific format only when the employer/context supports it.

Read the matching role bundle, `skills_taxonomy.md`, `achievement_reframing_guide.md`, and only the experience files needed for selected claims.

Plan:

- Optional 2--3 line summary.
- Four to six evidence-backed skills lines.
- Swisscom 4--5 bullets.
- Bosch 3--4 bullets.
- Zero or one bullet for each older role.
- Normally 11--14 bullets total, with no page-fill quota.

For each proposed bullet show canonical ID, evidence type, scope, and why it belongs. Identify any impact metric that still needs user confirmation.

Apply `cl_reference.md` and propose `Cover Letter Decision: YES/NO` with one reason.

Present the plan and wait for explicit user confirmation before generation.

## Phase 3 — Generate

Copy `resume.cls` and `resume_template.tex` into the output folder. For a Swiss/DACH audience, also read `resume_template_dach.tex` as an audience-policy overlay; it is not a standalone document. Write fresh content from canonical claims and experience records; never copy a historical output.

Rules:

- Employer, formal/transparent title, dates and location come first.
- Do not use tailored themes as job titles.
- Mix natural bullet lengths.
- Use only verified metrics and outcomes.
- Preserve allowed verbs and ownership scope.
- Never add a skill to mirror the JD.
- Certifications appear once.

## Phase 4 — Validate and Inspect

Run:

```powershell
python resume_builder/helpers/validate_resume_system.py --document <resume.tex>
```

Fix every failure. Compile the LaTeX, inspect both pages, and run `pdftotext` to verify parsing and information order. Do not add filler to reduce whitespace.

Update the session with the as-built content, validation results, page count, cover-letter decision, and next action.

Present the finished resume and the original Evidence Fit classification. Wait for approval. If the cover-letter decision is YES, point to `/make-cl`; otherwise point directly to `/critique`.
