Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Easy Job Search

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.

License: MIT Plugin: Claude Code Version

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.


What you get

  • 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.

Installation

This is a Claude Code plugin. You'll need Claude Code installed first.

Option 1 — clone into your plugins folder

# 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-search

Then restart Claude Code (or run /plugin reload). The four skills will autoload whenever their trigger phrases appear in conversation.

Option 2 — add as a marketplace

If you manage plugins through a marketplace, add this repo and install via /plugin install easy-job-search.

Verify it loaded

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.


Quick start

  1. Pick a workspace folder on your computer. Everything Claude generates (dashboard, CVs, letters) lands here. Example: ~/Documents/job-search/.
  2. 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.
  3. Build the dashboard: "Find me Senior PM roles in London — focus on AI-native companies and EdTech."
  4. Pick a role and tailor materials: "Build a CV and cover letter for the Anthropic Product Manager role."
  5. Track it: "I applied to Anthropic today."

That's the loop. Each command triggers one of the four skills below.


The four skills

job-dashboard — find and visualise opportunities

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…").

tailored-cv — a structurally unique CV per application

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.

cover-letter — a real letter, not boilerplate

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.

application-tracker — keep the pipeline alive

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:

  1. Updates the dashboard HTML (adds an "Applied" badge to the matching role card)
  2. Stores the state in memory so it persists across sessions
  3. 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.


A typical end-to-end flow

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.

Workspace structure

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.


Requirements

  • Claude Code — the CLI or desktop app, with web search enabled.
  • Node.js 18+ — used by tailored-cv (Puppeteer for PDF) and cover-letter (the docx package). Claude will run npm install puppeteer docx on 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.


Tips for better output

  • 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.

Privacy & data

  • 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.

Troubleshooting

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.


Contributing

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:

  1. Fork and branch
  2. Edit or add a SKILL.md (read the Claude Code skills docs for the front-matter format)
  3. Open a PR with a short description of the use case it solves

License

MIT — see LICENSE if present, otherwise treat as MIT pending file addition.


Author

Built by Adam Meek. If this got you a job, tell me about it — I love a good war story.

About

easy-job-search is to help you search and apply for roles, feed it your c.v. and claude code and you are away.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors