# How `/interview` Builds a Stage‑Specific Preparation Pack: A Complete Technical Breakdown

> Discover how the /interview command builds stage-specific preparation packs by loading artefacts, verifying facts, and synthesizing tailored interview content. Learn the technical breakdown.

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

---

**The `/interview` command in ai‑job‑search builds a stage‑specific preparation pack through a deterministic 6‑step pipeline that loads archived application artefacts, verifies company facts via WebFetch, and synthesizes tailored interview content including likely questions, STAR mappings, consistency briefs, and logistics.**

The `ai-job-search` repository provides a CLI‑driven job application system where the `/interview` command automates interview preparation for tracked applications. This command, defined in [`.claude/commands/interview.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/interview.md), transforms scattered application data into a focused, stage‑appropriate preparation pack stored as `interview_prep_<stage>.md` in your personal application archive.

## The Six‑Phase Pipeline for Stage‑Specific Interview Prep

The `/interview` command follows a strictly ordered pipeline. Each phase enforces data integrity and surfaces only verified, context‑aware content.

### Step 0: Parse the Command Input

The command accepts an optional `<company> <role>` argument at [lines 11‑17](https://github.com/MadsLorentzen/ai-job-search/blob/master/.claude/commands/interview.md#L11).

- **With argument:** The system queries `job_search_tracker.csv` for an exact match.
- **Without argument:** It lists all rows with status `interview`, `offer`, or recently `applied` for user selection.

This ensures every subsequent step operates on a single, well‑defined application context.

### Step 1: Load the Complete Application Context

At [lines 22‑30](https://github.com/MadsLorentzen/ai-job-search/blob/master/.claude/commands/interview.md#L22), the command hydrates the workspace from the archive folder at `documents/applications/<company>_<role>/`:

| File | Purpose |
|------|---------|
| [`job_posting.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/job_posting.md) | Original requirements and responsibilities |
| `cv_draft.tex` | Exact CV submitted to this employer |
| `cover_letter.tex` | Exact cover letter submitted |
| [`outcome.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/outcome.md) | Current stage, feedback, and application history |

If any file is missing, the system falls back to **live WebFetch** or prompts the user directly. The user must also specify:

- Interview stage (phone screen, technical, final)
- Date
- Format (in‑person, video, phone)
- Interviewer names

This inputs drive the **stage‑specific tailoring** of the final pack.

### Step 2: Execute Interview‑Focused Company Research

At [lines 38‑48](https://github.com/MadsLorentzen/ai-job-search/blob/master/.claude/commands/interview.md#L38), the system runs the **Company Research Checklist** from `.claude/skills/job-application‑assistant/04-job-evaluation.md`. The scope includes:

- Corporate mission and values
- Recent news and press releases
- LinkedIn profiles of known interviewers
- Public information about team culture and tech stack

**Critical verification rule:** Every fact is **independently verified via WebFetch/WebSearch** before inclusion. This mirrors the safety guard used for cover‑letter generation and prevents hallucinated company details from contaminating the prep pack.

### Step 3: Synthesize the Stage‑Specific Prep Pack

At [lines 51‑80](https://github.com/MadsLorentzen/ai-job-search/blob/master/.claude/commands/interview.md#L51), the command assembles `interview_prep_<stage>.md` with six structured sections:

1. **Likely questions** — synthesized from:
   - Recorded feedback in [`outcome.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/outcome.md)
   - Fit‑evaluation gaps identified during application
   - Job posting requirements
   - The specified interview stage

2. **STAR answer mapping** — matches existing STAR examples from [`07-interview-prep.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/07-interview-prep.md) to predicted questions; drafts new STAR answers grounded in [`01-candidate-profile.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/01-candidate-profile.md) when gaps exist

3. **Consistency brief** — enumerates every claim from `cv_draft.tex` and `cover_letter.tex` that interviewers may probe, enforcing the **"no claim without source"** rule

4. **Tough questions (customised)** — pulls relevant entries from [`07-interview-prep.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/07-interview-prep.md) and injects verified company hooks from Step 2

5. **Questions to ask** — selects 4‑6 tailored queries appropriate to the stage (screen, technical, final)

6. **Logistics** — adds format‑specific tips, confirmed date, and interviewer names

The finished file is written to `documents/applications/<company>_<role>/interview_prep_<stage>.md` — a **git‑ignored, personal folder** — and simultaneously displayed in chat.

### Step 4: Offer Optional Mock Interview

At [lines 83‑86](https://github.com/MadsLorentzen/ai-job-search/blob/master/.claude/commands/interview.md#L83), the user is prompted for a role‑play session. If accepted, the system executes a live mock interview following the **Roleplay Guidelines** in [`07-interview-prep.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/07-interview-prep.md), using the freshly built prep pack as script source material.

