home / skills / dkyazzentwatwa / chatgpt-skills / resume-builder
This skill generates ATS-friendly professional PDFs from structured data with multiple templates and customizable sections.
npx playbooks add skill dkyazzentwatwa/chatgpt-skills --skill resume-builderReview the files below or copy the command above to add this skill to your agents.
---
name: resume-builder
description: Generate professional PDF resumes from structured data or JSON. Multiple templates, ATS-friendly output, and customizable sections.
---
# Resume Builder
Create professional PDF resumes from structured data with multiple template styles. Supports JSON input, customizable sections, and ATS-friendly formatting.
## Quick Start
```python
from scripts.resume_builder import ResumeBuilder
# Build resume programmatically
resume = ResumeBuilder()
resume.set_contact("John Smith", "[email protected]", "555-123-4567", "San Francisco, CA")
resume.set_summary("Experienced software engineer with 5+ years...")
resume.add_experience("Software Engineer", "Tech Corp", "2020-Present", [
"Led development of microservices architecture",
"Improved system performance by 40%"
])
resume.add_education("B.S. Computer Science", "State University", "2019")
resume.add_skills(["Python", "JavaScript", "AWS", "Docker"])
resume.generate().save("resume.pdf")
# From JSON
resume = ResumeBuilder.from_json("resume_data.json")
resume.generate().save("resume.pdf")
```
## Features
- **Multiple Templates**: Modern, classic, minimal, executive styles
- **ATS-Friendly**: Clean formatting that passes applicant tracking systems
- **Customizable Sections**: Experience, education, skills, projects, certifications
- **Flexible Input**: Python API or JSON data
- **Professional Output**: Clean PDF with proper typography
- **Links**: Clickable URLs for portfolio, LinkedIn, GitHub
## API Reference
### Initialization
```python
resume = ResumeBuilder()
resume = ResumeBuilder(template="modern")
resume = ResumeBuilder.from_json("data.json")
resume = ResumeBuilder.from_dict(data)
```
### Contact Information
```python
# Basic contact
resume.set_contact(
name="John Smith",
email="[email protected]",
phone="555-123-4567",
location="San Francisco, CA"
)
# With links
resume.set_contact(
name="John Smith",
email="[email protected]",
phone="555-123-4567",
location="San Francisco, CA",
linkedin="linkedin.com/in/johnsmith",
github="github.com/johnsmith",
website="johnsmith.dev"
)
```
### Summary/Objective
```python
# Professional summary
resume.set_summary(
"Experienced software engineer with 5+ years building scalable "
"web applications. Passionate about clean code and mentoring."
)
# Or objective statement
resume.set_objective(
"Seeking a senior engineering role where I can leverage my "
"expertise in distributed systems and cloud architecture."
)
```
### Work Experience
```python
# Add experience entry
resume.add_experience(
title="Senior Software Engineer",
company="Tech Corporation",
dates="Jan 2020 - Present",
bullets=[
"Led team of 5 engineers in developing microservices architecture",
"Reduced API response time by 60% through optimization",
"Implemented CI/CD pipeline reducing deployment time by 80%"
],
location="San Francisco, CA" # Optional
)
# Multiple entries
resume.add_experience("Software Engineer", "Startup Inc", "2018-2020", [
"Built real-time notification system serving 1M+ users",
"Developed RESTful APIs using Python and FastAPI"
])
```
### Education
```python
# Add education
resume.add_education(
degree="Bachelor of Science in Computer Science",
school="State University",
year="2018",
gpa="3.8", # Optional
honors="Magna Cum Laude" # Optional
)
# With coursework
resume.add_education(
degree="M.S. Data Science",
school="Tech University",
year="2020",
coursework=["Machine Learning", "Statistical Analysis", "Big Data"]
)
```
### Skills
```python
# Simple skills list
resume.add_skills(["Python", "JavaScript", "React", "AWS", "Docker"])
# Categorized skills
resume.add_skills({
"Languages": ["Python", "JavaScript", "Go", "SQL"],
"Frameworks": ["React", "Django", "FastAPI"],
"Tools": ["Docker", "Kubernetes", "AWS", "Git"]
})
```
### Projects
```python
# Add project
resume.add_project(
name="Open Source Library",
description="Data validation library with 1000+ GitHub stars",
technologies=["Python", "PyPI"],
url="github.com/user/project" # Optional
)
```
### Certifications
```python
resume.add_certification("AWS Solutions Architect", "Amazon", "2023")
resume.add_certification("Professional Scrum Master", "Scrum.org", "2022")
```
### Additional Sections
```python
# Languages
resume.add_languages(["English (Native)", "Spanish (Fluent)", "French (Basic)"])
# Volunteer experience
resume.add_volunteer(
role="Tech Mentor",
organization="Code for Good",
dates="2021 - Present",
description="Mentor underrepresented students in programming"
)
# Publications
resume.add_publication(
title="Scaling Microservices",
venue="Tech Blog",
year="2023",
url="blog.com/article"
)
# Custom section
resume.add_custom_section("Awards", [
"Employee of the Year 2022",
"Hackathon Winner - Best Innovation"
])
```
### Templates and Styling
```python
# Set template
resume.set_template("modern") # Clean, contemporary
resume.set_template("classic") # Traditional, formal
resume.set_template("minimal") # Simple, ATS-optimized
resume.set_template("executive") # Premium, senior roles
# Custom colors
resume.set_colors(
primary="#2563eb", # Headers
text="#333333" # Body text
)
# Margins
resume.set_margins(top=0.5, bottom=0.5, left=0.6, right=0.6)
```
### Generation
```python
# Generate and save
resume.generate().save("resume.pdf")
# Get PDF bytes
pdf_bytes = resume.to_bytes()
```
## Data Formats
### JSON Format
```json
{
"contact": {
"name": "John Smith",
"email": "[email protected]",
"phone": "555-123-4567",
"location": "San Francisco, CA",
"linkedin": "linkedin.com/in/johnsmith",
"github": "github.com/johnsmith"
},
"summary": "Experienced software engineer...",
"experience": [
{
"title": "Senior Software Engineer",
"company": "Tech Corp",
"dates": "2020 - Present",
"location": "San Francisco, CA",
"bullets": [
"Led development of microservices",
"Improved performance by 40%"
]
}
],
"education": [
{
"degree": "B.S. Computer Science",
"school": "State University",
"year": "2018",
"gpa": "3.8"
}
],
"skills": {
"Languages": ["Python", "JavaScript"],
"Frameworks": ["React", "Django"]
},
"projects": [
{
"name": "Open Source Tool",
"description": "Description here",
"technologies": ["Python"],
"url": "github.com/project"
}
],
"certifications": [
{
"name": "AWS Certified",
"issuer": "Amazon",
"year": "2023"
}
]
}
```
## CLI Usage
```bash
# From JSON file
python resume_builder.py --input resume.json --output resume.pdf
# With template
python resume_builder.py --input data.json --template modern --output resume.pdf
# Quick resume (interactive prompts)
python resume_builder.py --quick --output resume.pdf
```
### CLI Arguments
| Argument | Description | Default |
|----------|-------------|---------|
| `--input` | Input JSON file | Required |
| `--output` | Output PDF path | `resume.pdf` |
| `--template` | Template style | `modern` |
## Templates
### Modern
- Clean sans-serif typography
- Blue accent color
- Clear section headers
- Good for tech roles
### Classic
- Traditional serif fonts
- Black and gray colors
- Formal layout
- Good for traditional industries
### Minimal
- Maximum ATS compatibility
- Simple formatting
- No colors or graphics
- Best for online applications
### Executive
- Premium appearance
- Elegant typography
- Subtle accents
- Good for senior roles
## Best Practices
1. **Keep it concise**: 1 page for <10 years experience, 2 pages max
2. **Use action verbs**: "Led", "Developed", "Improved", "Achieved"
3. **Quantify achievements**: "Increased sales by 25%", "Managed team of 8"
4. **Tailor to job**: Customize skills and summary for each application
5. **ATS-friendly**: Use standard section headers, avoid tables/graphics
## Dependencies
```
reportlab>=4.0.0
Pillow>=10.0.0
```
## Limitations
- PDF output only
- English language optimized
- Maximum 2 pages
- No photo support (ATS best practice)
This skill generates professional, ATS-friendly PDF resumes from structured data or JSON. It offers multiple templates, customizable sections, and clickable links for portfolio and social profiles. Outputs are polished PDFs ready for online applications or printing.
You provide structured input via the Python API, a dict, or a JSON file. The builder maps contact, summary, experience, education, skills, projects, and certifications into the chosen template. It renders typography and layout into a PDF using ReportLab and Pillow, producing bytes you can save or stream.
What input formats are supported?
JSON files, Python dicts, or the Python API methods are supported.
Are the resumes ATS-friendly?
Yes. Templates include a minimal ATS-optimized style and use standard headers and simple formatting.
Can I customize styling and colors?
Yes. You can choose templates, set primary and text colors, and adjust margins for layout needs.