❌ Analyzing More Than 80 Job Rejections with Python
Jul 19, 2018 • 6 min • Data Science
We’ve all gotten those emails at one point or another. You know, the ones that start with “Thank you for your interest” and end with shattered dreams and self-doubt. Okay, maybe that’s a bit extreme. Nonetheless, getting job rejections can be difficult.
Trust me, I know. I’ve received over 80 explicit job rejection emails over the past year while applying for internships. Let’s take a look at my experience by the numbers to provide a little context before we dive into the data.
- Applications: 234
- Replies: 93
- Rejections: 90
- Offers: 3
It’s worth pointing out that, at least for internships, getting no response at all is not uncommon. In fact, over 60% of applications that I filled out saw no response whatsoever. In a lot of ways, this can cause even more anxiety than getting back a clear-cut “no” response back. At least in that case you can move on with your search instead of focusing on a lost cause.
As you might imagine, after hearing “no” 80+ times, you develop a sort of resistance to it. This resistance coupled with a bit of curiosity is what ultimately sparked the idea for this project. In short, I wanted to investigate what made these automated rejection emails tick and how they differed between companies. If you want to skip to the code itself, feel free to head on over to the GitHub repo and have at it.
Throughout the rest of this post, I’ll go into how I scraped the rejection emails. Then I’ll answer some interesting questions regarding the timing and content of them.
First things first, let’s get the data. Upon querying my Gmail inbox, I found over 1,000 emails containing the words “intern” and “application”. This made things a bit tricky from an automation perspective.
I went through and sorted out the job rejections by each company. I provided each one with a “Job Rejection” label within Gmail. Once that was done, it was time to leverage the power of Python. I was able to log in with imaplib and scrape specific parts of the emails with the email package. For content analysis, I had to tokenize the text with nltk, and remove any punctuation and stopwords for analysis.
Common words & phrases
Ever think to yourself that these emails seem to all use the same general language? Personally, I’ve noticed a lot of the same phrases and lines used from company to company. This isn’t to say that there aren’t some creative attempts to soften the blow, but they are definitely few and far between.
Let’s take a look at the most common words and phrases used in the subject lines of these emails. You know, so you can, at least, see it coming.
As you can see above, popular word choices include “application” and “your” among others. Just glancing at this, you can probably piece together the most likely subject headers without too much effort:
- Thank you for your interest.
- Update on your [Insert role] application.
There appears to be small variations of these same tried and true subject lines, but these words often serve as the initial bearer of bad news.
Let’s take things a step further and look at how the timing of these emails breaks down. This reminded me of the age-old advice to never to fire someone on a Friday, since they can’t really take any steps towards new employment over the weekend. While not quite as severe as letting someone go, it’s still fascinating to think about the thought processes used when companies choose to deliver the bad news.
Let’s follow this idea and look at the day of the week breakdown for rejection emails. I’ll dive into the time of day breakdown afterwards.
It appears that “hump day” is the clear winner here. Thursday comes in at second place, with the rest of weekdays looking pretty consistent. Weekends look like smooth sailing for the most part, aside from a few notable anomalies that were sent on Saturday. Shame…
For hour of day, it looks like the normal distribution we would expect. There appear to be spikes in rejection counts at 9 am and noon. These times signal the start of the workday for the EST and PST time zones, respectively. Only one single rejection came after 5pm PST (hour 20). Lookin’ at you P&G.
This wraps up the analysis portion of the post. Once again, you can check out the code and original analysis on GitHub.
I found this project to be a fun exploration of job rejection emails. More than that, I found it to be a useful reflection on my job search and dealing with rejection in general. Not enough people out there value the ability to deal with failure as a practical skill or even a super power in some ways.
“I’ve failed over and over again in my life… and that is why I succeed” — Michael Jordan
After 80+ explicit rejections, you begin to get used to the notion of failure. I found myself becoming increasingly less hesitant to apply to positions at prestigious companies or cold-email recruiters. This allowed me to obtain opportunities that initially I didn’t think were within reach.
If you’re reading this, take those chances, reach a little further, go out there and fail. Get back up. Then fail some more. It’s only through this process that improvement and, ultimately, success can be achieved. And when you do accomplish that next success, don’t forget to look back to all the failures that brought you there and say one thing:
Thank you for your interest.
Thanks for reading! If you enjoyed this post and you’re feeling generous, perhaps follow me on Twitter. You can also subscribe in the form below to get future posts like this one straight to your inbox. 🔥