---
name: job-cover-letter
description: Draft a tailored, job-specific cover letter from a resume, a job posting, and research about the target company. Use when the user wants to write, draft, generate, or improve a cover letter for a specific job.
---
# Cover Letter
Draft a one-page, tailored cover letter for a specific job. Strong
cover letters are built from three inputs — the candidate's resume,
the job posting, and concrete details about the company — and follow a
small set of writing principles. Skip any of those inputs and the
letter will read generic.
## Workflow
Follow these steps in order. Do not skip ahead — drafting without
inputs or research is the single most common failure mode.
### Step 1: Gather inputs
Before drafting anything, you need both of these. If either is
missing, ask the user for it.
1. **Resume** — file path, pasted text, or a link. Read it fully
before writing.
2. **Job posting** — file path, pasted text, or URL. If it's a URL,
fetch it with WebFetch. Read the full posting; do not skim.
Also helpful, ask if not provided:
- **Hiring manager's name** (if known) — beats "Dear Hiring Manager"
- **Tone preference** — formal, conversational, or match-the-company
(default)
- **Anything to emphasize or avoid** — e.g., explaining a career
change, downplaying a gap
Do not proceed to Step 2 until you have at least the resume and job
posting.
### Step 2: Research the company
Use WebSearch and WebFetch to find:
1. **What the company does** — read their About page, recent product
launches, and mission statement.
2. **One or two specific, recent things** — a product launch, news
item, public initiative, or value statement that the candidate can
plausibly connect to. Generic admiration ("I admire your work") is
worthless; one specific reference beats three vague compliments.
3. **Tone and voice** — skim their website copy and any public-facing
communications. A fintech firm wants polished; a startup wants
energy. The letter's voice should mirror this.
Search queries that work well:
- `<company name> about` / `<company name> mission`
- `<company name> news <current year>`
- `<company name> blog`
- `<company name> <relevant product or team>`
If the company is obscure and search turns up little, tell the user
and ask if they have any inside knowledge to share.
### Step 3: Plan before drafting
Do not start writing prose yet. First, do this analysis (briefly, in
your head or as notes):
1. **Extract the job's must-haves.** Pull 4-6 specific
skills/responsibilities from the posting. Mirror their exact
phrasing later — if they say "distributed systems," don't write
"large-scale infrastructure."
2. **Find the overlap.** For each must-have, identify one specific
item from the resume that demonstrates it. Prefer items with
metrics (% improvement, $ saved, users affected, time reduced).
3. **Pick the company hook.** Choose ONE specific thing from your
research that ties to the candidate's experience or motivations.
This goes in the opener.
4. **Pick 2-3 stories.** Each story = situation + action +
result-with-a-number. These fill the body.
If you can't find at least one quantified achievement in the resume
that maps to the job's requirements, surface this to the user before
drafting — the letter will be weak without concrete results.
### Step 4: Draft
Write 4-5 short paragraphs, one page total. Structure:
| Section | Contents | Length |
|---|---|---|
| Header | Candidate name, contact info, date, addressee | 4-6 lines |
| Intro | Who they are, what role, ONE specific company hook | 2-4 sentences |
| Body (1-2 paragraphs) | 2-3 stories with metrics, mirroring the job's language | ~60% of the letter |
| Conclusion | Polite, open call-to-action — never "I'll call you" | 2-3 sentences |
| Signature | "Sincerely," + name | 2 lines |
Detailed structural guidance, story formula, tone matching, banned
phrases, and worked example comparisons are in
[references/best-practices.md](references/best-practices.md). **Read
it before drafting the first time** — it contains the rules that make
the difference between a forgettable letter and a strong one.
### Step 5: Self-review against the checklist
Before showing the letter to the user, run through the checklist at
the end of
[references/best-practices.md](references/best-practices.md). Common
things to catch:
- Generic adjectives instead of evidence ("detail-oriented,"
"self-starter")
- Opening with "I am writing to apply for…"
- Body claims without numbers
- Banned phrases ("To Whom It May Concern," "think outside the box,"
"game-changer")
- A closing that oversteps ("I will call you next week")
- Restating the resume instead of expanding on it
Fix anything that fails the check, then present the draft.
### Step 6: Offer to iterate
After presenting the draft, briefly ask whether the user wants to:
- Adjust the tone (more formal / more casual)
- Swap in different stories or emphasize different skills
- Shorten / lengthen specific paragraphs
- Try a different opening
Keep iterations focused — change one dimension at a time.
## Important rules
- **One page.** If the draft is running long, cut — don't shrink the
font.
- **Never invent achievements, metrics, employers, or skills.** If the
resume doesn't support a claim, do not write it. Ask the user
instead.
- **Mirror the posting's language.** This helps with both human
readers and ATS keyword scans.
- **Specific > generic, every time.** A named product, a number, a
real story always beats an adjective.
- **No templates, no boilerplate.** Each cover letter is written for
one specific job.
- If the cover letter is to be written in LaTeX, use the “charter”
font.