Complete Full-Stack Workflow of the AI Job Search Framework
The AI Job Search Framework automates the entire job hunt—from profile ingestion to interview prep—through a sequence of local slash commands (/setup, /scrape, /apply, /interview) that leverage multi-agent workflows to draft, review, and compile PDF-ready application documents.
The MadsLorentzen/ai-job-search repository provides a fully local, extensible automation suite designed to orchestrate every phase of the job application process. Unlike cloud-based job bots, this AI Job Search Framework keeps your sensitive profile data on your own machine while using agentic workflows to parse postings, evaluate fit, and generate tailored CVs and cover letters via LaTeX.
Profile Setup and Initialization
Every workflow starts with the /setup command, defined in .claude/commands/setup.md.
This interactive onboarding wizard ingests documents from your local documents/ folder—such as existing CV PDFs, LinkedIn exports, and diplomas—and materializes the extracted facts into two canonical knowledge bases:
CLAUDE.md: The high-level candidate profile used by all agents..claude/skills/job-application-assistant/01‑candidate‑profile.md: A structured data file containing education history, experience, skills, and preferences.
Once initialized, this profile drives all subsequent automation, ensuring every cover letter and CV revision remains consistent with your established narrative.
Job Discovery and Market Scraping
The /scrape command triggers a parallel search across every installed portal skill. As implemented in MadsLorentzen/ai-job-search, the framework discovers executable CLI tools located under .agents/skills/*/cli (covering portals like Jobbank, Jobdanmark, Jobindex, Jobnet, LinkedIn, and FreeHire).
The aggregator collects raw postings, performs deduplication against job_scraper/seen_jobs.json, and writes the fresh batch to the workspace. Because each portal is implemented as an isolated skill with its own SKILL.md specification, the system remains language- and country-agnostic.
/scrape
Automated Fit Scoring and Ranking
Before applying, you can optionally batch-score the scraped postings using the /rank command (.claude/commands/rank.md).
This command evaluates each posting against the rubric defined in .claude/skills/job-application-assistant/04‑job‑evaluation.md, calculating a fit score based on your profile. It returns a sorted CSV shortlist that highlights application deadlines, key strengths, and potential gaps, allowing you to prioritize high-probability opportunities.
/rank
The Multi-Agent Application Pipeline
The core of the AI Job Search Framework full-stack workflow is the /apply <url> command. Defined in .claude/commands/apply.md, this triggers a deterministic eight-stage pipeline:
- Parse Posting: Extracts requirements and company context.
- Evaluate Fit: Scores alignment against
01‑candidate‑profile.md. - Draft CV & Cover Letter: Generates LaTeX source files tailored to the role.
- Spawn Reviewer Agent: A second agent critiques the drafts for tone, accuracy, and ATS compatibility.
- Revise Drafts: Incorporates reviewer feedback using the style guide in
03‑writing‑style.md. - Compile PDFs: Invokes the local LaTeX toolchain (using templates like
cv/main_example.texandcover_letters/cover.cls). - ATS-Layer Verification: Runs
tools/verify_pdf.pyto check parsing compatibility. - Present Final Output: Delivers the files to
cv/andcover_letters/.
/apply https://jobindex.dk/job/1234567
Upon completion, you will see a confirmation similar to:
✅ CV and cover letter compiled (2 pages / 1 page)
✅ ATS check passed
Files created:
cv/main_Jobindex_1234567.tex
cover_letters/cover_Jobindex_1234567.tex
Outcome Tracking and Automated Follow-ups
After submission, the /outcome <company> command (.claude/commands/outcome.md) logs the interaction. It updates job_search_tracker.csv with the submission date, role title, and status, while archiving the original posting and generated documents under documents/applications/<company_name>/.
For applications that remain silent, the framework provides /outcome followup, which automatically drafts polite follow-up messages for entries older than 10 days.
Interview Preparation
The /interview command (.claude/commands/interview.md) generates a stage-specific preparation pack using the archived posting and your outcome history. This includes:
- Deep company research.
- Tailored STAR (Situation, Task, Action, Result) examples drawn from your profile.
- A mock-interview script with anticipated questions.
/interview Jobindex_1234567
Reporting, Dashboards, and Skill Development
For analytics, the /html-report command (.claude/commands/html-report.md) generates a self-contained report.html file with SVG-rich visualizations of your application pipeline. Alternatively, /notion-sync pushes a read-only view to Notion for mobile access.
To address gaps identified during the ranking phase, the /upskill command analyzes tracked postings and returns a prioritized learning plan with web-sourced resources, governed by the logic in .claude/skills/upskill/SKILL.md.
Extending Portals and Templates
The framework is designed for customization. The /add-portal command scaffolds a new directory under .agents/skills/<name>-search/ with boilerplate CLI integration, allowing you to plug in any local job board. Similarly, /add-template (.claude/commands/add-template.md) registers custom LaTeX or Typst templates for CV generation, storing the compile configuration for reuse.
/add-portal
/add-template
Summary
- The AI Job Search Framework operates entirely locally, keeping candidate data in
CLAUDE.mdand.claude/skills/rather than external APIs. - The workflow progresses through distinct phases: Setup (
/setup) → Discovery (/scrape) → Ranking (/rank) → Application (/apply) → Tracking (/outcome) → Preparation (/interview). - Applications are generated via a two-agent drafting and review loop that produces ATS-verified PDFs using modular LaTeX templates.
- The system is extensible via CLI scaffolding commands (
/add-portal,/add-template) that allow integration of arbitrary job markets and document styles.
Frequently Asked Questions
Where is my data stored when using the AI Job Search Framework?
All data remains on your local machine. Your candidate profile is stored in CLAUDE.md and .claude/skills/job-application-assistant/01‑candidate‑profile.md, while application tracking persists in job_search_tracker.csv and archived postings live under documents/applications/.
How does the /apply command ensure document quality?
The command implements a drafter-reviewer workflow: one agent drafts the CV and cover letter in LaTeX, while a second agent critiques the output for tone and accuracy. After revision, tools/verify_pdf.py performs an ATS-layer check to ensure the final PDF can be parsed by Applicant Tracking Systems.
Can I add support for job boards not included in the repository?
Yes. The /add-portal command scaffolds a new skill directory under .agents/skills/ with the necessary CLI boilerplate, allowing you to integrate any market-specific job board by implementing its search interface.
What dependencies are required to run the full workflow?
You must have Claude Code installed to execute the slash commands. Additionally, generating PDFs requires a local LaTeX distribution (e.g., TeX Live) to compile the .tex files produced by the /apply command.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →