Agentic AI Systems · HR Tech & Recruitment

Resume & Cover Letter Tailor

A six-agent sequential pipeline that treats job applications as an intelligence problem — researching the company, dissecting the JD, rewriting the resume, writing the cover letter, and running a full QA review before delivering the output.

Architecture CrewAI · Sequential
Tech Stack
CrewAI Multi-Agent Gradio Hugging Face Spaces pdfplumber python-docx Python
Source Code View on GitHub

6

Specialized Agents

3

Deliverables Per Run

400

Word Cover Letter Max

The Problem

Tailoring a resume for every application is skilled, time-consuming work

A well-tailored job application requires several distinct skills: understanding what the company values, dissecting the job description for ATS keywords and must-have requirements, strategically reframing existing experience without fabricating, writing in active voice with strong action verbs, and producing a cover letter that adds narrative context the resume can't. Most candidates either skip this work entirely — submitting the same generic resume everywhere — or spend hours on each application with inconsistent results. Neither approach is competitive.

The Solution

Six specialized agents — each owning one stage of the application process

Resume & Cover Letter Tailor is a six-agent sequential CrewAI pipeline where each agent owns exactly one stage of the tailoring process. The Company Researcher profiles the target employer. The JD Analyst extracts must-haves, nice-to-haves, and ATS keywords in exact JD phrasing. The Resume Strategist performs gap analysis and produces an instructional brief — never rewriting a single bullet itself. The Resume Writer executes that strategy into a fully tailored, ATS-optimised resume. The Cover Letter Writer produces a personalised 4–6 paragraph letter matched to the company's culture tone. Finally, the QA Reviewer checks the full application package for cross-document consistency, factual alignment, ATS coverage, and formatting safety — and delivers a numbered issue list with verdict.

Key Outcome

From a single resume upload and job description paste, the pipeline delivers a tailored resume and a personalised cover letter as downloadable .docx files, plus a QA report rendered in-browser — without fabricating a single credential or inventing a single metric.

Technical Deep Dive

Architecture & Design

Pipeline Flow

Agent 1

Company Researcher

No prior context

Agent 2

JD Analyst

No prior context

Agent 3

Resume Strategist

Receives research_company analyse_jd

Agent 4

Resume Writer

Receives analyse_jd build_strategy

Agent 5

Cover Letter Writer

Receives research_company analyse_jd build_strategy write_resume

Agent 6

QA Reviewer

Receives research_company analyse_jd write_resume write_cover_letter

Agent 1

Company Researcher

Receives scraped and sanitised company page text via CompanyResearchTool. Produces a structured profile capturing mission and values, culture signals, technology stack, and tone cues — all used downstream to personalise both the resume framing and cover letter voice.

Agent 2

JD Analyst

Analyses the raw job description and returns a structured role profile. All output uses exact JD phrasing — paraphrasing would reduce ATS matching value. Extracts top 5 must-have technical skills, top 5 soft skills, up to 6 key responsibilities, ATS keywords, culture signals, and any red flags.

Agent 3

Resume Strategist

Uses ResumeParserTool to get a section-structured view of the candidate's resume, then performs gap analysis against the JD role profile. Produces a strategy brief — never rewriting bullets itself — instructing the writer exactly what to amplify, remove, reframe, and which ATS keywords to integrate.

Agent 4

Resume Writer

Executes the strategy brief into a fully rewritten resume in clean markdown. Enforces active voice, strong action verbs, and natural ATS keyword integration. Quantifies achievements where source data permits — never fabricates numbers. Outputs sections: Contact, Summary, Experience, Skills, Education.

Agent 5

Cover Letter Writer

Writes a personalised 3–4 paragraph cover letter under 400 words using all upstream context — role profile, strategy brief, completed resume, and company research. Tone is matched to culture signals from the JD analysis. The letter adds narrative the resume cannot; it does not summarise the resume.

Agent 6

QA Reviewer

