Categories We Write About

Create a Python-powered resume builder

Creating a Python-powered resume builder can be a great way to automate generating professional resumes based on user input. Below is a detailed Python script that acts as a command-line resume builder. It collects user details and outputs a formatted resume in plain text or PDF (optional).


python
import os try: from fpdf import FPDF pdf_enabled = True except ImportError: pdf_enabled = False def get_input(prompt): return input(prompt).strip() def collect_personal_info(): print("Enter your personal information:") name = get_input("Full Name: ") email = get_input("Email: ") phone = get_input("Phone Number: ") linkedin = get_input("LinkedIn URL: ") github = get_input("GitHub URL: ") address = get_input("Address (optional): ") return { "name": name, "email": email, "phone": phone, "linkedin": linkedin, "github": github, "address": address } def collect_education(): education_list = [] print("nEnter your education details. Type 'done' when finished.") while True: school = get_input("School/University: ") if school.lower() == 'done': break degree = get_input("Degree (e.g. B.Sc. Computer Science): ") start_year = get_input("Start Year: ") end_year = get_input("End Year or 'Present': ") education_list.append({ "school": school, "degree": degree, "start_year": start_year, "end_year": end_year }) return education_list def collect_experience(): experience_list = [] print("nEnter your work experience. Type 'done' when finished.") while True: company = get_input("Company Name: ") if company.lower() == 'done': break role = get_input("Role/Title: ") start_date = get_input("Start Date (Month Year): ") end_date = get_input("End Date (Month Year or Present): ") responsibilities = [] print("Enter responsibilities/duties. Type 'done' when finished:") while True: duty = get_input("- ") if duty.lower() == 'done': break responsibilities.append(duty) experience_list.append({ "company": company, "role": role, "start_date": start_date, "end_date": end_date, "responsibilities": responsibilities }) return experience_list def collect_skills(): print("nEnter your skills separated by commas:") skills_input = get_input("") skills = [skill.strip() for skill in skills_input.split(",") if skill.strip()] return skills def collect_projects(): projects = [] print("nEnter your projects. Type 'done' when finished.") while True: title = get_input("Project Title: ") if title.lower() == 'done': break description = get_input("Project Description: ") link = get_input("Project Link (optional): ") projects.append({ "title": title, "description": description, "link": link }) return projects def format_resume(data): lines = [] lines.append(data['personal']['name'].upper()) if data['personal']['address']: lines.append(data['personal']['address']) lines.append(f"Email: {data['personal']['email']} | Phone: {data['personal']['phone']}") if data['personal']['linkedin']: lines.append(f"LinkedIn: {data['personal']['linkedin']}") if data['personal']['github']: lines.append(f"GitHub: {data['personal']['github']}") lines.append("nEDUCATION") for edu in data['education']: lines.append(f"{edu['degree']} | {edu['school']} ({edu['start_year']} - {edu['end_year']})") lines.append("nEXPERIENCE") for exp in data['experience']: lines.append(f"{exp['role']} at {exp['company']} ({exp['start_date']} - {exp['end_date']})") for duty in exp['responsibilities']: lines.append(f" - {duty}") lines.append("nSKILLS") lines.append(", ".join(data['skills'])) lines.append("nPROJECTS") for proj in data['projects']: lines.append(f"{proj['title']}: {proj['description']}") if proj['link']: lines.append(f"Link: {proj['link']}") return "n".join(lines) def save_text_resume(content, filename="resume.txt"): with open(filename, "w") as f: f.write(content) print(f"nResume saved as {filename}") def save_pdf_resume(content, filename="resume.pdf"): if not pdf_enabled: print("FPDF package is not installed. Cannot save PDF.") return pdf = FPDF() pdf.add_page() pdf.set_auto_page_break(auto=True, margin=15) pdf.set_font("Arial", size=12) for line in content.split('n'): pdf.cell(0, 10, line, ln=True) pdf.output(filename) print(f"nResume saved as {filename}") def main(): print("Python Resume Buildern--------------------") personal = collect_personal_info() education = collect_education() experience = collect_experience() skills = collect_skills() projects = collect_projects() resume_data = { "personal": personal, "education": education, "experience": experience, "skills": skills, "projects": projects } resume_text = format_resume(resume_data) print("nGenerated Resume:n") print(resume_text) save_text_resume(resume_text) if pdf_enabled: save_pdf = get_input("nDo you want to save as PDF as well? (yes/no): ").lower() if save_pdf == "yes": save_pdf_resume(resume_text) else: print("nTip: Install 'fpdf' package to enable PDF export:n pip install fpdf") if __name__ == "__main__": main()

How it works:

  • Runs in the terminal, prompting for info step-by-step.

  • Supports multiple entries for education, experience, projects.

  • Formats all inputs into a clean resume text.

  • Saves resume as a .txt file by default.

  • Optionally saves as PDF if fpdf library is installed (pip install fpdf).

You can extend this by adding a GUI, or exporting to DOCX using libraries like python-docx, but this is a solid Python foundation for a resume builder. Would you want me to help build a GUI or add other export formats?

Share This Page:

Enter your email below to join The Palos Publishing Company Email List

We respect your email privacy

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories We Write About