# The Seven Steps in the AI Job Search Application Workflow: Complete Guide

> Master the AI Job Search application workflow with our seven-step guide. Transform your profile into an interview-ready application using Claude Code slash commands. Get started today!

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: getting-started
- Published: 2026-09-01

---

**The AI Job Search framework guides you through a seven-step, command-driven workflow that turns a raw profile into a complete, interview-ready application using Claude Code slash commands.**

The `MadsLorentzen/ai-job-search` repository implements a fully automated job search assistant that runs locally on your machine. This **AI Job Search application workflow** consists of seven distinct Claude Code commands—from onboarding your profile to continuous skill development—that transform unstructured career data into polished application materials.

## Step 1: Profile Onboarding with `/setup`

The workflow begins with **`/setup`**, an interactive onboarding command that populates your candidate profile. According to the repository's [`README.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/README.md) (lines 49-53), this step imports existing assets—CVs, LinkedIn exports, and diplomas—or runs an interview-style questionnaire to generate structured profile files.

The canonical profile definition lives in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md), while detailed setup instructions are documented in [`SETUP.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/SETUP.md). This foundational step ensures all subsequent commands have access to a rich, machine-readable representation of your experience.

## Step 2: Job Discovery with `/scrape`

Once your profile exists, **`/scrape`** executes the job-portal search skills located under `.agents/skills/`. These CLI tools collect matching postings, deduplicate them, and score them for fit against your profile.

Scraper state persists in [`job_scraper/seen_jobs.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/job_scraper/seen_jobs.json), allowing the workflow to track which positions have already been processed. This prevents redundant applications and maintains a historical record of the market.

## Step 3: Application Generation with `/apply`

The **`/apply <url>`** command runs the full drafter-reviewer pipeline. As implemented in the source code, this step:

1. Parses the job posting URL or pasted text
2. Evaluates fit against your profile
3. Drafts a LaTeX CV and cover letter tailored to the role
4. Invokes a reviewer agent to critique the materials
5. Revises content based on feedback
6. Compiles PDFs and performs ATS verification

The [`tools/verify_pdf.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/verify_pdf.py) script ensures output integrity, while successful applications are logged to `job_search_tracker.csv` for pipeline tracking.

## Step 4: Interview Preparation with `/interview`

After submitting an application, **`/interview`** generates a stage-specific preparation pack. This command analyzes the archived application materials to produce company research briefs, curated STAR examples from your profile, and structured mock interview scenarios. The output targets the specific requirements extracted from the original job posting.

## Step 5: Outcome Tracking with `/outcome`

The **`/outcome`** command closes the application loop by recording recruitment results—whether interview invitations, offers, or rejections. This step archives the CV, cover letter, and posting for future reference, updates `job_search_tracker.csv` with the final status, and can auto-draft follow-up messages for professional correspondence.

## Step 6: Job Ranking with `/rank`

When **`/scrape`** returns numerous results, **`/rank`** bridges discovery and application. This command batch-scores newly scraped postings against the fit framework defined in your profile, returning a prioritized shortlist. By quantifying relevance before drafting materials, `/rank` ensures you invest effort only in high-probability opportunities.

## Step 7: Skill Development with `/upskill`

The final step, **`/upskill`**, analyzes skill gaps between your current profile and observed job requirements. This command compares your experience against scraped postings or a specific URL, then generates a prioritized learning plan with web-sourced resources. Output reports are stored in the `upskill/` directory, enabling continuous improvement between application cycles.

## Implementation Architecture

The workflow relies on several key files that maintain state across sessions:

- **[`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md)** — Canonical candidate profile definition
- **`job_search_tracker.csv`** — Central CSV registry updated by `/apply` and `/outcome`
- **[`job_scraper/seen_jobs.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/job_scraper/seen_jobs.json)** — Deduplication cache for scraped positions
- **`.agents/skills/*/SKILL.md`** — CLI tool definitions for specific job portals
- **[`tools/verify_pdf.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/verify_pdf.py)** — PDF validation utility used by the `/apply` pipeline
- **[`tools/check_upstream_updates.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/check_upstream_updates.py)** — Maintenance script for keeping the workflow current

## Summary

- **Seven Claude Code commands** constitute the complete AI Job Search application workflow: `/setup`, `/scrape`, `/apply`, `/interview`, `/outcome`, `/rank`, and `/upskill`.
- **Local-first architecture** stores all data in your repository—profile definitions in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md), applications in `job_search_tracker.csv`, and learning plans in `upskill/`.
- **Automated pipeline** moves from raw profile import through PDF generation, interview prep, and outcome tracking without external SaaS dependencies.
- **Extensible skills system** under `.agents/skills/` allows custom scrapers for new job portals.

## Frequently Asked Questions

### What is the AI Job Search application workflow?

The workflow is a seven-step, command-driven pipeline implemented in the `MadsLorentzen/ai-job-search` repository. It uses Claude Code slash commands to automate profile onboarding, job scraping, application generation, interview preparation, outcome tracking, job ranking, and skill gap analysis—all running locally on your machine.

### How does the `/apply` command generate tailored application materials?

The `/apply` command executes a drafter-reviewer agent pipeline defined in the repository. It parses the job posting, evaluates fit against your [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) profile, drafts LaTeX documents, subjects them to automated critique, revises them, and compiles final PDFs. The [`tools/verify_pdf.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/verify_pdf.py) script validates outputs before they are archived in `job_search_tracker.csv`.

### What files does the workflow update during operation?

Key files include [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) (profile definition), `job_search_tracker.csv` (application registry), [`job_scraper/seen_jobs.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/job_scraper/seen_jobs.json) (scraping state), and contents of the `upskill/` directory (learning reports). The `.agents/skills/` folder contains modular scrapers that the `/scrape` and `/rank` commands invoke.

### How does the `/upskill` command identify learning priorities?

`/upskill` performs a gap analysis between your profile data and the requirements found in scraped jobs or a specific posting URL. It then queries web resources to build a prioritized learning plan, storing the results in the `upskill/` directory for reference during career development cycles.