Open source CV tooling for developers

One base CV. Infinite targeted variants. Zero duplicates.

Your job search shouldn't end in cv-final-final-v7.pdf. VITA keeps one LaTeX source in Git, makes a branch for each role, and helps you find what to change before you build the PDF.

uv tool install vita-cv==2.0.2

Docs target: 2.0.2  ·  View on PyPI (opens in new tab)

Free CLI. No VITA account required. Python, Git, and LaTeX tooling required; external AI may cost extra.

Built by Abdellah Hallou (opens in new tab). Open the working sample PDF (opens in new tab). See public download history (opens in new tab).


From the downloadable starter

The branch, the diff, the PDF.

The sample on the right was built from the downloadable fictional starter. Make a role branch, change the LaTeX, and inspect the PDF before sending it.

# After committing your base CV:
vita new etp company "software engineer"
# Accept gen-swe at the interactive base-branch prompt.
# Edit main.tex with your tailored content.
git diff
# Review the LaTeX changes before building.
vita build
# Opens out/cv-jordan-lee.pdf — inspect before submitting.
vita status
Preview of the sample CV showing a fictional candidate's experience
Sample CV — fictional data. Download PDF (opens in new tab) (~80 KB).
How it works

Six moves from base CV to a role-specific PDF.

One committed base CV, then a fresh path for each role. VITA can prepare AI prompts for the middle steps; you choose what to change and inspect the PDF before it leaves your machine.

  1. Branch for the role

    Start from one committed CV. Each application gets its own branch, and your base stays intact.

  2. Add the job description

    Keep the role’s requirements beside the CV, so every edit has a clear target.

  3. Spot the gaps

    Compare the posting with your experience. See what fits and what still needs evidence.

  4. Adapt what is true

    Bring the relevant work forward in your summary, skills, and experience. Keep the facts.

  5. Review every line

    Inspect the changes and catch invented claims before they make it into the final version.

  6. Build, then send

    Compile locally. Check the layout and dates, then send the PDF you actually reviewed.

The part a template can't do

Show the job. Find the gap. Rewrite with receipts.

A job description asks for Python HTTP APIs, SQL, validation, and tests. The fictional starter CV already shows that work in its experience section; the original summary barely mentions it. VITA's analyze and adapt prompts bring the evidence and the requirements together.

What the posting asks for

“Implementing Python HTTP APIs, writing SQL queries, adding automated tests.”

What the CV already proves

Python endpoints, SQL queries, validation checks, and tests are already in the experience bullets.

Deployment pipelines are only “nice to have” in this example. No evidence? Leave them out.

- Software engineer with experience in Python services, SQL data, automated tests, and developer documentation.
+ Software engineer building Python HTTP APIs with SQL, input validation, and automated tests.

This edit comes from the fictional starter walkthrough; it is an example of a truthful change, not a recorded model response. Without --auto, VITA writes prompts to .vita/current_prompt.md and does not edit the CV. With a configured provider, vita run --auto can run analyze → adapt → review and update main.tex. Commit first, then inspect the diff.

Your source

The CV is a project, not another upload.

Write your experience in main.tex, keep the job posting in job.md, and use Git for history. VITA builds the PDF on your machine. There is no VITA account between you and your files.

If you want to leave, you still have the LaTeX and the Git history. That's the point.

my-cv/ main.tex your CV source job.md the role you're applying for .vita/ local settings and prompts out/ the PDF you inspect
Per application

A job branch won't overwrite your base CV.

A company and role get their own branch. vita status shows what you've made; vita diff compares committed LaTeX changes with the base. VITA also warns if you've already made a variant for that company.

No guessing which PDF was for which job. The branch tells you.

Git branches master one base CV └─ gen-swe software engineering base └─ etp-company-swe one application branch
The AI toolkit

A job search needs more than one magic prompt.

The standard flow calls on job analysis, resume tailoring, ATS optimization, and review skills. The package also includes separate skills for interview preparation and salary negotiation. Use the prompts yourself, or configure a supported provider for automatic execution.

The skills guide suggestions. Your experience still has to be real.

Bundled skill files job-description-analyzer resume-tailor resume-ats-optimizer resume-reviewer interview-prep-generator salary-negotiation-prep
Where VITA fits

Already have a CV tool? Here's the difference.

A template solves layout. VITA handles the messy part after that: which version went to which role, what the posting actually asked for, and what changed before you sent it.

If you use...What it does wellWhat VITA adds or changes
A LaTeX template + ChatGPT Full control over the document and whatever prompts you write. VITA adds a branch and registry for each application, plus analyze → adapt → review prompts tied to the job.md beside your CV.
RenderCV (opens in new tab) Write structured YAML and render a polished PDF with Typst. VITA is for an existing LaTeX CV and a Git-first, company-by-company workflow with optional AI prompts.
Teal (opens in new tab) A browser resume builder with job tracking and matching tools. VITA keeps your CV project in local files and builds the PDF with your own LaTeX setup.
Overleaf (opens in new tab) Edit, compile, and collaborate on LaTeX documents online. VITA adds local role branches, an application registry, and job-specific AI steps around the LaTeX source.
Get started

Bring Git and LaTeX. Start with the sample.

You'll need these tools for a local PDF build. The fictional starter gives you something real to compile before you replace it with your own CV.

Downloads

Starter project

ZIP archive · ~9 KB. A LaTeX CV project using the included resume.cls layout, fictional data, a sample job description, and a .gitignore. Use it as your starting point before running vita init.

Sample CV PDF (opens in new tab)

PDF · ~80 KB · fictional data. A PDF compiled from the starter project so you can see the expected output before setting up LaTeX.

Follow the full quickstart →
FAQ

A few things worth knowing.

The questions I'd ask before trusting a new tool with my CV.

Why not just use ChatGPT?

You can. I wanted the bits around the prompt too: a branch for each application, the job description beside the CV, a repeatable analyze → adapt → review sequence, and a diff I can inspect before building. ChatGPT can help write a bullet; a chat response won't tell you which LaTeX commit you sent to a company.

Will the sample PDF work with ATS systems?

Yes. The downloadable sample CV uses a simple, single-column, text-based layout with conventional section headings. That's the safest, most tested layout for ATS compatibility

Can I keep the LaTeX CV I already use?

Yes. Point VITA at your LaTeX entry file; the default is main.tex. The automatic adaptation path reads and writes that file, so a template split across included files needs extra care. The manual prompt workflow lets you make the edits in whichever files your CV uses.

Does the AI rewrite my CV without asking?

No. Run vita analyze, vita adapt, or vita review without --auto and VITA only writes a local prompt file. You choose an assistant and apply edits yourself. If you opt into --auto with a configured provider, adaptation can update main.tex. Commit your base first and inspect git diff.

Where does my CV go when I use AI?

Local builds, Git commands, and prompt generation don't call a VITA server. If you run --auto, the configured AI provider receives relevant CV and job context. If you paste a prompt into another assistant or push your repo, you're sharing what you send there.

Do I need LaTeX before I can try it?

For a PDF build, yes: install LaTeX and latexmk. The starter ZIP gives you a working fictional CV, so you can get a build before replacing it with your own history.

What does it cost?

The VITA CLI is free and open source. You can branch, write prompts, and build locally without a VITA account. Automatic AI depends on the provider you configure; that provider may charge for use.

Got a job description open? Put it to work.

Download the fictional starter, build the sample PDF, then make your first role branch.

Build the sample CV