Day 20 of 100 Days Coding Challenge: Python
Do you know what an ATS resume keyword checker is? About 15 years ago, I had a chat with a friend in HR who casually dropped the term “Applicant Tracking System,” or ATS, as if it were common knowledge. I nodded like I totally knew what she meant, but inside I was thinking, “Ah, yes, the mythical software that eats resumes for breakfast.” She explained that ATS was used to sort through the avalanche of job applications—often over a thousand per listing. But here’s the kicker: the system also had a habit of rejecting the best candidates because they didn’t use the “right” words. The irony stuck with me.
So today, I decided to take matters into my own hands and see if I could make a mini version of this digital gatekeeper, ATS resume keyword checker. Because if robots are going to judge us, we may as well peek under their hood.
Today’s Motivation / Challenge
We’ve all seen those job listings with 50 “required” skills. And let’s be honest—some of them are just buzzword soup. Today’s challenge was about building a tool to fight back. The goal: create a little program that reads your resume and checks it against keywords from a job description. It’s like prepping for a job interview with a cheat sheet—except you built the cheat sheet yourself.
Purpose of the Code (Object)
This code scans your resume and tells you how well it matches a job posting based on keywords. It’s not reading your experience like a recruiter—it’s just playing word bingo. If you mention “Excel,” and the job wants “Excel,” that’s a point for you. The higher the match score, the more likely you are to pass the digital bouncer at the job club door.
AI Prompt:
Build a Streamlit app that uploads a resume (.txt or .pdf), compares it against comma-separated keywords, shows which ones are matched and which are missing, and calculates a match score.
Functions & Features
- Uploads resume in .txt or .pdf format
- Accepts comma-separated job keywords
- Checks which keywords are present in the resume
- Calculates a match score (%)
- Displays found and missing keywords in separate lists
Requirements / Setup
Install these before running:
bash
CopyEdit
pip install streamlit PyPDF2
Then run the app using:
bash
CopyEdit
streamlit run your_script.py
Minimal Code Sample
python
CopyEdit
def check_keywords(text, keywords):
found = [kw for kw in keywords if kw.lower() in text.lower()]
missing = [kw for kw in keywords if kw.lower() not in text.lower()]
return found, missing
This function splits your keywords into found and missing by checking if they show up in the resume text.
Notes / Lessons Learned
The programming part was smooth. Honestly, I was feeling confident—until I tried to run my Streamlit app like a normal Python script. That’s when Streamlit wagged its finger at me: “Session state does not function when running a script without streamlit run.” Touché, Streamlit. Once I launched it the proper way, everything clicked. I tested the app with a job listing from Indeed and my own five-year-old resume. The result? A humble 50% match. Moral of the story: your resume may be a masterpiece, but if it doesn’t speak ATS language, it’s not getting past the door. Tailoring your resume for each job isn’t just good advice—it’s algorithmic survival.
Optional Ideas for Expansion
- Add an option to upload a job description file and auto-extract keywords
- Highlight matched keywords directly in the resume text
- Export the results as a PDF or CSV for review
