This project automatically generates a professional resume from user input — perfect for job seekers, HR systems, and automation workflows.
You’ll build a tool where users enter:
- Name
- Contact info
- Skills
- Education
- Work experience
- Projects
- Certifications
And Python automatically creates:
✔ A clean DOCX resume
✔ A professional PDF resume
✔ Multiple templates
✔ Auto-formatting
✔ Auto-export
🧠 What This Project Teaches You
✔ Python automation
✔ Document generation with python-docx
✔ PDF conversion (optional)
✔ Creating templates
✔ Dynamic placeholders
✔ File management
✔ User input forms (CLI or Streamlit UI)
📁 Folder Structure
AutoResumeBuilder/
│── resume_builder.py
│── template.docx
│── requirements.txt
│── output_resume.docx
📦 requirements.txt
python-docx
reportlab
streamlit
Install:
pip install -r requirements.txt
🧩 1. Create a Resume Template (template.docx)
Use placeholders like:
{{NAME}}
{{EMAIL}}
{{PHONE}}
{{SKILLS}}
{{EDUCATION}}
{{EXPERIENCE}}
{{PROJECTS}}
🧩 2. Python Code – resume_builder.py
from docx import Document
def build_resume(data, template_path="template.docx", output_path="output_resume.docx"):
doc = Document(template_path)
for p in doc.paragraphs:
for key, value in data.items():
placeholder = f"{{{{{key}}}}}" # {{NAME}}
if placeholder in p.text:
p.text = p.text.replace(placeholder, value)
doc.save(output_path)
return output_path
if __name__ == "__main__":
user_data = {
"NAME": input("Enter your name: "),
"EMAIL": input("Enter your email: "),
"PHONE": input("Enter phone number: "),
"SKILLS": input("List your skills: "),
"EDUCATION": input("Enter your education: "),
"EXPERIENCE": input("Work experience: "),
"PROJECTS": input("Projects: "),
}
file_path = build_resume(user_data)
print(f"\nResume created successfully! Saved as: {file_path}")
⭐ Bonus: Streamlit Web App
import streamlit as st
from resume_builder import build_resume
st.title("Automated Resume Builder")
name = st.text_input("Full Name")
email = st.text_input("Email")
phone = st.text_input("Phone Number")
skills = st.text_area("Skills")
education = st.text_area("Education")
experience = st.text_area("Work Experience")
projects = st.text_area("Projects")
if st.button("Generate Resume"):
data = {
"NAME": name,
"EMAIL": email,
"PHONE": phone,
"SKILLS": skills,
"EDUCATION": education,
"EXPERIENCE": experience,
"PROJECTS": projects
}
output = build_resume(data)
st.success("Resume Generated Successfully!")
st.download_button("Download Resume", open(output, "rb"), file_name="resume.docx")
Run:
streamlit run resume_app.py

Leave a Reply