### Step 5: Close the Feedback Loop

At [lines 91‑96](https://github.com/MadsLorentzen/ai-job-search/blob/master/.claude/commands/interview.md#L91), the command reminds the user to run `/outcome <company>` after the real interview. This ensures interview feedback flows back into:

- The candidate profile ([`01-candidate-profile.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/01-candidate-profile.md))
- Future prep packs for other applications

## Architectural Design Principles

The `/interview` command embodies four core design patterns from the ai‑job‑search source code:

| Principle | Implementation |
|-----------|----------------|
| **Single Source of Truth** | All factual content derives from the application archive and [`01-candidate-profile.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/01-candidate-profile.md); no synthetic claims |
| **Verification Layer** | WebFetch/WebSearch validates every external fact before inclusion |
| **Stage‑Specific Logic** | Content sections adapt to interview stage (phone vs. technical vs. final) and prior feedback |
| **Framework Extensibility** | Reusable files ([`07-interview-prep.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/07-interview-prep.md), `04-job‑evaluation.md`) allow global updates without command changes |

## Example Invocation and Output

```bash

# CLI invocation with company and role specified

$ ai-job-search /interview AcmeCorp SeniorDataEngineer

```

**Expected interaction:**

```markdown
**User:** /interview AcmeCorp SeniorDataEngineer
**Agent:** ✅ Matched AcmeCorp – Senior Data Engineer (status: interview).
**Agent:** Please tell me the interview stage, date, format, and interviewers.
**User:** Final round, 2026‑09‑15, video, interviewers: Jane Doe (Engineering Manager) & John Smith (CTO)
**Agent:** …[executing company research with WebFetch verification]…
**Agent:** Built `documents/applications/AcmeCorp_SeniorDataEngineer/interview_prep_final.md` containing:

1. Likely questions (12 items)
2. STAR mapping (8 matched, 4 drafted)
3. Consistency brief (6 claims flagged for review)
4. Tough questions with company hooks (5 items)
5. Questions to ask (6 tailored queries)
6. Logistics (video platform, time zones, backup plans)

Would you like a mock interview now? (yes/no)

```

## Core Source Files

| File Path | Function |
|-----------|----------|
| [`.claude/commands/interview.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/commands/interview.md) | Command definition and 6‑step pipeline orchestration |
| [`.claude/skills/job-application-assistant/07-interview-prep.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/07-interview-prep.md) | STAR examples, tough questions, role‑play guidelines |
| [`.claude/skills/job-application-assistant/04-job-evaluation.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/skills/job-application-assistant/04-job-evaluation.md) | Company Research Checklist and verification rules |
| `documents/applications/<company>_<role>/` | Application archive with job posting, CV, cover letter, outcomes |
| `documents/applications/<company>_<role>/interview_prep_<stage>.md` | Generated stage‑specific preparation pack |
| `job_search_tracker.csv` | Application registry for lookup by company/role |
| [`01-candidate-profile.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/01-candidate-profile.md) | Canonical candidate facts for STAR drafting |

## Summary

- The `/interview` command implements a **deterministic 6‑step pipeline** for stage‑specific interview preparation
- All content derives from **verified application archives** and the **candidate profile** — no ungrounded claims
- **WebFetch verification** protects against hallucinated company or interviewer data
- The output is a **structured markdown pack** with six sections tailored to the interview stage
- **Mock interview integration** and **outcome tracking** create a closed feedback loop for continuous improvement

## Frequently Asked Questions

### What happens if I run `/interview` without specifying a company?

The command queries `job_search_tracker.csv` for all applications with status `interview`, `offer`, or recently `applied`, then presents a list for you to select the target application. This prevents accidental preparation for the wrong role.

### How does the system ensure my prep pack matches the actual CV I submitted?

The command loads `cv_draft.tex` and `cover_letter.tex` directly from the application archive created by `/outcome`. These are the **exact files** submitted to the employer — not regenerated or templated versions — ensuring perfect consistency between your prep narrative and your official application.

### Can I use `/interview` for an application I haven't tracked yet?

No. The command requires a pre‑existing archive folder with [`job_posting.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/job_posting.md). Attempting to run `/interview` on an untracked application triggers a prompt to run `/outcome` first to initialize the application record and archive structure.

### What distinguishes a "final" prep pack from a "phone screen" prep pack?

The **likely questions** section weights differently: phone screens emphasize role fit and salary expectations, technical rounds focus on system design and coding depth, and final rounds stress leadership principles and cross‑functional collaboration. The **questions to ask** section also scales from 4 general queries (phone) to 6 strategic ones (final) aligned with stakeholder seniority.