Your first PDF in five steps.

This walkthrough takes you from a fresh machine to a compiled CV and a tailored branch — no AI account required. Follow it in order; each step builds on the previous one.

Tested on: Windows 11 with VITA CV 2.0.2. macOS and Linux setup instructions are supplied but have not been executed on those platforms; the CLI and LaTeX workflow are the same once prerequisites are on PATH. Preview the output PDF before you start.


Prerequisites

Install all three before continuing. Open a new terminal after each installer so PATH updates take effect.

If latexmk is not found after installing LaTeX

latexmk is a Perl script that drives the LaTeX compiler. It is not always installed automatically, even when LaTeX itself is present. On Windows, open MiKTeX Console → Packages and install latexmk; also install Strawberry Perl. On macOS, MacTeX includes it; if it is missing, install through TeX Live Utility. On Linux, sudo apt install latexmk adds it separately from the base TeX package. After installing, open a new terminal and run latexmk --version to confirm it resolves.

Install commands by platform

Windows (PowerShell)

winget install --id Git.Git -e --source winget
winget install --id astral-sh.uv -e
# Then install MiKTeX from https://miktex.org and Strawberry Perl from https://strawberryperl.com
# Open a new PowerShell window after installation, then verify:
Get-Command uv, git, latexmk, pdflatex, perl

macOS (Terminal)

# Install Git via Xcode Command Line Tools (prompts automatically on first use)
xcode-select --install
# Install uv
curl -Ls https://astral.sh/uv/install.sh | sh
# Install MacTeX from https://www.tug.org/mactex/ then verify:
command -v uv git latexmk pdflatex perl

Linux (Ubuntu / Debian)

sudo apt update
sudo apt install git texlive-latex-base latexmk perl
curl -Ls https://astral.sh/uv/install.sh | sh
# Open a new terminal, then verify:
command -v uv git latexmk pdflatex perl

Step 1 of 5

Install VITA and open the starter

Install the CLI from the public package index:

uv tool install vita-cv

If vita is not found afterwards, run uv tool update-shell and reopen your terminal. Use uv tool list to confirm the installed version. For exact version reproduction use uv tool install vita-cv==2.0.2.

Download starter.zip

Extract the archive into a new directory. The ZIP contains a single vita-cv-starter/ folder with four files: main.tex, job.md, README.md, and a hidden .gitignore.

Why doesn't vita init create main.tex?

vita init creates local configuration in .vita/ and initializes Git — it does not create a CV document. That is expected behavior. The starter ZIP provides a working main.tex, job.md, and .gitignore so you have something to build immediately. Download it, extract it into your project folder, and then run vita init.

Extract and enter the project directory:

Expand-Archive -LiteralPath .\starter.zip -DestinationPath .\my-cv
Set-Location .\my-cv\vita-cv-starter
unzip starter.zip -d my-cv
cd my-cv/vita-cv-starter

Then, inside the extracted folder, verify your prerequisites and initialize the project:

git --version
latexmk --version
vita init

Stop and fix a missing tool before continuing.


Step 2 of 5

Configure and commit the base

Open .vita/config.json in your editor. Find the author field and set it to alex-morgan. This value controls the output filename; it does not change the name inside main.tex.

"author": "alex-morgan"

Leave the other generated fields unchanged. Save valid JSON.

Check that .gitignore exists and excludes .vita/ and out/:

git status --short
git check-ignore .vita/config.json .vita/.env out/check.pdf

Status should list only .gitignore, README.md, job.md, and main.tex as untracked. The ignore check should print all three paths. Never stage .vita/, credentials, or generated PDFs.

First commit on this machine? Set your Git identity.

Git records a name and email address with every commit. If you have not set these on this machine, the first git commit will fail with an error asking you to configure them. Run these two commands in your project folder first — use your own name and email:

git config user.name "Your Name"
git config user.email "you@example.com"

These values are recorded in commit metadata inside this repository. They are not sent anywhere by VITA.

Commit the base CV, build the PDF, and create an application branch:

git add .gitignore main.tex job.md README.md
git commit -m "Create base CV"
git branch -M master
vita build
vita new etp acme "software engineer"

After vita build, check that out/cv-alex-morgan.pdf exists and opens correctly — some VITA 2.0.2 failure paths return without a nonzero exit code, so inspect the file directly.

At the vita new prompt: press Enter at Base branch? [gen-swe]:. VITA creates the missing gen-swe base from master, then creates and checks out etp-acme-swe. The command is interactive — it does not change the CV content on its own.


Step 3 of 5

Tailor the CV manually

Read job.md — it describes a fictional backend Python engineering role at Acme. In main.tex, find the two profile sentences and replace them:

Software engineer building small web applications with Python and SQL.
Enjoys turning user feedback into clear interfaces and maintainable services.
Software engineer building Python HTTP APIs backed by SQL data.
Focuses on input validation, automated tests, and clear setup documentation.

Save the file, inspect the diff, rebuild, and commit:

git diff
vita build

Open out/cv-alex-morgan.pdf. Confirm the revised profile is present, the document is readable, and it fits on one page. The output filename is reused on each branch — save a separate copy if you need to keep both PDFs. Git tracks the source, not the ignored PDF.

git add main.tex
git commit -m "Tailor CV for Acme software engineer"
vita diff acme
vita status
git status --short

vita diff acme compares the committed LaTeX branch with its base. The final Git status should be clean. Nothing in this walkthrough uploads the CV or submits an application.


Step 4 of 5 — optional

Generate AI prompts (no account needed)

The PDF above needs no AI account. If you want suggestions, VITA can generate a prompt file you then give to any assistant yourself:

vita analyze
vita adapt

Each command writes .vita/current_prompt.md; the next command replaces that file. Read the analysis prompt before generating the adaptation prompt if you want both. Prompt-only mode does not call any AI service or edit your CV — it just produces the file. Sharing that file with an assistant sends its contents to that service.

Automatic AI: what you need to configure first

The --auto flag sends your CV content and job description to an external AI provider. Before using it, you need: a supported provider entry in .vita/extensions.json, a credential set via VITA's key commands or in .vita/.env, and a model name that is currently available to your account — do not assume default model names remain available. Consult the package documentation on PyPI for configuration keys and supported providers in version 2.0.2. Provider costs and usage limits are separate from VITA itself.

Automatic adaptation can overwrite main.tex. Always commit a clean baseline first, then review git diff, rebuild, and inspect the PDF before committing or sharing the output.


Step 5 of 5

Replace fictional data with your own

The starter uses Alex Morgan and Acme as placeholders. Before using this for a real application:


Troubleshooting


Where to go next

You built the PDF. Now make it yours.

Replace the fictional data with your own, create a branch for a real application, and keep every version in Git.

Get started