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
