A visual tool for managing and generating professional LaTeX CVs. No programming knowledge needed.
- Visual CV editing — Add, edit, reorder, and delete entries via a web interface
- Multiple configurations — Create tailored CVs for different positions
- Bilingual support — English and German CV generation
- AI/ATS-optimized PDFs — Generated CVs are machine-readable with proper metadata, selectable text, and clean structure
- AI-assisted tailoring — Generate prompts for AI to optimize your CV for specific positions
- Drag & drop — Reorder entries and sections with drag-and-drop
- Custom sections — Create your own sections with different types (entries, projects, publications, skills)
- Publication citation styles — Choose between APA, IEEE, Chicago, or MLA for publications
- Logo support — Upload company logos for project entries
- Profile photo — Upload and manage your CV photo
- PDF generation — One-click PDF output via pdflatex
- LaTeX source export — Download the
.texsource file for manual editing - Archive — Track all generated CVs with tags and notes
- Auto-update — Check for updates from your Git repository
- Cross-platform — Works on Windows, macOS, and Linux
- Node.js (v16 or newer) — Download
- LaTeX distribution:
- Linux only:
xdg-utils(for automatic browser opening)
- Double-click
Start CV Manager.bat- On first run, it installs dependencies automatically
- Your browser opens to
http://localhost:5173 - Start editing your CV
- Open Terminal and
cdto the CV Manager folder - Run the first-time setup (once):
chmod +x install.sh start-cv-manager.sh stop-cv-manager.sh ./install.sh
- Start CV Manager:
./start-cv-manager.sh
- Your browser opens to
http://localhost:5173
- Install prerequisites:
# Ubuntu / Debian sudo apt install nodejs npm texlive-full xdg-utils git # Fedora sudo dnf install nodejs npm texlive-scheme-full xdg-utils git # Arch Linux sudo pacman -S nodejs npm texlive-most xdg-utils git
- Open a terminal and
cdto the CV Manager folder - Run the first-time setup (once):
chmod +x install.sh start-cv-manager.sh stop-cv-manager.sh ./install.sh
- Start CV Manager:
./start-cv-manager.sh
- Your browser opens to
http://localhost:5173
# Install dependencies (first time only)
npm install
# Start the app
npm run devThen open http://localhost:5173 in your browser.
Double-click Start CV Manager (Silent).vbs to run without a visible terminal window.
- CV Entries tab — Manage your profile info and all CV entries (experience, education, skills, etc.)
- Configurations tab — Create named configurations that select which entries to include, with optional custom descriptions
- Archive tab — View history of all generated PDFs
- Fill in your Profile information (name, email, photo, etc.)
- Add your CV entries across sections (experience, education, projects, publications, skills, etc.)
- Create a Configuration for a target position
- In the config editor, select entries, reorder sections, and optionally customize descriptions
- Click Generate PDF to create your CV
In the configuration editor, click "✨ Tailor to Position" to:
- Paste a job description
- Get a generated prompt for any AI (ChatGPT, Copilot, etc.)
- Paste the AI's JSON response to automatically optimize your entry selection and descriptions
cv-manager-dist/
├── server/
│ ├── index.js # Express API server
│ ├── latex.js # LaTeX template generator
│ ├── data/ # Your data (profile, sections, configs, archive)
│ ├── assets/ # Photos and logos
│ └── output/ # Generated PDFs and .tex source files
├── src/ # React frontend
├── package.json
├── vite.config.js
├── Start CV Manager.bat # Windows launcher
├── start-cv-manager.sh # macOS/Linux launcher
├── install.sh # macOS/Linux first-time setup
└── INSTALL.bat # Windows first-time setup
All your data is stored as JSON files in server/data/:
profile.json— Your personal informationsections.json— All CV sections and entriesconfigs.json— Your CV configurationsarchive.json— History of generated PDFs
Generated files in server/output/:
.pdffiles — The generated CV PDFs.texfiles — LaTeX source for each PDF (download from Archive to edit manually)
Back up the server/data/ and server/assets/ folders to preserve your CV data.
Generated CVs are optimized for AI and ATS (Applicant Tracking System) parsing:
- PDF metadata — Author, title, subject, and keywords are embedded in the PDF properties
- Real selectable text — All content is actual text, not images
- Clean bookmarks — Section headings use
\texorpdfstringfor clean PDF bookmarks - Standard fonts — Helvetica/sans-serif for reliable OCR fallback
- Simple layout — Single-column tabular layout without multi-column tricks
- No hidden text — No invisible keyword stuffing or white-on-white text
- ActualText annotations — The
accsupppackage annotates symbols so parsers read real text
CV Manager automatically checks for updates on startup via the GitHub API — no .git directory required.
- The last known commit SHA is stored in
server/data/.update-state.json - When a new version is available, the "🔄 Update Available" button appears in the sidebar
- Click it to pull the latest changes (requires Git to be installed)
- If the directory is not yet a Git repository, it will be initialized automatically
- Your data in
server/data/,server/assets/, andserver/output/is backed up and restored during updates.
- Click the "⏻ Stop Server" button in the sidebar, or
- Close the terminal window, or
- Windows: Run
stop-cv-manager.ps1 - macOS / Linux: Run
./stop-cv-manager.sh
- PDF generation fails: Ensure your LaTeX distribution is installed and
pdflatexis in your PATH - Photos not showing: Place photo files in
server/assets/and use the Upload button - Port already in use: Kill existing Node processes or change the port in
server/index.js - macOS / Linux: "permission denied": Run
chmod +x start-cv-manager.sh stop-cv-manager.sh install.sh - Linux: browser doesn't open automatically: Install
xdg-utils(sudo apt install xdg-utils) - Linux: LaTeX packages missing: Use
texlive-fullinstead of minimal TeX Live installs for all required packages