Build professional one-page resumes in Word (DOCX) format following a standardized template. Gathers user information and generates a properly formatted resume. Uses the 'doc' skill for DOCX rendering.
Build professional, one-page resumes in Microsoft Word (DOCX) format.
Note: This skill depends on the
docskill for DOCX creation and rendering. Usepython-docxfor document generation and thedocskill's rendering workflow for visual verification.
doc skill workflow with python-docx. [Full Name]
[Phone] | [Email] | [City, State]
EDUCATION
[University Name] [City, State]
[Degree]; [Major/Minor] [Expected/Graduated Date]
• GPA: X.XX / 4.00; Honors: [honors if any]
• Coursework: [Relevant courses, comma-separated]
PROFESSIONAL EXPERIENCE
[Company Name] [City, State]
[Job Title] [Start Date – End Date]
• [Achievement/responsibility with quantifiable impact]
• [Achievement/responsibility with quantifiable impact]
• [Achievement/responsibility with quantifiable impact]
[Company Name] [City, State]
[Job Title] [Start Date – End Date]
• [Achievement/responsibility]
• [Achievement/responsibility]
PROJECTS
[Project Name]
• [Description with technical details and impact]
• [Description with technical details and impact]
[Project Name]
• [Description with technical details and impact]
SKILLS, ACTIVITIES, & INTERESTS
Skills: [Technical skills, comma-separated]
Languages: [Programming languages with frameworks in parentheses]
Interests: [Personal interests, activities]
Within a single experience block (company name → title → bullets): NO extra spacing. These elements should be tight with 0pt space between them.
Between separate experiences: 5pt space ONLY. Add this after the last bullet of one experience, before the next company name.
Between sections: 8-10pt space before each section header.
[Company A] ← 0pt after
[Title A] ← 0pt after
• Bullet 1 ← 0pt after
• Bullet 2 ← 5pt after (end of experience block)
[Company B] ← starts here, 5pt gap above
[Title B] ← 0pt after
• Bullet 1 ← 0pt after
In python-docx:
from docx.shared import Pt
# Within an experience: no extra spacing
company_para.paragraph_format.space_after = Pt(0)
title_para.paragraph_format.space_after = Pt(0)
bullet_para.paragraph_format.space_after = Pt(0)
# ONLY the last bullet of an experience gets 5pt after
last_bullet.paragraph_format.space_after = Pt(5)
# Section headers get space before
section_header.paragraph_format.space_before = Pt(8)
Maximize line usage. Avoid dangling text where a few words wrap onto the next line. If a bullet point has 2-3 words orphaned on a new line:
Short orphaned lines waste vertical space and look unpolished.
In python-docx, add a bottom border to the section header paragraph:
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
def add_bottom_border(paragraph):
"""Add a thin horizontal line under a paragraph."""
pPr = paragraph._p.get_or_add_pPr()
pBdr = OxmlElement('w:pBdr')
bottom = OxmlElement('w:bottom')
bottom.set(qn('w:val'), 'single')
bottom.set(qn('w:sz'), '6') # Border thickness (1/8 pt units, so 6 = 0.75pt)
bottom.set(qn('w:space'), '1')
bottom.set(qn('w:color'), '000000')
pBdr.append(bottom)
pPr.append(pBdr)
# Usage:
section_header = doc.add_paragraph("PROFESSIONAL EXPERIENCE")
section_header.runs[0].bold = True
add_bottom_border(section_header)
Gather Information
Validate Content
If the user doesn't provide all information, insert bracketed placeholders so they can fill in later:
[Your Name]
[Phone] | [Email] | [City, State]
EDUCATION
[University Name] [City, State]
[Degree]; [Major] [Expected Date]
• GPA: [X.XX] / 4.00
• Coursework: [Course 1, Course 2, ...]
PROFESSIONAL EXPERIENCE
[Company Name] [City, State]
[Job Title] [Start – End]
• [Describe your achievement with metrics]
• [Describe another responsibility]
Placeholder format: [Description of what goes here]
Do NOT leave sections empty — always include placeholder text so the user knows what to fill in.
Generate DOCX
from docx import Document
from docx.shared import Pt, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
doc = Document()
# Set margins
for section in doc.sections:
section.top_margin = Inches(0.5)
section.bottom_margin = Inches(0.5)
section.left_margin = Inches(0.6)
section.right_margin = Inches(0.6)
# Name (centered, bold, large)
name_para = doc.add_paragraph()
name_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
name_run = name_para.add_run("Full Name")
name_run.bold = True
name_run.font.size = Pt(18)
# Contact line (centered)
contact_para = doc.add_paragraph()
contact_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
contact_para.add_run("+1 (555) 123-4567 | [email protected] | City, State")
# ... continue with sections
doc.save("resume.docx")
Review & Iterate
Engineering/Technical: Architected, Built, Deployed, Designed, Developed, Engineered, Implemented, Integrated, Optimized, Refactored
Leadership: Directed, Led, Managed, Mentored, Oversaw, Spearheaded
Analysis: Analyzed, Assessed, Benchmarked, Evaluated, Researched
Improvement: Automated, Enhanced, Improved, Reduced, Streamlined
Fill the page. Include all relevant experience, projects, and skills. Do not artificially limit content — use the full page.
If content exceeds one page, trim in this order:
Do NOT pre-emptively limit bullets or content. The goal is a full, dense one-page resume.
Save the resume as [LastName]_[FirstName]_Resume.docx in the workspace.