Everett Cedarholm View on GitHub

Work 2026 AI / Tooling

Claude Job Search Agent

A set of Claude Code skills that run a job search the way a career center teaches it: start from companies worth joining, score every role on whether you can do it and whether you want it, and draft the documents in your own voice.

Role
Design & build
Year
2026
Built on
Claude Code
Stack
Python · python-docx
Surface
3 skills, plain markdown
License
Public repo

Why it
exists

Most AI job tools are generalists. You paste in a resume, they crawl every board on the internet, and they auto-fill applications for anything with a matching title. What comes out for you is what comes out for everyone else.

This one runs the method my MBA career center teaches. You decide first which industries and companies match where you want to go, and which titles get you there. Then you work that list, instead of the whole internet.

The scoring follows from the same idea. A role has to clear two bars — it has to fit your background, and it has to be something you actually want. Those are separate questions, so they get separate scores.

It surfaces, ranks, and drafts. It does not fill in forms or apply on your behalf. What it does is put everything one application needs in one place, so you are not switching between eight tabs to send a single email.

The rules it runs on

Five constraints
Your list

You populate the target list

About twenty-five companies that fit your background and point where you want to go. You update the file whenever your thinking changes, and the next run uses the new version.

Your voice

It learns to write the way you write

Tailoring draws on a voice file you fill in yourself — your story, your register, the words you would never use — and edits your own .docx rather than generating a new one.

Warm paths

You build the intro pathways

You keep a file of named contacts and the super-connectors who can put you in touch. When a role sits at the end of one of those paths, it moves up the ranking.

A finite list

It caps what comes back

You set a daily and a weekly limit. Anything over it waits in a backlog and competes again the next morning, so the list you get is one you can finish.

Your resume

It curates the resume too

Discovery does not stop at a link. Every role above your threshold arrives with your resume already rewritten against that posting, plus a report of exactly what moved.

How it works

Three skills, in order

All three are plain markdown files. Open them, read them, and change the parts you disagree with.

01
/job-setup

The onboarding interview

Run once, about fifteen minutes. Re-run later to change any single part.

Reads your existing resume and checks whether it actually parses in an ATS — most people have never checked. Then it builds your Word masters and walks you through targeting, your network, and how many roles a week you can realistically handle.

You never open a template by hand.

Produces  profile/  — resume masters, voice file, criteria, target companies, warm network. All gitignored; nothing leaves your machine.

02
/job-discover

The daily crawl and ranking

Run daily, or schedule it once your criteria are tuned.

Crawls your target companies plus YC and Wellfound, drops anything you've already seen, filters against your deal-breakers, and scores every role. Roles above your threshold get handed to the tailor automatically.

Results land in three places at once, so you can read them however you already work.

I have mine wired into a Notion board. Discovery runs every morning and writes straight to it, so the pipeline is already current by the time I open it — new roles scored, old ones still where I left them.

Produces  discovery/YYYY-MM-DD.md,  _tracker.csv,  and a Notion sync.

03
/job-tailor

The application, written

Runs automatically on high scorers, or by hand on any URL.

Reads one job description for its ATS keywords and its real priorities, then rewrites your resume master in place: bullets rephrased into the posting's vocabulary, header location matched to the job, titles adjusted as far as you allow.

Then it researches the company and drafts a one-page cover letter on a Hook → Proof → Lesson → Fit structure, run through an anti-AI-writing checklist and a final pass asking whether it still sounds like a human describing their own life.

Produces  Company/{Company}/{Role}/  — two .docx files plus CHANGES.md.

How a role gets scored

Two axes, 1–10

A single match percentage blends two questions that have nothing to do with each other: whether you could do the job, and whether you want it. Scored apart, they tell you what to do next.

Axis one

Fit

Could you do it, and does your resume already show it? Scored against your actual history.

Axis two

Target

Do you want it? Scored against where you said you want to go, whether or not you'd get it.

Combined

Overall

The weighted average of the two, plus a boost when a warm intro path reaches the company.

Senior Manager, Strategy & Ops Example
Fit 8 × 0.5
Target 9 × 0.5
Warm intro Alum, two steps out +0.5 Boost
Overall 9.0 Core
Target → Fit →

How far the tailoring goes

One setting, three modes
ModeWhat it does to your resume
conservative

Never changes a job title. Reorders bullets and lightly aligns wording. What you send is what you wrote.

balancedDefault

Adjusts titles where the level and domain words defensibly map to work you did. Rewrites bullets in the posting's vocabulary.

aggressive

Retitles every role to mirror the posting wherever the work supports it. Maximum keyword coverage.

In all three modes: never a function you didn't perform, never a tool you don't have, never a number that isn't already on your resume. Every application folder gets a CHANGES.md listing each title change, each rewritten bullet, and why it's defensible — so you can check what was said on your behalf without diffing two Word files.

Two readers,
opposite
wants

Your resume master is the file that gets edited and sent, and it gets read twice before anyone talks to you. The two readers want opposite things.

Reader one

The ATS

Converts the file to plain text before a human sees it. Anything sitting in a table, a text box, a Word header region, or a second column gets dropped on the way through — no error, no rejection notice, the line is simply gone.

Wants: flat structure, clean parse, nothing lost.

Reader two

The recruiter

Spends about six seconds on whatever survived, having already seen the same three templates all morning. Anything that reads as machine-written gets treated as machine-written.

Wants: a document a person clearly made.

This is the part that separates it from the other tools. They generate a document from scratch, which is exactly why the output looks generated. This one starts from a .docx master I built once — my fonts, my colours, my spacing, my layout — and edits that file in place. The structure underneath stays flat and parseable. The typography on top stays mine.

Run it yourself

macOS or Linux
# clone and install
git clone https://github.com/Edfordshire/claude-job-search-agent.git
cd claude-job-search-agent
pip3 install python-docx
./setup.sh

# then, inside Claude Code
/job-setup
/job-discover
/job-tailor <posting-url>
  • Claude Code — a Pro or Max plan, or API access.
  • Python 3 with python-docx.
  • A resume and cover letter you can save as .docx.
  • Everything stays local. Your resume, contacts, and criteria live in a gitignored profile/ folder and never leave your machine.

The first discovery run is the long one — nothing is in the dedup memory yet, so everything is new. It still only surfaces your daily cap.