AI Job Search Page Length Requirements: Strict 2‑Page CV and 1‑Page Cover Letter Limits

AI Job Search enforces exactly 2 pages for CVs and exactly 1 page for cover letters, validating every PDF at runtime using automated verification tools.

The AI Job Search framework generates LaTeX documents with hardcoded page length constraints designed to ensure ATS‑friendly submissions. These limits are baked into the compilation workflow and validated programmatically, preventing users from submitting over‑long application materials.

CV Page Limit: Exactly 2 Pages

Every Curriculum Vitae generated by the framework must compile to exactly 2 pages when processed with lualatex. This requirement is hardcoded in the template specification at /.claude/skills/job-application-assistant/05-cv-templates.md, specifically in the "Page Budget – Hard 2‑Page Limit" section (lines 107‑113) and the "Expected output" comment (lines 23‑24).

The template allocates specific line budgets to each CV section to maintain this constraint. If the initial content exceeds the limit, the framework invokes a relevance‑weighted cutting algorithm that trims low‑relevance lines until the document fits the required 2‑page format.

Cover Letter Page Limit: Exactly 1 Page

Cover letters must fit on exactly 1 page with the signature visible. The /apply command description in README.md explicitly states this one‑page requirement, while the cover_letters/cover.cls LaTeX class enforces it through minimal page margins and typography settings optimized for single‑page layouts.

Unlike the CV, the cover letter workflow does not implement automatic content cutting. If the compiled PDF exceeds one page, the system prompts the user to manually reduce content before proceeding.

Where Page Limits Are Defined in the Source

The constraints are distributed across four key files in the MadsLorentzen/ai‑job‑search repository:

  • /.claude/skills/job-application-assistant/05-cv-templates.md – Defines the CV’s 2‑page budget table and hard limit specifications.
  • cover_letters/cover.cls – A minimal article class that constrains layout parameters to single‑page outputs.
  • README.md – Documents the /apply workflow and the explicit "exactly 1 page with signature visible" requirement for cover letters.
  • tools/verify_pdf.py – Implements the runtime enforcement logic that validates actual page counts against these requirements.

Automated Validation During Compilation

During the "compile‑and‑inspect loop" triggered by the /apply command, the framework executes a strict validation pipeline:

  1. LaTeX Compilation – Executes lualatex -interaction=nonstopmode for CVs and xelatex for cover letters:
lualatex -interaction=nonstopmode cv.tex
xelatex -interaction=nonstopmode cover_letter.tex
  1. Page Count Verification – Calls tools/verify_pdf.py, which parses the PDF metadata to extract the total page count. The script fails the build if the CV does not contain exactly 2 pages or the cover letter does not contain exactly 1 page.

  2. Error Handling – When verify_pdf.py detects a page count mismatch, the workflow aborts and initiates the appropriate correction step: automated relevance‑weighted cutting for CVs, or a user prompt for manual content reduction for cover letters.

Summary

  • CVs must be exactly 2 pages, enforced by templates in 05-cv-templates.md and validated by tools/verify_pdf.py.
  • Cover letters must be exactly 1 page, configured in cover.cls and verified during the /apply workflow.
  • The verify_pdf.py script uses PDF parsing to extract page counts and hard‑fails builds that violate limits.
  • CVs use automated relevance‑weighted cutting to enforce limits; cover letters require manual editing if over‑full.
  • These constraints ensure every generated application document is visually consistent and recruiter‑friendly.

Frequently Asked Questions

What happens if my CV compiles to more than 2 pages?

The tools/verify_pdf.py verification script detects the excess pages and aborts the workflow. The framework then automatically triggers a relevance‑weighted cutting algorithm that removes low‑priority content from the CV until the PDF contains exactly 2 pages.

No. The limits are hardcoded into the verification logic within tools/verify_pdf.py and the template specifications in 05-cv-templates.md. The CI/runtime checks are intentionally strict to maintain consistent, professional output standards across all generated applications.

Why does the cover letter use xelatex while the CV uses lualatex?

The cover letter compilation specifically uses xelatex (whereas the CV uses lualatex) due to font handling requirements in the cover.cls class. Both engines produce PDFs that must satisfy the single‑page constraint enforced by the same verify_pdf.py checker.

How does the framework check page counts programmatically?

The tools/verify_pdf.py script extracts the PDF page count using a PDF parser such as pdftotext and compares it against the required constants: 2 for CVs and 1 for cover letters. If the extracted count does not match the expected value, the script returns a non‑zero exit code that halts the workflow.

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 →