# AI Models and Agents for CV and Cover Letter Drafting in the AI Job Search Framework

> Discover AI models for CV and cover letter drafting in the AI Job Search framework. Learn how Claude Code and reviewer agents streamline your application process.

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: deep-dive
- Published: 2026-08-30

---

**The AI Job Search framework uses Claude Code as its primary model for generating CVs and cover letters, supplemented by a general-purpose reviewer agent for edits and an optional Gemini-research-expert agent for external fact-checking.**

This open-source toolchain automates the entire application workflow—from parsing a job posting to producing polished LaTeX documents. Understanding which AI components handle each stage helps you customize, debug, or extend the drafting pipeline.

---

## Claude Code: The Core Drafting Engine

At the heart of the framework lies **Claude Code**, the Claude model implementation that powers the entire document generation process. As documented in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md), Claude Code produces the initial drafts for both CVs and cover letters based on your candidate profile and the target job description.

The orchestration happens through the ** `/apply` command**, defined in [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md). When invoked with a job URL, Claude Code:

1. Parses the job posting and your [`01-candidate-profile.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/01-candidate-profile.md).
2. Generates tailored LaTeX files: `cv/main_<company>_<role>.tex` and `cover_letters/cover_<company>_<role>.tex`.
3. Passes both drafts to a secondary agent for quality review.

```bash

# Trigger the full drafting pipeline

/apply https://jobs.example.com/role/12345

```

The generated files use standard LaTeX templates—`moderncv` for CVs and a custom `cover.cls` for cover letters—as described in [`templates/README.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/templates/README.md). Claude Code maps your experience and skills to these template structures while aligning content with the specific role requirements.

---

## General-Purpose Reviewer Agent: Automated Editing

After Claude Code produces the initial drafts, the framework invokes a **general-purpose reviewer agent** via the *Agent* tool to critique and refine the content. This agent receives the drafts inline and evaluates them against your candidate profile for accuracy, tone, and alignment.

The reviewer returns structured feedback as a **JSON array of edit operations**:

```json
[
  {
    "file": "cv/main_example.tex",
    "old_string": "Managed 5‑person team",
    "new_string": "Managed a 5‑person team"
  },
  {
    "file": "cover_letters/cover_example.tex",
    "old_string": "I am excited about your mission",
    "new_string": "I am genuinely excited about your mission"
  }
]

```

These precise, line-level suggestions enable automated application of edits without re-running the full generation pipeline. The reviewer agent handles grammatical improvements, technical accuracy checks, and stylistic consistency between your profile and the drafted documents.

---

## Gemini-Research-Expert Agent: External Fact Verification

For research-intensive applications, the framework defines a third AI component: the **Gemini-research-expert agent**, configured in [`.claude/agents/gemini-research-expert.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/agents/gemini-research-expert.md). Notably, this agent specifies `model: sonnet`—the same underlying Claude model family, specialized for web research tasks.

**This agent does not draft CV or cover letter text directly.** Instead, it performs targeted research to:

- Verify company-specific claims.
- Gather recent news, funding rounds, or product launches.
- Validate technical requirements mentioned in job postings.

The facts retrieved by this agent are then incorporated into drafts produced by Claude Code, ensuring your application reflects current, accurate information about the target employer.

---

## How the Three AI Components Interact

| Stage | AI Component | Input | Output |
|-------|--------------|-------|--------|
| **Draft Generation** | Claude Code | Job URL + candidate profile | Initial `.tex` files for CV and cover letter |
| **Peer Review** | General-purpose reviewer agent | Draft documents inline | JSON array of edit suggestions |
| **Fact Verification** | Gemini-research-expert agent (`model: sonnet`) | Research queries | Verified facts for draft integration |

This modular architecture separates generation from validation and research, allowing each AI model to specialize while maintaining coherent output through structured handoffs.

---

## Practical Customization Points

To adapt the AI models for your own workflow, examine these key files:

- [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md) — Modify the `/apply` orchestration logic or change how the reviewer agent is invoked.
- [`.claude/agents/gemini-research-expert.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/agents/gemini-research-expert.md) — Adjust the research agent's system prompt or swap in a different model identifier.
- [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) — Update the high-level workflow documentation if you change the underlying drafting model.

The framework assumes access to Claude Code through Anthropic's tooling. If you need to substitute a different model for draft generation, you would replace the Claude Code calls in `/apply` with equivalent API invocations to your preferred provider.

---

## Summary

- **Claude Code** handles all initial CV and cover letter drafting in the AI Job Search framework, generating LaTeX documents tailored to specific job postings and candidate profiles.
- A **general-purpose reviewer agent** automatically critiques drafts and returns JSON-formatted edit suggestions for refinement.
- The **Gemini-research-expert agent** (`model: sonnet`) performs optional web research to verify company facts before they are embedded in drafts.
- The `/apply` command in [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md) orchestrates this three-stage AI pipeline from a single job URL input.

---

## Frequently Asked Questions

### What is the main AI model used for writing CVs and cover letters?

**Claude Code** is the primary model. It powers the `/apply` command that generates both the CV (`cv/main_<company>_<role>.tex`) and cover letter (`cover_letters/cover_<company>_<role>.tex`) based on your candidate profile and the job posting.

### Does the framework use multiple AI agents or just one model?

The framework uses **three distinct AI components**: Claude Code for initial drafting, a general-purpose reviewer agent for editing, and an optional Gemini-research-expert agent for external fact-checking. Only Claude Code and the reviewer agent touch the actual CV and cover letter text.

### Can I replace Claude Code with a different model like GPT-4 or Gemini?

The framework is built around Claude Code as implemented in [`.claude/commands/apply.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/apply.md). Substituting a different model would require modifying the orchestration logic, template handling, and output parsing. The reviewer agent and research agent configurations would similarly need adaptation to your new model's API.

### What does the Gemini-research-expert agent actually do?

It performs **web research and fact verification**, not drafting. Configured with `model: sonnet` in [`.claude/agents/gemini-research-expert.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/agents/gemini-research-expert.md), this agent validates company-specific claims and gathers current information that Claude Code later incorporates into the CV or cover letter.