An AI-powered job search toolkit for Claude Code. Find roles, build company-tailored CVs, write matching cover letters, and track your applications — all from conversation.
Stop pasting the same generic CV into 40 portals. Hand Claude your background once, point it at a job description, and it produces a CV structured around what that specific company actually values, plus a cover letter with an opening line that doesn't make hiring managers' eyes glaze over. Then it keeps track of where you applied.
- Interactive job dashboard — a self-contained HTML file with every role you found, organised into Stretch / Strong Match / Step-Down-But-Interesting tiers, with filters, salary tags, match bars, and a direct "Apply" link to every listing.
- Company-tailored CV (PDF) — not a colour swap. A structurally different document for each company: capability cards for one, a requirements checklist for the next, leadership-principle sections for an Amazon-style brief.
- Cover letter (.docx) — opens with a sentence that actually says something. Body sections mapped to the themes in the job description. A "Why [Company]" close that proves you read more than the title.
- Application tracker — "I applied to Stripe yesterday" updates the dashboard, stores the state across sessions, and reminds you to follow up two weeks later.
This is a Claude Code plugin. You'll need Claude Code installed first.
# macOS / Linux
git clone https://github.com/adamtdmeek/easy-job-search.git \
~/.claude/plugins/easy-job-search
# Windows (PowerShell)
git clone https://github.com/adamtdmeek/easy-job-search.git `
$env:USERPROFILE\.claude\plugins\easy-job-searchThen restart Claude Code (or run /plugin reload). The four skills will autoload whenever their trigger phrases appear in conversation.
If you manage plugins through a marketplace, add this repo and install via /plugin install easy-job-search.
In Claude Code, ask: "What skills do you have for job searching?" — you should see job-dashboard, tailored-cv, cover-letter, and application-tracker listed.
- Pick a workspace folder on your computer. Everything Claude generates (dashboard, CVs, letters) lands here. Example:
~/Documents/job-search/. - Drop your CV in as
cv.md,cv.pdf, or paste it into the conversation. The richer the source material — metrics, project names, achievements — the sharper the output. - Build the dashboard: "Find me Senior PM roles in London — focus on AI-native companies and EdTech."
- Pick a role and tailor materials: "Build a CV and cover letter for the Anthropic Product Manager role."
- Track it: "I applied to Anthropic today."
That's the loop. Each command triggers one of the four skills below.
Trigger phrases: "find jobs", "search for roles", "build me a job dashboard", "what PM roles are open in London", "refresh my dashboard".
Runs 8–12 parallel web searches across role titles, seniority variants, industry-specific job boards (Greenhouse, Lever, Ashby), and target companies. Categorises every result into:
| Tier | Colour | Meaning |
|---|---|---|
| Upward | Amber | Stretch — meaningful step up in title, scope, or team size |
| Sideways | Blue | Strong match — equivalent seniority, you could step in immediately |
| Downward (interesting) | Purple | Technically a step down, but the company or product is too compelling to ignore |
Output: Job Opportunities Dashboard.html in your workspace. Open it in a browser. Filter by tier or industry. Every card has a direct link to the listing, a salary tag where discoverable, and a candid fit assessment ("you'd be a strong match because…" / "stretch because…").
Trigger phrases: "build a CV for [Company]", "tailor my CV", "prepare my CV for this role", "I'm applying to [Company]".
The core principle:
Structure the CV around the company's priorities, not your chronological history.
Reads the job description, picks a structural approach that fits, then builds the document around it:
- Capability cards for roles emphasising multiple distinct competencies
- Requirements checklist mapping each "you'll need" bullet to specific evidence from your career
- Leadership principles for Amazon-style briefs
- Platform/architecture for technical or platform roles
- Impact metrics for data-driven companies
Pulls the company's brand colours from their site or press kit and uses them for accents. Outputs both the source HTML (so you can edit) and a print-ready A4 PDF generated via Puppeteer.
Filenames: [Your Name] - CV ([Company]).html and .pdf.
Trigger phrases: "write a cover letter", "cover letter for [Company]", "prepare a cover letter for this role".
Writes a one-page Word document (.docx) with:
- A bold opening hook that draws a direct, specific line between what you do now and what they need. No "I am writing to express my interest in…".
- 3–4 body sections, each with a coloured header naming a specific competency from the job description (e.g., "AI-Native Transformation", "Platform Thinking at Scale") — never generic placeholders like "My Experience".
- A "Why [Company]" close showing you understand their stage, market position, and what makes the opportunity specifically compelling.
- Brand-coloured accents matched to the tailored CV (if one exists for the same company).
Filename: [Your Name] - Cover Letter ([Company]).docx.
Trigger phrases: "I applied to [Company]", "track my applications", "I got an interview at [Company]", "what's the status of my applications", "mark X as applied".
Tracks each application through seven states: Identified → Applied → Screening → Interview → Offer / Rejected / Withdrawn.
When you report an update it:
- Updates the dashboard HTML (adds an "Applied" badge to the matching role card)
- Stores the state in memory so it persists across sessions
- Updates the application count in the dashboard footer
Ask "give me a status overview" and it produces a pipeline summary plus follow-up suggestions ("It's been 2 weeks since you applied to X — consider a nudge"). When you book an interview, ask it to prep you and it'll structure talking points around the company's actual interview framework (e.g., Amazon LP, Meta PM rubric).
It also handles bulk corrections — if you spot a wrong metric in one CV, "actually that's 1.5x not 2x" will fix every existing CV and cover letter in the workspace and regenerate the PDFs.
You: Find me Head of Product roles in London — focus on AI-native
and EdTech companies, salary £150k+ if discoverable.
Claude: [job-dashboard runs 12 parallel searches]
Dashboard built. 47 roles found:
• 12 Upward (stretch) — including roles at Anthropic and Cohere
• 23 Sideways (strong match) — equivalent HoP roles in EdTech and SaaS
• 12 Downward but interesting — Senior PM roles at AI labs
You: Tailor a CV and cover letter for the Anthropic Head of Product role.
Claude: [tailored-cv + cover-letter run in sequence]
CV uses capability cards mapped to: AI safety, platform thinking,
cross-functional leadership, customer obsession.
Cover letter opens: "You're building the platform that lets AI
agents act on behalf of users. I build with AI agents every day."
Files saved to your workspace.
You: I applied to Anthropic today.
Claude: [application-tracker updates dashboard + memory]
Marked Anthropic as Applied. Will remind you to follow up around 9 May.
You: I got a screening call with Stripe!
Claude: Updated. Want me to prep you for it? I can pull their PM
interview structure and draft talking points.
After a few applications, your workspace will look something like this:
job-search/
├── cv.md # your base CV (input)
├── Job Opportunities Dashboard.html # the live dashboard
├── Adam Meek - CV (Anthropic).html
├── Adam Meek - CV (Anthropic).pdf
├── Adam Meek - Cover Letter (Anthropic).docx
├── Adam Meek - CV (Stripe).html
├── Adam Meek - CV (Stripe).pdf
└── Adam Meek - Cover Letter (Stripe).docx
The HTML CV files are kept around so you can ask for tweaks ("make the metrics row more prominent") without rebuilding from scratch.
- Claude Code — the CLI or desktop app, with web search enabled.
- Node.js 18+ — used by
tailored-cv(Puppeteer for PDF) andcover-letter(thedocxpackage). Claude will runnpm install puppeteer docxon first use if needed. - A workspace folder you've granted Claude write access to.
- Your CV or background information in any form — markdown, PDF, pasted text, or just a chat about your career.
No coding required — Claude handles the technical bits.
- Feed it metrics. "Grew product revenue 3x in 18 months" produces a sharper CV bullet than "responsible for revenue growth". The skills can only weave in what you give them.
- Paste the full job description. Don't summarise. The structural approach for the CV and the section headers for the cover letter are derived directly from the JD's language.
- Be honest about tier fit. If Claude says a role is a stretch, it's because the dashboard logic genuinely flagged it. Trust the bands — apply to a mix.
- Refresh weekly. "Refresh my dashboard" re-runs the searches but preserves your "Applied" badges so you don't lose tracking state.
- Use the bulk-correction feature. Spot one factual error and Claude will fix every existing document at once.
- Everything stays local. Generated files (CVs, dashboards, letters) are written to your workspace folder. Nothing is uploaded to any third-party service by this plugin.
- Web search is used to discover job listings and research company brand colours / interview frameworks. Standard Claude Code behaviour.
- No analytics, telemetry, or external API calls beyond what Claude Code itself does.
- Your CV never leaves your machine unless you choose to share it.
The skills don't trigger. Run /plugin list in Claude Code and confirm easy-job-search is loaded. If not, check the plugin lives in ~/.claude/plugins/easy-job-search/ and that .claude-plugin/plugin.json is present.
PDF generation fails. Puppeteer needs to download Chromium on first use. Run npm install puppeteer in the workspace folder once, manually, if Claude can't.
Dashboard searches return junk listings. Be more specific in the trigger prompt — give a domain, location, and seniority band. The skill scales its search angles to whatever you tell it.
The CV looks generic. Make sure your base CV has metrics and project names, not just titles and dates. Garbage in → generic out.
Issues and pull requests welcome. The four skills live under skills/ — each is a single SKILL.md (plus optional references/ for longer reusable guidance). To propose a new skill or extend an existing one:
- Fork and branch
- Edit or add a
SKILL.md(read the Claude Code skills docs for the front-matter format) - Open a PR with a short description of the use case it solves
MIT — see LICENSE if present, otherwise treat as MIT pending file addition.
Built by Adam Meek. If this got you a job, tell me about it — I love a good war story.