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", "[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
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="[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
# 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": "[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
# 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
- Keep it concise: 1 page for <10 years experience, 2 pages max
- Use action verbs: "Led", "Developed", "Improved", "Achieved"
- Quantify achievements: "Increased sales by 25%", "Managed team of 8"
- Tailor to job: Customize skills and summary for each application
- 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)