A powerful template engine for generating professional resumes and cover letters using LaTeX.
- Multiple Template Support: Choose from a variety of professionally designed templates
- JSON & YAML Support: Input data in either JSON or YAML format for flexibility
- Dynamic Content Generation: Automatically generate content based on user input
- LaTeX-based Templates: High-quality, customizable templates
- RESTful API: Easy integration with other applications
- Template Preview: Preview templates before generating the final document
- Cover Letter Support: Generate matching cover letters for your resume
- Customizable Sections: Add, remove, or modify sections as needed
- CLI Tool: Command-line interface for batch processing and automation
resume-agent-template-engine/
├── src/
│ └── resume_agent_template_engine/
│ ├── core/
│ │ ├── resume_template_editing.py
│ │ └── template_utils.py
│ ├── templates/
│ │ ├── resume/
│ │ │ └── [template_name]/
│ │ │ ├── template.tex
│ │ │ ├── helper.py
│ │ │ ├── preview.png
│ │ │ └── README.md
│ │ └── cover_letter/
│ │ └── [template_name]/
│ │ ├── template.tex
│ │ ├── helper.py
│ │ ├── preview.png
│ │ └── README.md
│ ├── api/
│ │ └── routes.py
│ ├── examples/
│ │ └── example_usage.py
│ └── app.py
├── tests/
├── docs/
├── .github/
│ └── workflows/
│ └── ci.yml
├── pyproject.toml
├── uv.lock
└── run.py
- Python 3.9+
- uv package manager
- LaTeX distribution (MiKTeX, TeX Live, or MacTeX)
-
Install uv (if not already installed):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Clone the repository:
git clone https://github.com/taleye-com/resume-agent-template-engine cd resume-agent-template-engine -
Run the development setup script:
chmod +x setup-dev.sh ./setup-dev.sh
This script will:
- Sync all dependencies with uv
- Set up pre-commit hooks
- Format the code
- Run tests to ensure everything works
-
Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh -
Clone the repository:
git clone https://github.com/taleye-com/resume-agent-template-engine cd resume-agent-template-engine -
Sync dependencies with uv:
uv sync
-
Install pre-commit hooks (for development):
uv run pre-commit install
-
Install LaTeX:
Launch the user-friendly web interface:
# Launch the UI
uv run python run.py --uiNavigate to http://localhost:8502 for an intuitive form-based interface to:
- Fill in your information using dynamic forms
- Input data in JSON or YAML format with syntax highlighting
- Select from available templates
- Generate and download professional PDFs
- Preview templates and understand data schemas
See UI_README.md for detailed UI documentation.
The CLI supports both JSON and YAML input formats:
# Generate sample data files
uv run python -m resume_agent_template_engine.cli sample resume data.json
uv run python -m resume_agent_template_engine.cli sample resume data.yaml
# Generate PDF from JSON
uv run python -m resume_agent_template_engine.cli generate resume classic data.json output.pdf
# Generate PDF from YAML
uv run python -m resume_agent_template_engine.cli generate resume classic data.yaml output.pdf
# List available templates
uv run python -m resume_agent_template_engine.cli list
# Get template information
uv run python -m resume_agent_template_engine.cli info resume classic-
Start the server:
uv run python run.py --api
-
Access the API:
- Resume generation (JSON):
http://localhost:8501/generate - Resume generation (YAML):
http://localhost:8501/generate-yaml - Cover letter generation:
http://localhost:8501/generate - Template preview:
http://localhost:8501/templates - Schema information:
http://localhost:8501/schema/{document_type}
- Resume generation (JSON):
-
Example API requests:
JSON Format:
curl -X POST http://localhost:8501/generate \ -H "Content-Type: application/json" \ -d '{ "document_type": "resume", "template": "classic", "data": { "personalInfo": { "name": "John Doe", "email": "[email protected]" }, "professionalSummary": "...", "education": [...], "experience": [...], "projects": [...], "articlesAndPublications": [...], "achievements": [...], "certifications": [...], "technologiesAndSkills": [...] } }'
YAML Format:
curl -X POST http://localhost:8501/generate-yaml \ -H "Content-Type: application/json" \ -d '{ "document_type": "resume", "template": "classic", "yaml_data": "personalInfo:\n name: John Doe\n email: [email protected]\nprofessionalSummary: ..." }'
Templates are organized in two main categories:
- Resume Templates: Located in
templates/resume/ - Cover Letter Templates: Located in
templates/cover_letter/
Each template directory contains:
template.tex: The main LaTeX template filehelper.py: Template-specific helper functionspreview.png: Template preview imageREADME.md: Template-specific documentation
The template engine accepts data in both JSON and YAML formats:
{
"personalInfo": {
"name": "John Doe",
"email": "[email protected]",
"phone": "+1 (555) 123-4567",
"location": "New York, NY",
"website": "https://johndoe.dev",
"linkedin": "https://linkedin.com/in/johndoe",
"website_display": "https://johndoe.dev",
"linkedin_display": "https://linkedin.com/in/johndoe"
},
"professionalSummary": "Experienced software engineer...",
"education": [
{
"degree": "Bachelor of Science in Computer Science",
"institution": "University of Technology",
"startDate": "2015-09",
"endDate": "2019-05"
}
],
"experience": [
{
"title": "Senior Software Engineer",
"company": "Tech Corp",
"startDate": "2020-01",
"endDate": "Present",
"achievements": [
"Reduced system latency by 40%",
"Led team of 5 engineers"
]
}
],
"projects": [
{
"name": "Cloud Platform",
"description": ["Scalable microservices platform"],
"tools": ["Python", "Docker", "Kubernetes"]
}
],
"articlesAndPublications": [
{
"title": "Microservices Best Practices",
"date": "2023-03"
}
],
"achievements": [
"AWS Certified Solutions Architect",
"Led migration to cloud-native architecture"
],
"certifications": [
"AWS Certified Solutions Architect - Professional (2023)"
],
"technologiesAndSkills": [
{
"category": "Programming Languages",
"skills": ["Python", "JavaScript", "TypeScript"]
}
]
}personalInfo:
name: John Doe
email: [email protected]
phone: "+1 (555) 123-4567"
location: New York, NY
website: https://johndoe.dev
linkedin: https://linkedin.com/in/johndoe
website_display: https://johndoe.dev
linkedin_display: https://linkedin.com/in/johndoe
professionalSummary: "Experienced software engineer..."
education:
- degree: Bachelor of Science in Computer Science
institution: University of Technology
startDate: "2015-09"
endDate: "2019-05"
experience:
- title: Senior Software Engineer
company: Tech Corp
startDate: "2020-01"
endDate: Present
achievements:
- Reduced system latency by 40%
- Led team of 5 engineers
projects:
- name: Cloud Platform
description:
- Scalable microservices platform
tools:
- Python
- Docker
- Kubernetes
articlesAndPublications:
- title: Microservices Best Practices
date: "2023-03"
achievements:
- AWS Certified Solutions Architect
- Led migration to cloud-native architecture
certifications:
- "AWS Certified Solutions Architect - Professional (2023)"
technologiesAndSkills:
- category: Programming Languages
skills:
- Python
- JavaScript
- TypeScriptThe project uses GitHub Actions for continuous integration and deployment. The workflow includes:
- Linting: Code formatting checks with Black and type checking with MyPy
- Testing: Comprehensive test suite with coverage reporting
- Code Coverage: Automated coverage reporting with Codecov
The project uses pre-commit hooks to ensure code quality:
# Install pre-commit hooks
pre-commit install
# Run hooks manually
pre-commit run --all-files# Run all tests with coverage
cd src
PYTHONPATH=$PYTHONPATH:$(pwd) pytest ../tests/ --cov=resume_agent_template_engine --cov-report=term
# Run specific test types
pytest ../tests/unit/ # Unit tests only
pytest ../tests/integration/ # Integration tests only
pytest ../tests/e2e/ # End-to-end tests only# Format code
black src/ tests/
# Check formatting without making changes
black --check src/ tests/The GitHub Actions workflow (/.github/workflows/ci.yml) runs:
- Lint Job: Code formatting and type checking
- Test Job: Comprehensive test suite with coverage reporting
If the CI is failing:
- Code Formatting Issues: Run
black src/ tests/locally and commit the changes - Test Failures: Run tests locally to identify and fix issues
- Codecov Rate Limiting: This is temporary and doesn't affect the build status
To contribute, please follow the guidelines in CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details.