Like most people I have two emails. One for personal/daily use and one for formal use. I have had the formal one for a while now and pretty much every single job or internship application I have done in the last or so decade has been done through it. Given that I am currently unemployed and searching for a job, I get a lot of rejection emails. Currently at 1600 as of this writing. (Sorry mom 🥲🥹😭)
One of the most common advice during job searching that I have come across is — “Do projects! Keep your GitHub updated!” Well this is my attempt at doing so… A no-one-ever-asked-and-no-one-ever-needed analysis of the rejection emails I have been getting. So lets begin! I call it the L Project. I was venting to my friend about the rejections and he said — “Damm bro, seems like you are collecting L’s (losses)”. And so it stuck. The L Project.
Accessing the Gmail API is pretty easy. You can do it by following the steps outlined here. They boil down to going to Google Cloud Console and creating a new project. Enabling the Gmail API . And then creating and then renaming OAuth configuration file called credentials.json.
I have uploaded the source code and I will be referring to it here. Now given that my inbox has lots and lots of emails, I decided to manually create a custom query with some of the most common phrases that I have come across. This will make it easier to fetch the rejections. You are of course free to fetch your whole inbox and then filter through those emails but do watch out for API limits. Here are the commonly seen phrases —
[
“other candidates”,
“unfortunately”,
“not selected”,
“encourage”,
“not to move forward”,
“not to move you forward”,
“after careful consideration”,
“unable to move forward”,
“regret to inform you”,
“that you have not been selected”,
“reviewing your”,
“time and effort”,
“feedback”,
“received a lot of”,
“closer match”,
]Now a keen eye (or a fellow unemployed L collector) will spot that I am missing out on ‘Thank you for your application’. It’s just that I skipped on that phrase since I see it being used a lot for job application confirmations as well. All the emails matching the query are fetched and stored in rejection_messages_full.json file (Not included in git) along with id, date, from, field and body. Feel free to play around with the variables.
In analysis.py I currently have breakdown of the commonly used phrases, the sender usernames and the times during which I received the rejections. The commonly used phrases and sender usernames make sense and the results are also well expected. We have words like ‘encourage’ and ‘unfortunately’ dominating the phrases.
And we have ‘noreply’ and kebab case version ‘no-reply’ dominating in sender usernames.
I also decided to see if I could spot any pattern for times during which I was getting rejections. I was trying to see if I had any ‘unlucky’ or ‘lucky’ times of the day but apart from a few hours during the night where there is a trough in the chart, they seem pretty spread out.
All of these are simple text searches that I have done so I am sure someone can (though I have no idea why) do a fuzzy search or RAG based search.
Since, I am interviewing I have now one thing drilled into my head. STAR pattern is outdated. STARL is in. So lets talk about that L here. No not the L this article is about. L for Learning! Umm. Zero. Nothing. Nada. No learnings here!!! So, where do we go from here? Dunno about you but as for me? Well I am off to do another application. 😭🤣😭🤣


