resume-builder

majiayu000's avatarfrom majiayu000

Generate professional PDF resumes from structured data or JSON. Multiple templates, ATS-friendly output, and customizable sections.

5stars🔀1forks📁View on GitHub🕐Updated Jan 11, 2026

When & Why to Use This Skill

The Resume Builder skill is a professional-grade tool designed to generate ATS-friendly PDF resumes from structured JSON data or Python objects. It features multiple customizable templates—including Modern, Classic, Minimal, and Executive styles—ensuring high-quality typography and layout. This skill is optimized for both individual job seekers looking to automate their application process and developers seeking to integrate resume generation into larger HR or recruitment workflows.

Use Cases

  • Automated Career Management: Maintain a single 'source of truth' JSON file for your career history and programmatically generate updated resumes as you gain new skills or experience.
  • Tailored Job Applications: Quickly generate multiple versions of a resume by switching templates (e.g., using 'Modern' for tech startups and 'Classic' for corporate roles) to better fit specific company cultures.
  • Developer Tooling & Integration: Use the Python API or CLI to build custom resume-generation services or integrate PDF creation into job boards and recruitment platforms.
  • ATS Optimization: Ensure your resume passes through Applicant Tracking Systems (ATS) by utilizing the 'Minimal' template, which follows industry best practices for machine readability.
nameresume-builder
descriptionGenerate 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

from scripts.resume_builder import ResumeBuilder

# Build resume programmatically
resume = ResumeBuilder()
resume.set_contact("John Smith", "john@email.com", "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

resume = ResumeBuilder()
resume = ResumeBuilder(template="modern")
resume = ResumeBuilder.from_json("data.json")
resume = ResumeBuilder.from_dict(data)

Contact Information

# Basic contact
resume.set_contact(
    name="John Smith",
    email="john@email.com",
    phone="555-123-4567",
    location="San Francisco, CA"
)

# With links
resume.set_contact(
    name="John Smith",
    email="john@email.com",
    phone="555-123-4567",
    location="San Francisco, CA",
    linkedin="linkedin.com/in/johnsmith",
    github="github.com/johnsmith",
    website="johnsmith.dev"
)

Summary/Objective

# 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

# 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

# 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

# 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

# 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

resume.add_certification("AWS Solutions Architect", "Amazon", "2023")
resume.add_certification("Professional Scrum Master", "Scrum.org", "2022")

Additional Sections

# 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

# 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

# Generate and save
resume.generate().save("resume.pdf")

# Get PDF bytes
pdf_bytes = resume.to_bytes()

Data Formats

JSON Format

{
  "contact": {
    "name": "John Smith",
    "email": "john@email.com",
    "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

# 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)