Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Documents
Resume Studio
Try itProfessional resume generator. Use when user needs to create, optimize, or customize resumes for job applications. Supports Word and PDF output, multiple sty...
What it does
Professional resume generator with ATS-friendly templates, multiple styles, and Word/PDF output.
The skill document
Resume Studio
Professional resume generator with ATS-friendly templates, multiple styles, and Word/PDF output.
Features
- 📋 Smart Generation: AI-powered content optimization
- 🎨 Multiple Styles: Classic, Modern, Creative, Minimal, Academic
- 📄 Word Output: Professional .docx format
- 👤 Photo Support: Optional photo area
- 🌐 Web Research: Query job market trends
- 📁 File Import: Import existing materials
- 🎯 ATS-Friendly: Passes Applicant Tracking Systems
- 🌍 Multi-Language: Chinese and English support
- 🖥️ Cross-Platform: Windows, macOS, Linux
Trigger Conditions
- "帮我写简历" / "Help me write a resume"
- "生成求职简历" / "Generate job resume"
- "优化我的简历" / "Optimize my resume"
- "resume-studio"
Resume Styles
Classic (经典)
- Traditional layout
- Professional fonts
- Suitable for: Finance, Law, Government
Modern (现代)
- Clean design
- Bold headers
- Suitable for: Tech, Marketing, Design
Creative (创意)
- Unique layout
- Color accents
- Suitable for: Design, Media, Art
Minimal (极简)
- Simple structure
- Focus on content
- Suitable for: Academic, Research
Information Collection
Agent collects:
1. Basic Info
- Name
- Phone
- Email
- Location
2. Education
- School
- Degree
- Major
- GPA (optional)
3. Experience
- Company
- Position
- Duration
- Responsibilities
4. Skills
- Technical skills
- Languages
- Certifications
5. Target Position
- Job title
- Industry
- Specific requirements
Python Code
from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from fpdf import FPDF
import os
class ResumeGenerator:
def __init__(self, style='modern'):
self.style = style
self.data = {}
def set_basic_info(self, name, phone, email, location=''):
self.data['name'] = name
self.data['phone'] = phone
self.data['email'] = email
self.data['location'] = location
def add_education(self, school, degree, major, year, gpa=None):
if 'education' not in self.data:
self.data['education'] = []
self.data['education'].append({
'school': school,
'degree': degree,
'major': major,
'year': year,
'gpa': gpa
})
def add_experience(self, company, position, duration, responsibilities):
if 'experience' not in self.data:
self.data['experience'] = []
self.data['experience'].append({
'company': company,
'position': position,
'duration': duration,
'responsibilities': responsibilities
})
def set_skills(self, technical=[], languages=[], certifications=[]):
self.data['skills'] = {
'technical': technical,
'languages': languages,
'certifications': certifications
}
def generate_docx(self, output_path):
doc = Document()
# Name
name_para = doc.add_paragraph()
name_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
name_run = name_para.add_run(self.data.get('name', 'Name'))
name_run.font.size = Pt(24)
name_run.bold = True
# Contact
contact = doc.add_paragraph()
contact.alignment = WD_ALIGN_PARAGRAPH.CENTER
contact_text = f"{self.data.get('phone', '')} | {self.data.get('email', '')}"
if self.data.get('location'):
contact_text += f" | {self.data['location']}"
contact.add_run(contact_text)
doc.add_paragraph()
# Education
doc.add_heading('Education', level=2)
for edu in self.data.get('education', []):
doc.add_paragraph(f"{edu['school']} - {edu['degree']} in {edu['major']} ({edu['year']})")
# Experience
doc.add_heading('Experience', level=2)
for exp in self.data.get('experience', []):
doc.add_heading(f"{exp['position']} at {exp['company']}", level=3)
doc.add_paragraph(f"Duration: {exp['duration']}")
for resp in exp['responsibilities']:
doc.add_paragraph(f"• {resp}")
# Skills
doc.add_heading('Skills', level=2)
skills = self.data.get('skills', {})
if skills.get('technical'):
doc.add_paragraph(f"Technical: {', '.join(skills['technical'])}")
if skills.get('languages'):
doc.add_paragraph(f"Languages: {', '.join(skills['languages'])}")
if skills.get('certifications'):
doc.add_paragraph(f"Certifications: {', '.join(skills['certifications'])}")
doc.save(output_path)
return output_path
def generate_pdf(self, output_path):
pdf = FPDF()
pdf.add_page()
# Name
pdf.set_font('Helvetica', 'B', 20)
pdf.cell(0, 15, self.data.get('name', 'Name'), new_x='LMARGIN', new_y='NEXT', align='C')
# Contact
pdf.set_font('Helvetica', '', 10)
contact = f"{self.data.get('phone', '')} | {self.data.get('email', '')}"
pdf.cell(0, 8, contact, new_x='LMARGIN', new_y='NEXT', align='C')
pdf.ln(10)
# Education
pdf.set_font('Helvetica', 'B', 14)
pdf.cell(0, 8, 'Education', new_x='LMARGIN', new_y='NEXT')
pdf.ln(3)
pdf.set_font('Helvetica', '', 11)
for edu in self.data.get('education', []):
pdf.cell(0, 6, f"{edu['school']} - {edu['degree']}", new_x='LMARGIN', new_y='NEXT')
pdf.ln(8)
# Experience
pdf.set_font('Helvetica', 'B', 14)
pdf.cell(0, 8, 'Experience', new_x='LMARGIN', new_y='NEXT')
pdf.ln(3)
pdf.set_font('Helvetica', '', 11)
for exp in self.data.get('experience', []):
pdf.set_font('Helvetica', 'B', 11)
pdf.cell(0, 6, f"{exp['position']} at {exp['company']}", new_x='LMARGIN', new_y='NEXT')
pdf.set_font('Helvetica', '', 10)
pdf.cell(0, 5, f"Duration: {exp['duration']}", new_x='LMARGIN', new_y='NEXT')
for resp in exp['responsibilities']:
pdf.cell(0, 5, f" • {resp}", new_x='LMARGIN', new_y='NEXT')
pdf.ln(5)
pdf.ln(8)
# Skills
pdf.set_font('Helvetica', 'B', 14)
pdf.cell(0, 8, 'Skills', new_x='LMARGIN', new_y='NEXT')
pdf.ln(3)
pdf.set_font('Helvetica', '', 11)
skills = self.data.get('skills', {})
if skills.get('technical'):
pdf.cell(0, 6, f"Technical: {', '.join(skills['technical'])}", new_x='LMARGIN', new_y='NEXT')
if skills.get('languages'):
pdf.cell(0, 6, f"Languages: {', '.join(skills['languages'])}", new_x='LMARGIN', new_y='NEXT')
pdf.output(output_path)
return output_path
# Example
resume = ResumeGenerator('modern')
resume.set_basic_info('John Doe', '13800138000', 'john@example.com', 'Beijing')
resume.add_education('Peking University', 'Bachelor', 'Computer Science', '2020-2024')
resume.add_experience('TechCorp', 'Software Engineer', '2024-present', [
'Developed AI features',
'Improved system performance by 50%'
])
resume.set_skills(['Python', 'AI', 'Cloud'], ['Chinese', 'English'], ['AWS Certified'])
resume.generate_docx('resume.docx')
resume.generate_pdf('resume.pdf')
Notes
- ATS-friendly formatting
- Professional typography
- Multi-language support
- Cross-platform compatible
Related skills
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Site audit, content writing, and competitor analysis for organic search rankings.
More from tobewin
Browse all skillsGenerate editable PowerPoint decks from a JSON description with 11 slide layouts and 5 color themes.
Translate Word, PDF, Excel, PowerPoint, HTML, Markdown, and TXT files into another language while preserving the original layout.
Professional Excel spreadsheet generator. Use when user needs to create data tables, reports, charts, financial models, or any structured data in Excel forma...
中国新闻资讯聚合工具。Use when user wants to get latest news from Chinese sources. Supports multiple news sites (Sina, Sohu, NetEase, Tencent) via browser automation an...
Data analysis tool for Excel, CSV, Word, PDF, TXT, Markdown files. Use when user needs to analyze, summarize, or compare data from multiple files. Supports f...
Marketing plan generator with web research and Word output. Use when user needs to create marketing plans, promotional campaigns, social media strategies. Fe...