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.
- Git
For branching, committing, and inspecting changes. git-scm.com/downloads — Windows users: WinGet installs it in one command below.
- Python 3.10+ and uv
uv installs and manages the VITA CLI. Install uv — it can also install Python for you.
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.
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:
- Replace every fictional detail in
main.texwith your own accurate information. - Remove the fictional-example note at the top of the document.
- Create a new branch for your real target role using
vita new. - Review the output carefully before sending it anywhere.
Troubleshooting
-
vitais not found: runuv tool update-shell, reopen the terminal, and checkuv tool list. -
latexmkor Perl is not found: finish TeX and Perl installation, then open a new terminal so PATH updates. See the callout under Prerequisites above. - No PDF or a build error: read
out/main.logfor the LaTeX error, correct it, and rebuild. Check for a newly generated PDF directly — some 2.0.2 failure paths return without a nonzero exit code. - Changes appear in the wrong branch: run
git branch --show-currentbefore editing. Start from a clean committed base. - No differences in
vita diff: commit the intended changes first. Usegit diffto inspect unstaged edits. - Unexpected files in Git status: check that the extracted
hidden
.gitignoreis present. Never commit.vita/or API keys. - Still stuck? Open an issue on GitHub — include your platform, VITA version, and relevant log lines. Remove CV details, API keys, and other personal information before posting.