CV agent: from manual to production

−94%processing time
€0.30per CV generated
134automated tests
75person-days/year saved

01 · SITUATION

The context 

Adapting a consultant CV to a tender represented 30 to 45 minutes of manual work, repeated dozens of times per year, with heterogeneous output depending on who handled it. The real risk: losing a tender not on competence, but on how the dossier was presented.

02 · METHOD

4-step pipeline 

Local document extraction

Raw data extraction from PDFs (pdfplumber). Local processing. No data leaves the infrastructure before validation.

AI constrained by strict schema

14 Pydantic fields, temperature 0. Two passes: extraction of the union of CV versions, then alignment with the tender specifications. [[To complete]] markers for gaps, [[To arbitrate]] for conflicts.

Deterministic decoupled rendering

PPTX generation in native python-pptx. Total AI/rendering decoupling = zero truncation, zero dependency on a third-party rendering service.

Mandatory human validation

The agent does not replace the consultant: it produces a structured, documented first draft. The final decision remains human.

ARCHITECTURE DIAGRAM (PIPELINE)

Consultant CV(s) (PDF)1 to N versions, 2-5 pages eachTender (PDF)Specifications / RFP, 5-30 pagesgolden-source-template.pptxFirm formatting standard01pdf_parser.pyRaw text extraction (pdfplumber)02prompt.pyLLM context assembly (anti-hallucination, Action-Proof-Impact)03claude_client.pyJSON generation via API (Claude Sonnet 4.5, temperature 0)04schema.pyStrict validation (Pydantic, 14 fields)05pptx_renderer.pyDeterministic rendering (python-pptx, auto-fit, no-overlap)06correspondances.pyCorrespondence table (sections A·B·C·D)Reads thegolden-source-template.pptxcv-final.pptxCV tailored to the tenderresultat.jsonStructured data (14 fields)correspondances.mdTraceability of choices

Orchestration pipeline.py · Entry points cli.py / server.py (CLI + FastAPI) · Local sandbox: no data leaves the infrastructure before validation.

USER JOURNEY (FROM FILE DROP TO FINAL CV)

File dropThe consultant drops CVs+ tenderRead & parseCVs + RFP → raw textLLM generationClaude (strict rules,~25 s)Pydantic validation14-field schema (< 100ms)Compliant JSONReady for PPTX renderingT0+2 s+27 s+27 s~30 s

LLM cost dominates total time (about 80% of the duration).

03 · RESULTS

In production 

30-45 min → 2 min processing time (−94%)
~€0.30 per CV generated
134 automated tests passing
75 person-days/year saved at firm scale
4 phases delivered in production (including an assumed technical pivot: n8n → Python, Carbone.io → native python-pptx)

Next case

AI governance at large-group scale

A document process to automate?

Let's book 30 minutes.

CV agent: from manual to production — Diane Maurin