A multi-agent AI system that maintains a living professional history and generates context-aware CVs on demand.
Not a web app. Not a SaaS. It's a Git repo + Claude Code + specialized subagents + knowledge base that you use conversationally from your terminal.
Every time you need a CV:
- You open whatever Word/PDF you last updated
- You try to remember what you've done since then
- You copy-paste, reformat, and forget things
- The result isn't optimized for the role you're targeting
- Your LinkedIn says one thing, your CV says another, and your memory says a third
CV Vivo breaks this cycle by maintaining a single source of truth in markdown — fed conversationally, queried on demand, and always ready to generate a tailored CV.
You talk to Claude Code naturally. The orchestrator routes your request to the right specialist agent:
"I want to add my experience at Acme from 2018 to 2021"
→ interviewer activates, asks follow-up questions, creates a structured milestone
"Process this PDF with my old CV"
→ explorer extracts candidate milestones, you confirm one by one
"Generate a CV for a Tech Lead role in fintech"
→ cv-builder reads your milestones, selects the relevant ones, applies best practices
"Convert my CV to PDF"
→ pdf-renderer produces LaTeX output ready for compilation or Overleaf
"Review my LinkedIn and suggest improvements"
→ linkedin-editor snapshots your profile, generates a prioritized improvement report
"How's my profile?"
→ cataloger calculates a multidimensional health score (0-100)
"Research Tech Lead roles in European fintech"
→ researcher analyzes the job market, compares requirements, salary trends
First session? The system detects an empty profile and launches a guided onboarding flow (~5 minutes) to capture your basic info and first milestones.
ORCHESTRATOR (Claude Code + CLAUDE.md)
|
|-- interviewer Extracts milestones via conversation [sonnet]
|-- explorer Processes PDFs, LinkedIn exports [sonnet]
|-- cv-builder Generates context-aware CVs [sonnet]
|-- pdf-renderer Converts to LaTeX/PDF [sonnet]
|-- cataloger Validates, indexes, scores profile [haiku, auto]
|-- linkedin-editor Manages LinkedIn profile [sonnet + Playwright]
|-- researcher Job market research & analysis [sonnet]
data/hitos/*.md <-- Source of truth (one file per milestone)
data/index.md <-- Auto-generated index
data/health.json <-- Profile health score (auto-generated)
output/ <-- Generated CVs (.md + .tex)
Each subagent runs in its own isolated context window. Skills (knowledge base documents) are preloaded into the relevant agent at startup. The Cataloger runs automatically after every ingestion via SubagentStop hooks.
The orchestrator enforces a Consensus Protocol: explicit user confirmation before any action with persistent effects (CV generation, PDF export, LinkedIn edits, bulk changes).
- Conversational milestone capture — the interviewer extracts structured data from natural conversation, using journalistic techniques to surface achievements you'd forget
- PDF & LinkedIn import — drop a PDF or LinkedIn export and the explorer parses it into candidate milestones for your review
- Context-aware CV generation — the cv-builder selects, orders, and frames your milestones based on the target role, market, and company type
- Professional PDF output — LaTeX templates (technical, executive, base) with ATS-friendly formatting, ready for Overleaf or local compilation
- LinkedIn management — snapshot current state, propose improvements, apply changes with explicit approval (ASIS -> TO-BE -> EDIT flow)
- Profile health scoring — multidimensional audit covering completeness, recency, variety, quality, and market alignment
- Job market research — analyze job descriptions, compare offers, understand salary trends and positioning
- Reflection sessions — periodic "catch up" conversations to keep your milestones current
- Guided onboarding — automatic first-time setup that detects an empty profile and walks you through initial configuration
- Zero data loss — milestones are never deleted, only marked as obsolete
- Claude Code with an active subscription
bash+pdftotext(poppler) for PDF extractionpdflatex(TeX Live / MacTeX / MiKTeX) for local PDF compilation — or use Overleaf (seedocs/overleaf-setup.md)- MCP Playwright (optional, only for LinkedIn editing flows)
# 1. Clone the repo
git clone https://github.com/pablotoledo/cv-vivo.git
cd cv-vivo
# 2. Configure your profile
cp config/profile.yaml.template config/profile.yaml
nano config/profile.yaml # <-- fill in your details
# 3. Launch Claude Code
claude .
Claude Code automatically loads the subagents from .claude/agents/. On your first session, it will detect the empty profile and start the onboarding flow.
Tip: Check the sample milestones in
data/hitos/to see the expected format before adding your own.
.claude/
agents/ # Subagent definitions (Claude Code native format)
interviewer.md # Conversational milestone extraction
explorer.md # PDF/export processing
cv-builder.md # Context-aware CV generation
pdf-renderer.md # LaTeX/PDF conversion
cataloger.md # Index maintenance & health scoring
linkedin-editor.md # LinkedIn profile management
researcher.md # Job market research
settings.json # Skills registry + automatic hooks
skills/ # Knowledge base (preloaded into subagents)
cv-best-practices.md # ATS rules, CAR formula, 20 Golden Rules
cv-taxonomy.md # Milestone taxonomy, metadata, skill decay
cv-generation.md # PDF generation pipeline, typography
linkedin-profile.md # LinkedIn optimization best practices
market-adaptation.md # Geo/sector/company-type adaptation
overleaf-latex.md # LaTeX generation, Overleaf integration
interviewing-techniques.md
profile-schema.md
health-score.md
onboarding.md
reflection-session.md
career-narrative.md
confidentiality.md
orchestrator-protocols.md
data/
hitos/ # One .md per professional milestone (source of truth)
raw/ # Original source files (PDFs, exports)
index.md # Auto-generated index (do not edit manually)
health.json # Profile health score (auto-generated)
linkedin/ # Profile snapshots, proposals, changelog
templates/ # CV templates (markdown + LaTeX)
tools/ # Bash automation scripts
config/ # User profile & LinkedIn config
output/ # Generated CVs (.md + .tex)
docs/ # Guides and documentation
Each file in data/hitos/ follows this structure:
---
id: "2023-01_senior-engineer-acme"
tipo: professional # professional | academic | training | project | ...
subtipo: employment # employment | degree | certification | ...
fecha_inicio: 2023-01
fecha_fin: "present"
titulo: "Senior Platform Engineer"
organizacion: "Acme Corp"
organizacion_tipo: enterprise
organizacion_tamanio: 1000+
ubicacion: "Berlin, Germany"
sector: saas
tags: [platform-engineering, cloud-native]
tecnologias: [Kubernetes, Terraform, Go]
metodologias: [SRE, GitOps, CI/CD]
relevancia: alta # alta | media | baja
obsoleto: false
linkedin_sync: true
---
Led the platform team (6 engineers) building infrastructure for 40+ product teams.
## Key Achievements
- Designed self-service Kubernetes platform reducing onboarding from 2 weeks to 4 hours
- Migrated 120+ microservices to EKS with zero downtime, cutting costs by 35%
| Principle | What it means |
|---|---|
| No heavy frameworks | No LangChain, no CrewAI. Markdown + bash + Claude Code |
| Claude Code is the runtime | The LLM orchestrates; subagents are the workers |
| Skills as knowledge base | .md documents with best practices that agents consult |
| Everything in Git | Milestones in .md, generated CVs in output/, full version control |
| Conversation as interface | You talk; the system asks, validates, and structures |
| Never lose data | Milestones are never deleted — marked obsoleto: true |
| Separate data from presentation | Milestones = pure data; templates + skills = presentation |
- Native Claude Code subagents with isolated contexts
- Knowledge base with 14 specialized skills
- Automatic hooks (Cataloger after Interviewer/Explorer)
- Multiple CV templates (technical, executive, base) in Markdown + LaTeX
- PDF generation pipeline with Overleaf integration
- LinkedIn management (ASIS/TO-BE/EDIT flows via Playwright)
- Profile health scoring (multidimensional, 0-100)
- Job market research agent
- Guided onboarding + session initialization protocol
- Consensus protocol (explicit confirmation before persistent actions)
- Automatic relevance scoring by context
- Skill decay tracking
- Complementary cover letters
SETUP.md— Installation, reset, sharing, dependenciesCLAUDE.md— System instructions for Claude Codedocs/test-e2e.md— End-to-end test scenariosdocs/overleaf-setup.md— Overleaf integration guide
