# CV and Cover Letter Submission-Ready Checklist: 6 Verification Groups from ai-job-search

> Master CV and cover letter submission. Use the ai-job-search checklist's 6 verification groups for factual accuracy, targeting, ATS compatibility, and more. Get your application ready.

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

---

**The ai-job-search repository defines six mandatory verification groups—factual accuracy, targeting, consistency, quality, compiled PDF verification, and ATS compatibility—that must be passed before any CV or cover letter is considered ready for submission.**

The MadsLorentzen/ai-job-search repository provides a structured LaTeX workflow for generating job application documents. Central to this framework is a comprehensive **CV and cover letter submission-ready checklist** documented in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) that segments quality assurance into six distinct dimensions. These criteria ensure every document meets both human recruiter standards and Applicant-Tracking System (ATS) parsing requirements.

## The Six Verification Groups for Submission-Ready Documents

The repository splits the verification process into six logical groups, each covering a distinct quality dimension.

### 1. Factual Accuracy

All personal data, job titles, dates, and company names must be correct and independently verifiable. The checklist explicitly prohibits fabricated claims and requires contact details to be present and accurate. Any company-specific statements must be verified against independent sources. According to [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) lines 97-101, recruiters and automated parsers immediately reject applications containing inaccurate or unverifiable information.

### 2. Targeting

Every document must demonstrate explicit alignment with the specific role. The opening paragraph, skill bullets, and experience entries should be tailored to address required and nice-to-have job requirements. Where gaps exist, they must be acknowledged rather than concealed. As documented in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) lines 103-107, this targeting proves the candidate has analyzed the posting and mapped their profile to the employer’s needs.

### 3. Consistency

The CV must follow the 2-page `modern-cv` or banking layout, while the cover letter must use the `cover.cls` template. Tone and factual content must remain coherent across both documents to prevent contradictory signals. The guidelines in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) lines 109-113 emphasize that layout consistency prevents credibility issues during review.

### 4. Quality

LaTeX syntax must be sound with error-free spelling and grammar. Any AI-tool references must explicitly mention **Claude Code**. The cover letter must fit roughly one page and be addressed to the correct recipient. These requirements in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) lines 115-120 ensure the presentation passes both human review and automated screening.

### 5. Compiled PDF Verification (Mandatory)

This group requires visual inspection of the final PDFs built with specific engines: **`lualatex`** for the CV and **`xelatex`** for the cover letter. The CV must be exactly 2 pages and the cover letter exactly 1 page. Inspectors must verify no orphaned `\cventry` titles exist, bullet fonts match the body font, and page-break handling using `\needspace` or `\enlargethispage` is correctly applied. As stated in [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) lines 122-129, LaTeX rendering shifts can alter layout unexpectedly, making visual verification critical.

### 6. ATS and Keyword Verification (CV)

The PDF’s hidden text layer must extract cleanly without `cid:*` glyphs or replacement characters. Email addresses and phone numbers must appear as literal text rather than images, and the reading order must match the visual order. Required keywords must be present without keyword stuffing. According to [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) lines 130-135, malformed PDFs or missing keywords cause automatic rejection by ATS parsers.

## LaTeX Implementation Examples

The following snippets from the repository demonstrate how to satisfy critical checklist items in practice.

### Prevent Orphaned Section Titles

To satisfy the "no orphaned `\cventry` titles" requirement in `cv/main_example.tex`, use the `\needspace` command before entry declarations:

```latex
\needspace{5\baselineskip} % Forces page break if insufficient space remains
\cventry{2020--2022}{Senior Engineer}{Acme Corp}{Copenhagen}{}
  {%
    \begin{itemize}
      \item Designed a micro-service architecture ...
    \end{itemize}
  }

```

The `\needspace{5\baselineskip}` directive ensures the `\cventry` title remains with its content, directly implementing the PDF verification requirements.

### Consistent Bullet Fonts in Cover Letters

In `cover_letters/cover_example.tex`, wrap bullet environments with font specification blocks to match body text:

```latex
\lettercontent{
  I am excited to apply for the Data Scientist role at XYZ.
}
% Switch to Raleway for the bullet list
{\raggedright\fontspec[Path=OpenFonts/fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont
\begin{itemize}
  \item Built a recommendation engine that increased CTR by 12%
  \item Led a cross-functional team of 5 data engineers
\end{itemize}
\par}

```

This font wrapper guarantees bullet text matches the body font, satisfying the consistency verification group.

### ATS-Friendly Contact Details

Ensure ATS parsers can extract contact information by using literal text fields in `cv/main_example.tex`:

```latex
\email{john.doe@example.com}
\mobile{+45 1234 5678}

```

Both commands emit literal text into the PDF’s hidden layer, ensuring email and phone numbers parse correctly during automated screening.

## Build Process and Verification Workflow

The repository implements a four-step workflow to execute the checklist:

1. **Generate LaTeX source** – Create `cv/main_<company>.tex` and `cover_letters/cover_<company>_<role>.tex` using the templates.
2. **Build PDFs** – Compile CVs with `lualatex` and cover letters with `xelatex` (utilizing `cover.cls`).
3. **Execute checklist** – Tick off each verification group after visual PDF inspection and `pdftotext` sanity checks.
4. **Iterate** – Failed items trigger LaTeX tweaks (such as adding `\needspace` adjustments) followed by rebuilds until all boxes are checked.

This systematic approach guarantees that every document meets the **CV and cover letter submission-ready checklist** standards before reaching recruiters.

## Summary

- **Factual accuracy** requires verifiable dates, titles, and contact details with no fabricated claims.
- **Targeting** mandates tailoring content to specific job requirements or acknowledging gaps honestly.
- **Consistency** enforces 2-page CV layouts (`modern-cv`) and 1-page cover letters (`cover.cls`) with coherent tone.
- **Quality** demands error-free LaTeX, explicit Claude Code attribution, and correct recipient addressing.
- **PDF verification** requires `lualatex`/`xelatex` builds with exact page counts and no orphaned `\cventry` titles.
- **ATS verification** ensures clean text extraction, literal contact details, and proper keyword placement without stuffing.

## Frequently Asked Questions

### How do I verify that my CV will pass ATS parsing?

Extract the text layer using `pdftotext` and inspect for `cid:*` glyphs or replacement characters. Verify that email addresses and phone numbers appear as literal text in the extraction. According to the repository's [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) (lines 130-135), any garbled text or image-based contact information will cause automatic rejection by applicant-tracking systems.

### Why must I use different LaTeX engines for the CV and cover letter?

The repository specifies **`lualatex`** for CV compilation and **`xelatex`** for cover letters to accommodate different font handling and layout requirements. The `cover.cls` template relies on specific XeLaTeX font features, while the CV template uses LuaLaTeX for better micro-typography. Using the correct engine prevents layout shifts that could violate the exact 2-page CV and 1-page cover letter requirements.

### What causes orphaned `\cventry` titles and how do I fix them?

Orphaned titles occur when a `\cventry` heading appears at the bottom of a page while its descriptive content flows to the next page. Insert `\needspace{5\baselineskip}` before the `\cventry` command (as shown in `cv/main_example.tex`) to force a page break if insufficient vertical space remains. This ensures the title and content remain together, satisfying the mandatory PDF verification checklist item.

### Is mentioning Claude Code actually required in the documents?

Yes, the **Quality** verification group explicitly requires that any AI-tool references mention **Claude Code**. This attribution appears in the [`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md) (lines 115-120) quality standards and ensures transparency regarding document generation assistance while maintaining professional integrity.