This is the repository hosting my CV code. It uses LaTeX and a GitHub Action to compile it. It is created from GiantMolecularCloud Template
The dependencies on this repository are automatically handled by Renovate.
This repository now includes an AI agent that adapts your CV to match specific job descriptions! The agent uses Google's Gemini API to intelligently reformulate and highlight relevant skills while staying grounded on your actual experience.
- ✅ Smart adaptation: Analyzes job descriptions and adapts your CV accordingly
- ✅ Truth-grounded: Never invents skills or experiences
- ✅ Intelligent reformulation: Reorganizes and highlights relevant content
- ✅ LaTeX preservation: Maintains perfect formatting
- ✅ Automated workflow: Runs in GitHub Actions and produces PDF artifacts
- ✅ Modular architecture: Clean, maintainable code split into logical modules
- ✅ Modern tooling: Uses
uvfor blazing-fast dependency management
See agent/README.md for detailed documentation.
- Go to
Actions - Choose
LaTeXworfklow on the left menu - Clic on
Run workflowand choosemainbranch, then confirm with the greenRun workflowbutton - Clic on the new running
LaTeXworkflow (you may have to refresh your browser) - Once it is done you can download the artifact
- Go to
Actions - Choose
CV Job Matcherworkflow on the left menu - Click on
Run workflow - Paste the job description in the text field (or specify a path to a file in the repository)
- Confirm with the green
Run workflowbutton - Wait for the workflow to complete
- Download the adapted CV PDF from the artifacts
Note: The first time you run this, you'll need to add your Gemini API key as a repository secret named GEMINI_API_KEY. Get your API key at Google AI Studio.
You can test the agent locally before running it in GitHub Actions:
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Set your Gemini API key
export GEMINI_API_KEY='your-api-key-here'
# Run the test script
./test_agent_local.shThis will adapt your CV using the example job description in examples/job_description_sre.txt.
Or run the agent directly:
cd agent
uv sync # Install dependencies
uv run cv-matcher --job-description ../examples/job_description_sre.txtIn order to be able to merge a Pull Request on this repository, the PR has to:
- pass LaTeX Super Linter
- get my approval
JDResume/
├── LaTeX/ # LaTeX CV source files
│ ├── resume.tex # Main CV file
│ ├── my-resume.cls # Custom LaTeX class
│ └── photo.jpg # Profile photo
├── agent/ # AI CV Matcher Agent
│ ├── pyproject.toml # uv configuration & dependencies
│ ├── cv_matcher/ # Main package
│ │ ├── __init__.py
│ │ ├── config.py # Configuration & prompts
│ │ ├── latex_parser.py # LaTeX extraction
│ │ ├── gemini_adapter.py # Gemini API integration
│ │ ├── latex_writer.py # LaTeX writing
│ │ └── cli.py # Command-line interface
│ └── README.md # Agent documentation
├── examples/ # Example job descriptions
│ ├── job_description_sre.txt
│ └── job_description_devops.txt
├── .github/workflows/ # GitHub Actions workflows
│ ├── latex.yaml # Standard CV compilation
│ ├── cv-matcher.yaml # AI CV adaptation workflow (uses uv)
│ └── super-linter.yaml # Code linting
└── test_agent_local.sh # Local testing script