Use Python and NLP to Boost Your Resume

David Hay
Data Marketing Philosophy
4 min readDec 24, 2021

--

When looking for a job today, it’s no secret that to get your resume in the hand of the recruiter or hiring manager, first needs to get past the company’s applicant tracking system (ATS). I.e. the technology that dictates if your resume is relevant enough. ATSs are extremely common (used by 99% of Fortune 500 companies) and even if you’re the perfect candidate, if your resume isn’t up to snuff it ends up in the proverbial pile.

An amazing example to illustrate just how reliant companies have become on ATSs, comes from Reddit user u/AngelinaTheDev. If you haven’t seen the viral post already, u/AngelinaTheDev creates a faux resume loaded it with buzzwords, but also sown with some, well, not so advantageous keywords. Take a look for yourself:

See the whole post here

Some of my personal favorites being.

  • Expert in JavaScript, TypeScript, Node.js, React Al, Mia Khalifa, C++.
  • Spread Herpes STD to 60% of intern team.
  • Phi Beta Phi — fraternity record for most vodka shots in one night.

While the errors are obvious to the human eye, it had a 90% success rate! Garnering calls from Notion, AirBnB, Reddit, Dropbox, Robinhood, etc.

Now What?

While hilarious, it might also be a bit disheartening to know a bogus resume could have been picked over yours because of an algorithm. But as a wise man once said, “Improvise, Adapt, Overcome”.

When I learned about this I decided to build a program that would help give me a leg up on the job hunt. And now want to share it with all you job searchers. Let’s get started!

Step 1: Install Requirements

For this program we will be using the following libraries:

  • Requests (To download HTML)
  • BeautifulSoup4 (To parse HTML)
  • Spacy (Natural Language Processing library to extract relevant keywords)
  • Matplotlib (Create some sweet data visualizations)

Install requests, bs4 and matplotlib as you normally would with pip or conda.

For spacy you will need to head to their site to get specific install instructions per your OS, language, etc. and will get something like the below.

Step 2: Import Modules

In addition to the above we will also be using the Counter class from the Python Standard Library.

Step 3: Downloading the HTML

We have our environment set up, let's get started!

First, we will need to include a way for the user to give the program a url and then for it to pull the HTML with requests.

Step 4: Creating the Soup

Now we take the HTML and parse it using BeautifulSoup to extract the relevant information.

This step does require some prior in HTML + CSS, but is fairly intuitive. Go to the site you want to parse (In this example LinkedIn) and open up developer tools. There you can scroll and use your mouse to locate the elements you want to extract and their associated tags.

Check out this guide to learn more.

For this example want the job title, company and job post description. Depending on your goals and what you’re scraping this will change.

Additionally, I added the string, replace and strip methods to the objects. String to convent from a soup object, replace to remove new lines and strip to remove excess white space.

If we try to use the string method on a soup object with multiple items it leaves with a generator object and that isn’t helpful. Here we use the stripped_strings method to remove the extra HTML and a for-loop to iterate over the object creating a string containing all the keywords.

Step 5: Natural Language Processing

Let’s get started with spacy our trusty NLP library. How does NLP work? I really do not know, but it’s able to give us the data we need (I believe this is called abstraction).

It’s used in this example because we don’t care about words like, “if, are, how” in the job post. For now, let’s get every noun that we find in the description.

Once we have our list of nouns the Counter class is used to create a list of tuples, each containing the keyword and the number of times it appears.

You can then pick the the top number of noun occurrences (I picked top 25).

Step 6: Plot

Let’s plot our first chart! Since Counter create a list of tuples we need to split it be able to use the keywords and number of occurrences as the x-axis and y-axis in the chart. You can easily use zip to do so.

Step 7: Run your Program!

Head over to LinkedIn and find a job you are interested in. Then copy the link.

Run the program and the Python Console will ask you for the url and there you go!

There is a lot you can do from here and you can check out my GitHub to see my version which creates a PDF report!

Good luck out there and follow for more!

Info :

Documentation:

--

--