Performs a structured quality review of the full application package. Checks cross-document consistency, factual alignment, tone coherence, ATS keyword coverage, formatting safety, and recruiter-visible red flags. Delivers a numbered issue list with location, problem, and suggested fix — plus an overall verdict: Ready to Submit, Minor Revisions Needed, or Major Revisions Needed.

Key Design Decisions

Strategy and writing are separated by design

The Resume Strategist never rewrites a single bullet — its role is diagnostic and instructional only. This division keeps the Resume Writer's output grounded in a coherent, deliberate strategy rather than ad hoc rewriting. The strategist tells the writer what to do; the writer executes it.

ATS keywords preserved in exact JD phrasing

The JD Analyst is explicitly instructed to extract keywords verbatim from the job description — not to paraphrase. Paraphrasing reduces ATS matching value because automated screening systems compare exact strings. The Resume Writer then integrates these terms naturally rather than keyword-stuffing.

Company URL scraping requires aggressive sanitisation

Raw scraped HTML injected into a CrewAI task description causes crashes due to template interpolation of curly braces in Jinja-style prompts. The scraper strips all script, style, noscript, and SVG tags via BeautifulSoup, extracts clean text from the main or article element (falling back to body), collapses consecutive newlines, and hard-truncates to 3,500 characters before passing content to the crew. Without this step, malformed or JavaScript-heavy company pages reliably break the pipeline.

DOCX parsing must traverse both paragraphs and tables

Most professionally designed resume templates use table-based layouts in DOCX. python-docx's paragraph traversal returns nothing for these files. The parser always traverses doc.tables as well — skipping this step is the most common cause of empty resume extraction and the single most impactful parsing lesson from building this system.

Tech Stack

Technology Purpose
CrewAI Multi-agent orchestration and YAML-driven agent configuration
GPT-4o-mini LLM backbone for all 6 agents — temperature fixed at 0.2
Gradio Web UI with file upload, streaming agent progress, and output tabs
Hugging Face Spaces Zero-config cloud deployment; also runs locally via uv
pdfplumber / pypdf PDF resume text extraction with fallback support
python-docx DOCX resume parsing and markdown-to-DOCX export
queue.Queue Bridges crew background thread and Gradio generator for streaming
Python Core language and pipeline orchestration

Results & Metrics

What the system delivers

6

Specialized Agents

Each owning one stage — from company research to QA review — with no delegation between agents

3

Deliverables Per Run

Tailored resume and cover letter downloadable as .docx files; QA report rendered as markdown in-browser

0

Fabricated Credentials

The pipeline reframes existing experience — it never invents metrics, skills, or roles not in the source resume

🎯

ATS-optimised output

Keywords are extracted in exact JD phrasing and integrated naturally into the resume — not keyword-stuffed. The QA Reviewer explicitly checks ATS keyword coverage as part of its structured review checklist.

📋

Structured QA with verdicts

The QA Reviewer checks 7 dimensions — cross-document consistency, factual alignment, tone coherence, ATS coverage, formatting safety, cover letter quality, and red flags — and delivers a numbered issue list with a final verdict of Ready to Submit, Minor Revisions Needed, or Major Revisions Needed.

Live streaming progress

A queue.Queue bridges the crew background thread and Gradio's generator — streaming each agent's output to the browser incrementally as it completes rather than waiting for the full pipeline to finish.

📄

PDF and DOCX input support

The parser handles both PDF and DOCX resume formats. DOCX parsing traverses both paragraphs and tables — critical for professionally designed resume templates that use table-based layouts and return nothing from paragraph traversal alone.

Agent Roster

Agent Responsibility
Company Researcher Produces structured company profile from scraped page text
JD Analyst Extracts must-haves, ATS keywords, and role profile in exact JD phrasing
Resume Strategist Gap analysis and instructional strategy brief — no rewriting
Resume Writer Fully rewritten ATS-optimised resume in markdown
Cover Letter Writer Personalised cover letter matched to company culture tone
QA Reviewer Full application package review with numbered issues and verdict