Agent Upstart

Cool things people are building with agents — and practical help getting the most out of them.

Skills · last verified 2026-10-24

ai-job-search-dev/ai-job-search — tailor a CV per posting with Claude Code

github.com/ai-job-search-dev/ai-job-search · job application framework for Claude Code · fit scoring, tailored CVs and cover letters, interview prep

What it does

AI Job Search turns Claude Code into a job application assistant. You fill in your profile once, search job portals, and for each posting worth pursuing it evaluates the fit, drafts a tailored CV and cover letter, has a second agent review the drafts, and compiles them to PDF. You read the result and send it yourself; nothing in the workflow submits an application for you.

The author's own account of his search, stated in the README, is 69 tailored applications, 20 first interviews, and 1 signed contract. That is one person's result, not a benchmark and not a promise about yours.

The core commands are /setup (build your profile from a documents folder, a pasted CV, or an interview), /scrape (search portals and present matches by fit), /rank (batch-score scraped postings into a ranked shortlist), and /apply (evaluate one posting, draft, review, revise, and compile). Later commands cover interview prep (/interview), recording outcomes (/outcome), and skill gaps (/upskill).

The portal search skills shipped with the repo are built for the Danish market (Jobindex, Jobnet, Akademikernes Jobbank, and others). Two country-agnostic starting points ship alongside them: linkedin-search, which uses LinkedIn's public job listings, and freehire-search, which queries the freehire.me aggregator's public API. For any other board, /add-portal investigates the board and generates a search skill for it, test-running a live query before registering anything.

Before you install: keep your copy private

Do this step first, because it cannot be undone afterward. The README warns that a fork of a public repository is always public, and that /setup writes your name, contact details, work history, and salary expectations into tracked files. A public fork with your profile in it publishes all of that. Use a private repository with this repo as upstream instead. The full recipe is on our keep your job-hunt repo private page; in short: clone the repo locally, point its origin at your own private repository, and keep the original as the upstream remote for updates.

Install

Prerequisites (from the repo README): Claude Code, Python 3.10+, Bun, and a LaTeX distribution with lualatex and xelatex. Claude Code has no free tier, the README notes: you need a Claude Pro, Max, or Team subscription, or Anthropic API credits.

In your private copy, install the portal search tools:

python3 tools/install_portal_clis.py

Then open Claude Code in the project directory and run the profile setup:

claude
# Then inside Claude Code:
/setup

/setup offers three paths: read a documents/ folder you have filled in (CV PDF, LinkedIn export, diplomas, reference letters, past applications), import a single CV pasted in chat, or walk through an interview. It detects what you have and asks. The documents-folder path can be re-run safely as you add material.

With a profile in place, the first full run looks like this:

/scrape
/apply https://example-job-board.example/job/1234567

If a posting URL cannot be fetched, because some portals block automated access, paste the full job description after /apply instead. When a scrape returns more jobs than you want to read through, /rank batch-scores them first and hands the pick you choose to the full /apply workflow.

What /apply produces: a tailored CV compiled to exactly 2 pages with lualatex and a cover letter compiled to exactly 1 page with xelatex, with the agent reading the rendered pages and fixing layout problems (orphaned titles, spilled pages) until they are clean. It also checks the CV the way an applicant tracking system sees it, by extracting the PDF's text layer: contact details must appear as literal text, and a keyword your profile does not support is reported as a gap, never added anyway. The posting itself passes a deterministic integrity gate first (hidden text, invisible characters, instruction-shaped lines), and postings are treated as untrusted input throughout: the workflow follows no instructions embedded in them.

Verified against github.com/ai-job-search-dev/ai-job-search (README: Quick start, Prerequisites, Other commands, How /apply works, Job search tools; SETUP.md section 8), 2026-10-24.

Trust score: not scored

No score is given for this page. The repository holds many skill and command files, and those files were not fully read in this pass, so a scored review would not be honest. What was checked is listed under Verification below.

Verification

Checked 2026-10-24 against the author's own repository. No install was run and no account was connected for this check.

What was checked: Author README (Quick start, Prerequisites, Other commands, How /apply works, Job search tools, Custom templates) and SETUP.md section 8 (private-repository recipe, gitignored files) were read from a fresh clone of the repo. Install commands and command names on this page are copied from the README.

Limits: Install commands checked against the author README; not executed in this pass. The skill and command files behind the slash commands were not read in full, so no trust score is given. The creator's outcome numbers are the author's own account from the README, not an independent measurement. The README's own fork and upstream commands still name the project's previous path; the current path used on this page is the one the clone was taken from.

Sources: github.com/ai-job-search-dev/ai-job-search (README; SETUP.md section 8)

Also in this series

Related playbook: Keep your job-hunt repo private

Back to: Skills index