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:

  1. Parse Posting: Extracts requirements and company context.
  2. Evaluate Fit: Scores alignment against 01‑candidate‑profile.md.
  3. Draft CV & Cover Letter: Generates LaTeX source files tailored to the role.
  4. Spawn Reviewer Agent: A second agent critiques the drafts for tone, accuracy, and ATS compatibility.
  5. Revise Drafts: Incorporates reviewer feedback using the style guide in 03‑writing‑style.md.
  6. Compile PDFs: Invokes the local LaTeX toolchain (using templates like cv/main_example.tex and cover_letters/cover.cls).
  7. ATS-Layer Verification: Runs tools/verify_pdf.py to check parsing compatibility.
  8. Present Final Output: Delivers the files to cv/ and cover_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.md and .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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →