Documents

Resume Studio

Try it

Professional 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

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

More from tobewin

Browse all skills

Generate editable PowerPoint decks from a JSON description with 11 slide layouts and 5 color themes.

by ToBeWin330 installs3 stars

Translate Word, PDF, Excel, PowerPoint, HTML, Markdown, and TXT files into another language while preserving the original layout.

by tobewin36 installs1 stars

Professional Excel spreadsheet generator. Use when user needs to create data tables, reports, charts, financial models, or any structured data in Excel forma...

by ToBeWin82 installs3 stars

中国新闻资讯聚合工具。Use when user wants to get latest news from Chinese sources. Supports multiple news sites (Sina, Sohu, NetEase, Tencent) via browser automation an...

by ToBeWin57 installs3 stars

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...

by ToBeWin68 installs1 stars

Marketing plan generator with web research and Word output. Use when user needs to create marketing plans, promotional campaigns, social media strategies. Fe...

by ToBeWin31 installs1 stars