# 📄 Resumate - Because Your Resume Deserves Better Than MS Word
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[]()
> *"I spent 25 years mastering technology, then realized my resume still looked like it was made in 1995. So I fixed that."* - Chris, probably
## 🚀 What The Hell Is This?
Resumate is a Python-powered resume generator that treats your career like the engineering project it deserves to be. No more fighting with Word margins at 2 AM. No more "why did my bullet points just explode?" Just clean YAML in, gorgeous PDF out.
Built by someone who:
- ✅ Automated 20,000+ VMs
- ✅ Managed enterprise infrastructure
- ✅ **Physically mails resumes to executives** (yes, in 2025)
- ❌ Refused to manually format another resume ever again
## ✨ Features That Actually Matter
- **YAML-Powered**: Your resume data in clean, version-controllable YAML
- **Template Engine**: Multiple templates from classic to "wow, how'd you do that?"
- **Skill Ratings**: Visual skill bars because lists are boring
- **Icon Support**: 2000+ tech icons built-in, plus use ANY custom SVG
- **QR Codes**: For when you want to be *that* person (in a good way)
- **Two-Page Support**: Different layouts for page 1 and continuation pages
- **CI/CD Ready**: Generate resumes in your pipeline because why not?
## 🎯 Who Is This For?
- Engineers who version control everything (including their breakfast)
- People who think "just update your LinkedIn" is not a real answer
- Anyone who's ever lost formatting after saving a Word doc as PDF
- Folks who believe their resume should be as well-engineered as their code
## 🛠️ Installation
```bash
# From PyPI
pip install resumate
# From source (for the brave)
git clone https://github.com/chris17453/resumate.git
cd resumate
pip install -e .
```
## 🏃 Quick Start
```bash
# List available templates
resumate list_templates
# Generate your first resume
resumate generate_pdf my_resume.yaml --template Classic
# Or go wild with a custom template
resumate generate_pdf my_resume.yaml --template ./templates/cyberpunk-2077.yaml
```
## 📝 Resume YAML Structure
```yaml
header:
name: Your Name
position: Senior Code Wizard | Dragon Slayer | Coffee Drinker
email: you@example.com
phone: 555-0100
location: The Cloud ☁️
summary:
text: |
I solve problems. Sometimes with code, sometimes with duct tape.
Results may vary. No refunds.
experiences:
- role: Principal Chaos Engineer
company: StartupThatWillTotallyMakeIt Inc.
start: '2020-01-01'
end: '2025-12-31'
achievements:
- Turned "it works on my machine" into "it works on every machine"
- Reduced coffee consumption by 5% while increasing code output by 200%
skills:
- category: Languages I Speak
skills:
- name: Python
svg: python # Just use the name - we'll find the icon
rating: 5
- name: JavaScript
svg: javascript # 2000+ icons built-in
rating: 4
- name: Internal Tool
svg: ./icons/internal.svg # Or use your own SVG!
rating: 3
```
## 🎨 Icons - Built-in and Bring Your Own
### 2000+ Icons Included (Under 60MB!)
We bundle **Font Awesome** and **Simple Icons** so you get instant access to virtually every tech logo and icon you need. Just use the name:
```yaml
skills:
- name: Docker
svg: docker # Finds Docker logo automatically
- name: Kubernetes
svg: kubernetes # Finds K8s logo
- name: Team Lead
svg: users # Font Awesome icons work too
```
### Custom Icons? Just Drop The Path!
Got a special icon? Company logo? That perfect SVG you found? **Just use the file path**:
```yaml
- name: Secret Project
svg: ./my-icons/classified.svg # Relative path
- name: Corporate Tool
svg: /home/user/company/tool-icon.svg # Absolute path
- name: FluentUI Icon
svg: /opt/fluentui/assets/Trophy/SVG/ic_fluent_trophy_32_filled.svg
```
### Why Not FluentUI By Default?
We love FluentUI's colorful icons, but they're **several hundred MB**. We chose Font Awesome + Simple Icons to keep the package lean. But if you want those pretty FluentUI icons, just clone them and reference the paths!
### How Icon Resolution Works
When you write `svg: something`, Resumate searches in order:
1. **File exists?** → Uses it
4. **In Font Awesome?** → Uses it
3. **In Simple Icons?** → Uses it
5. **Can't find it?** → Logs warning, continues
## 🎨 Templates
### Built-in Templates
- **Classic**: Professional two-column with header image
- **Minimal**: For when less is more
- **Tech**: Icon-heavy for the tech crowd
- **Executive**: When you need to look expensive
### Custom Templates
Templates are just YAML files. Make your own! Add comic sans if you dare! We won't judge (much).
## 🔥 Advanced Features
### Skill Ratings with Icons
```yaml
skills:
- category: Cloud Juggling
skills:
- name: AWS
svg: amazonwebservices # or just 'aws'
rating: 5 # I dream in CloudFormation
- name: Azure
svg: azure
rating: 3 # When the client insists
- name: Our Platform
svg: ./company/platform-logo.svg # Custom icon
rating: 5
```
### Dynamic QR Codes
```yaml
# Embed your LinkedIn, GitHub, or Rick Astley
qr_codes:
linkedin: https://linkedin.com/in/yourprofile
github: https://github.com/yourusername
secret: https://www.youtube.com/watch?v=dQw4w9WgXcQ
```
## 🤝 Contributing
Found a bug? Want to add a feature? Think the README needs more emojis?
1. Fork it
2. Branch it (`git checkout -b feature/more-cowbell`)
3. Commit it (`git commit -am 'Add more cowbell'`)
4. Push it (`git push origin feature/more-cowbell`)
5. PR it
## 🐛 Known Issues
- Doesn't fix your actual job search
- May cause excessive confidence in interviews
- Side effects include wanting to automate everything
- Not responsible for recruiters who can't handle the awesomeness
## 📖 Documentation
Full docs at [coming soon] - currently just this README and good vibes.
## 🙏 Credits
Built with:
- ReportLab - The PDF wizardry
- PyYAML - Because JSON is for machines
- SVGLib - Making icons work since forever
- Coffee - The real MVP
Icons from:
- Font Awesome - Everything else (2000+ icons)
- Simple Icons - The ones DevIcons missed
- Your imagination - Custom SVGs welcome!
## 📜 License
MIT - Use it, abuse it, just don't blame me when your resume is too good.
## 🚨 Disclaimer
This tool will not:
- Get you a job (that's on you)
- Fix your typos (use spell check)
- Make you taller (sorry)
This tool will:
- Make your resume look professional AF
- Save you hours of formatting hell
- Give you something to talk about in interviews ("Oh this? I built a custom resume generation pipeline...")
---
<div align="center">
**Built with 🤬 and ☕ by Chris Watkins**
*Because sometimes you need to engineer the hell out of a simple problem*
[⭐ Star this repo](https://github.com/chris17453/resumate) | [🐛 Report Bug](https://github.com/chris17453/resumate/issues) | [🎉 Request Feature](https://github.com/chris17453/resumate/issues)
</div>
Raw data
{
"_id": null,
"home_page": "https://github.com/chris17453/resumate/",
"name": "resumate",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "resume cv pdf yaml generator template beautiful professional",
"author": "Charles Watkins",
"author_email": "chris@watkinslabs.com",
"download_url": "https://files.pythonhosted.org/packages/e8/a5/073ec0fe46f9e69ccd544b66f421602dd61cbaad8539dcf178c1380f5515/resumate-0.1.3.tar.gz",
"platform": null,
"description": "# \ud83d\udcc4 Resumate - Because Your Resume Deserves Better Than MS Word\n\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n[]()\n\n> *\"I spent 25 years mastering technology, then realized my resume still looked like it was made in 1995. So I fixed that.\"* - Chris, probably\n\n## \ud83d\ude80 What The Hell Is This?\n\nResumate is a Python-powered resume generator that treats your career like the engineering project it deserves to be. No more fighting with Word margins at 2 AM. No more \"why did my bullet points just explode?\" Just clean YAML in, gorgeous PDF out.\n\nBuilt by someone who:\n- \u2705 Automated 20,000+ VMs\n- \u2705 Managed enterprise infrastructure \n- \u2705 **Physically mails resumes to executives** (yes, in 2025)\n- \u274c Refused to manually format another resume ever again\n\n## \u2728 Features That Actually Matter\n\n- **YAML-Powered**: Your resume data in clean, version-controllable YAML\n- **Template Engine**: Multiple templates from classic to \"wow, how'd you do that?\"\n- **Skill Ratings**: Visual skill bars because lists are boring\n- **Icon Support**: 2000+ tech icons built-in, plus use ANY custom SVG\n- **QR Codes**: For when you want to be *that* person (in a good way)\n- **Two-Page Support**: Different layouts for page 1 and continuation pages\n- **CI/CD Ready**: Generate resumes in your pipeline because why not?\n\n## \ud83c\udfaf Who Is This For?\n\n- Engineers who version control everything (including their breakfast)\n- People who think \"just update your LinkedIn\" is not a real answer\n- Anyone who's ever lost formatting after saving a Word doc as PDF\n- Folks who believe their resume should be as well-engineered as their code\n\n## \ud83d\udee0\ufe0f Installation\n\n```bash\n# From PyPI\npip install resumate\n\n# From source (for the brave)\ngit clone https://github.com/chris17453/resumate.git\ncd resumate\npip install -e .\n```\n\n## \ud83c\udfc3 Quick Start\n\n```bash\n# List available templates\nresumate list_templates\n\n# Generate your first resume\nresumate generate_pdf my_resume.yaml --template Classic\n\n# Or go wild with a custom template\nresumate generate_pdf my_resume.yaml --template ./templates/cyberpunk-2077.yaml\n```\n\n## \ud83d\udcdd Resume YAML Structure\n\n```yaml\nheader:\n name: Your Name\n position: Senior Code Wizard | Dragon Slayer | Coffee Drinker\n email: you@example.com\n phone: 555-0100\n location: The Cloud \u2601\ufe0f\n\nsummary:\n text: |\n I solve problems. Sometimes with code, sometimes with duct tape.\n Results may vary. No refunds.\n\nexperiences:\n- role: Principal Chaos Engineer\n company: StartupThatWillTotallyMakeIt Inc.\n start: '2020-01-01'\n end: '2025-12-31'\n achievements:\n - Turned \"it works on my machine\" into \"it works on every machine\"\n - Reduced coffee consumption by 5% while increasing code output by 200%\n\nskills:\n- category: Languages I Speak\n skills:\n - name: Python\n svg: python # Just use the name - we'll find the icon\n rating: 5\n - name: JavaScript\n svg: javascript # 2000+ icons built-in\n rating: 4\n - name: Internal Tool\n svg: ./icons/internal.svg # Or use your own SVG!\n rating: 3\n```\n\n## \ud83c\udfa8 Icons - Built-in and Bring Your Own\n\n### 2000+ Icons Included (Under 60MB!)\n\nWe bundle **Font Awesome** and **Simple Icons** so you get instant access to virtually every tech logo and icon you need. Just use the name:\n\n```yaml\nskills:\n- name: Docker\n svg: docker # Finds Docker logo automatically\n- name: Kubernetes\n svg: kubernetes # Finds K8s logo\n- name: Team Lead\n svg: users # Font Awesome icons work too\n```\n\n### Custom Icons? Just Drop The Path!\n\nGot a special icon? Company logo? That perfect SVG you found? **Just use the file path**:\n\n```yaml\n- name: Secret Project\n svg: ./my-icons/classified.svg # Relative path\n- name: Corporate Tool\n svg: /home/user/company/tool-icon.svg # Absolute path\n- name: FluentUI Icon\n svg: /opt/fluentui/assets/Trophy/SVG/ic_fluent_trophy_32_filled.svg\n```\n\n### Why Not FluentUI By Default?\n\nWe love FluentUI's colorful icons, but they're **several hundred MB**. We chose Font Awesome + Simple Icons to keep the package lean. But if you want those pretty FluentUI icons, just clone them and reference the paths!\n\n### How Icon Resolution Works\n\nWhen you write `svg: something`, Resumate searches in order:\n1. **File exists?** \u2192 Uses it\n4. **In Font Awesome?** \u2192 Uses it\n3. **In Simple Icons?** \u2192 Uses it \n5. **Can't find it?** \u2192 Logs warning, continues\n\n## \ud83c\udfa8 Templates\n\n### Built-in Templates\n\n- **Classic**: Professional two-column with header image\n- **Minimal**: For when less is more\n- **Tech**: Icon-heavy for the tech crowd\n- **Executive**: When you need to look expensive\n\n### Custom Templates\n\nTemplates are just YAML files. Make your own! Add comic sans if you dare! We won't judge (much).\n\n## \ud83d\udd25 Advanced Features\n\n### Skill Ratings with Icons\n\n```yaml\nskills:\n- category: Cloud Juggling\n skills:\n - name: AWS\n svg: amazonwebservices # or just 'aws'\n rating: 5 # I dream in CloudFormation\n - name: Azure\n svg: azure \n rating: 3 # When the client insists\n - name: Our Platform\n svg: ./company/platform-logo.svg # Custom icon\n rating: 5\n```\n\n### Dynamic QR Codes\n\n```yaml\n# Embed your LinkedIn, GitHub, or Rick Astley\nqr_codes:\n linkedin: https://linkedin.com/in/yourprofile\n github: https://github.com/yourusername\n secret: https://www.youtube.com/watch?v=dQw4w9WgXcQ\n```\n\n## \ud83e\udd1d Contributing\n\nFound a bug? Want to add a feature? Think the README needs more emojis? \n\n1. Fork it\n2. Branch it (`git checkout -b feature/more-cowbell`)\n3. Commit it (`git commit -am 'Add more cowbell'`)\n4. Push it (`git push origin feature/more-cowbell`)\n5. PR it\n\n## \ud83d\udc1b Known Issues\n\n- Doesn't fix your actual job search\n- May cause excessive confidence in interviews\n- Side effects include wanting to automate everything\n- Not responsible for recruiters who can't handle the awesomeness\n\n## \ud83d\udcd6 Documentation\n\nFull docs at [coming soon] - currently just this README and good vibes.\n\n## \ud83d\ude4f Credits\n\nBuilt with:\n- ReportLab - The PDF wizardry\n- PyYAML - Because JSON is for machines\n- SVGLib - Making icons work since forever\n- Coffee - The real MVP\n\nIcons from:\n- Font Awesome - Everything else (2000+ icons)\n- Simple Icons - The ones DevIcons missed\n- Your imagination - Custom SVGs welcome!\n\n## \ud83d\udcdc License\n\nMIT - Use it, abuse it, just don't blame me when your resume is too good.\n\n## \ud83d\udea8 Disclaimer\n\nThis tool will not:\n- Get you a job (that's on you)\n- Fix your typos (use spell check)\n- Make you taller (sorry)\n\nThis tool will:\n- Make your resume look professional AF\n- Save you hours of formatting hell\n- Give you something to talk about in interviews (\"Oh this? I built a custom resume generation pipeline...\")\n\n---\n\n<div align=\"center\">\n \n**Built with \ud83e\udd2c and \u2615 by Chris Watkins**\n\n*Because sometimes you need to engineer the hell out of a simple problem*\n\n[\u2b50 Star this repo](https://github.com/chris17453/resumate) | [\ud83d\udc1b Report Bug](https://github.com/chris17453/resumate/issues) | [\ud83c\udf89 Request Feature](https://github.com/chris17453/resumate/issues)\n\n</div>\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Beautiful PDF resumes from YAML - for humans, not ATS",
"version": "0.1.3",
"project_urls": {
"Bug Tracker": "https://github.com/chris17453/resumate/issues",
"Documentation": "https://github.com/chris17453/resumate",
"Homepage": "https://github.com/chris17453/resumate/",
"Source Code": "https://github.com/chris17453/resumate"
},
"split_keywords": [
"resume",
"cv",
"pdf",
"yaml",
"generator",
"template",
"beautiful",
"professional"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "dc74a39cf33d02492c85d5f2adf26074adb2e786b6a3b849047a90a6cd9610ef",
"md5": "36f46a587f0ebbde6b084c0b9a5039e1",
"sha256": "86cfc5127d8e68cf9127a0ce6b3dd0e3bcb124db80e946896dc4f8f0ee6c3793"
},
"downloads": -1,
"filename": "resumate-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "36f46a587f0ebbde6b084c0b9a5039e1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 5020874,
"upload_time": "2025-08-20T12:24:02",
"upload_time_iso_8601": "2025-08-20T12:24:02.508739Z",
"url": "https://files.pythonhosted.org/packages/dc/74/a39cf33d02492c85d5f2adf26074adb2e786b6a3b849047a90a6cd9610ef/resumate-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e8a5073ec0fe46f9e69ccd544b66f421602dd61cbaad8539dcf178c1380f5515",
"md5": "bbe2425d4adaa843f65532a4fcd731b8",
"sha256": "7e0e96d347c841a8560a1eeea5ec03238bd6d0916c827032eb76ae562410a266"
},
"downloads": -1,
"filename": "resumate-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "bbe2425d4adaa843f65532a4fcd731b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 2922148,
"upload_time": "2025-08-20T12:24:04",
"upload_time_iso_8601": "2025-08-20T12:24:04.458272Z",
"url": "https://files.pythonhosted.org/packages/e8/a5/073ec0fe46f9e69ccd544b66f421602dd61cbaad8539dcf178c1380f5515/resumate-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-20 12:24:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "chris17453",
"github_project": "resumate",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "resumate"
}