I Built a Resume Parser with ChatGPT, Python, and Zero Experience in NLP
I’m not a Natural Language Processing (NLP) expert.
In fact, before this project, I barely knew what tokenization or entity recognition meant.
But thanks to Python, some clever Googling, and ChatGPT acting like my 24/7 coding buddy, I managed to build a functional resume parser in just a couple of days.
Here’s how it happened — what I built, how I built it, and why you can (and should) build it too.
💡 The Idea
I was applying for internships and realized: every resume is different, and recruiters don’t have time to manually extract skills, experience, education, etc.
Wouldn’t it be cool to build a Python script that could read a PDF resume and extract the key info in seconds?
That’s what I set out to do.
🔧 Tools I Used
- Python
- PyMuPDF (fitz) — to extract text from PDF
- spaCy — for basic NLP tasks
- ChatGPT — for guidance, code explanations, and quick fixes
- re (regex) — to match patterns like email, phone numbers
- Streamlit (optional) — to make it a simple web app
🛠️ Step-by-Step Breakdown
1. Extract Text from PDF
import fitz # PyMuPDF
def extract_text_from_pdf(pdf_path):
doc = fitz.open(pdf_path)
text = ""
for page in doc:
text += page.get_text()
return textChatGPT helped me tweak this to handle multi-page resumes too.
2. Extract Name, Email, Phone
import re
def extract_email(text):
email = re.findall(r'\S+@\S+', text)
return email[0] if email else None
def extract_phone(text):
phone = re.findall(r'\+?\d[\d\s.-]{8,}\d', text)
return phone[0] if phone else NoneSimple regex + GPT-powered pattern tweaks = good enough accuracy for most resumes.
3. Extract Skills (Using spaCy + a Skills List)
import spacy
nlp = spacy.load("en_core_web_sm")
skills_list = ["python", "machine learning", "sql", "javascript", "react", "excel"]
def extract_skills(text):
text = text.lower()
return [skill for skill in skills_list if skill in text]Later, I asked GPT to help me auto-expand this list using job descriptions. Game changer.
4. Bonus: Use ChatGPT to Extract Experience Sections
Here’s the fun part. I sent the raw PDF text to ChatGPT and asked:
“Can you extract the Experience section and turn it into structured data?”
And boom — it worked.
Get Rohansoni’s stories in your inbox
Join Medium for free to get updates from this writer.
ChatGPT gave me back a clean JSON-style summary:
{
"Company": "Google",
"Role": "Software Intern",
"Duration": "June 2023 - August 2023",
"Description": "Worked on backend optimization for internal APIs"
}Yes, seriously.
🚀 What I Learned
- Regex is your best friend (and sometimes your worst enemy).
- ChatGPT can debug, explain, and improve your code on the fly.
- You don’t need to be an NLP expert to start using NLP.
🎁 Bonus: Make It a Web App with Streamlit
import streamlit as st
uploaded_file = st.file_uploader("Upload Resume PDF")
if uploaded_file:
text = extract_text_from_pdf(uploaded_file)
st.write("Email:", extract_email(text))
st.write("Phone:", extract_phone(text))
st.write("Skills:", extract_skills(text))Now it’s shareable with friends, recruiters, or even as a portfolio project.
🧠 Final Thoughts
Was it perfect? No. Was it fun and surprisingly powerful? Absolutely.
Building this resume parser taught me that you don’t need to be a guru to build useful tools. You just need:
- Curiosity
- A goal
- And maybe a little help from ChatGPT
If you’re learning NLP, try this project. It’s beginner-friendly, resume-worthy, and genuinely helpful.
And if you want the full code, drop a comment 📈
A Message from AI Mind
Thanks for being a part of our community! Before you go:
- 👏 Clap for the story and follow the author 👉
- 📰 View more content in the AI Mind Publication
- 🧠 Improve your AI prompts effortlessly and FREE
- 🧰 Discover Intuitive AI Tools








