Inspiration

For most freshmen, college is where they get their first experience of writing a professional resume. Thanks to the Internet, we now have access to a near-infinite amount of fancy and minimalistic resume templates and even resume crafters that'll take your information and weave it together into a nice and neat PDF. Unfortunately, templates have become the craze now, with most resume reviews being "use this template instead" instead of valuable feedback. Additionally, there seems to be no information on whether or not your resume is suitable for a certain discipline or not. As a result, we decided to up the mantle and craft a solution.

What it does

It's a Discord bot that accepts a PDF resume and the desired career discipline to compare the resume's contents against, returning a short summary of what must be adjusted in the resume based on the career discipline and the academic, social, and career/technical skills.

How we built it

The project is built upon pycord, a more convenient fork of discord.py. We chose to go the Pythonic route instead of using discord.js since most of us were more familiar with Python. By creating the bot itself in the Discord Developer Portal, we were able to control it through its top-secret token and since Discord accepts file attachments we were easily able to integrate PDF-reading mechanics into the bot via pypdf. From there, we would read the contents of the PDF and select notable key terms (nouns and adjectives) by using the natural language processing capabilities of NLTK and weeding out junk/stopping words. Once we have the collection of terms, we match them with JSON files containing many different terms relating to academic, social, and career skills and synthesize the result.

Challenges we ran into

Our biggest challenge was how we were going to scrape valuable text off of the resume and relate it to a selected discipline (eg. computer science). Despite our lack of knowledge about NER (named entity recognition), we still stuck with the NLTK natural language module to get important terms (tokens) from the PDF file and attempted to use another natural language module called spaCy to relate the skills in the resume to the ones needed for the chosen discipline. We eventually went with a simple but effective solution of creating a small local database of key terms associated with a discipline in JSON format.

Another challenge was how we were going to interpret and judge the resume to be sufficient for the chosen discipline. In early versions, we directly searched for information such as chosen majors, GPA, projects, and skills, which was very time-consuming and difficult. Eventually, after having a talk with a recruiter in the event, we decided it was the skillset that made someone worthy of an occupation. So, we started tallying and recording each skill present in a resume under 3 categories: career, social, and academic, as these skills are paramount to success in any job environment. We made the program aim to look for a healthy balance of 40% career skills, 30% academic skills, and 20% social skills in the provided resume.

Accomplishments that we're proud of

We are proud of our simple yet effective method of tokenizing the PDF and using the respective JSON files to match against the resume content. We are also proud of our method of "scoring" the resume on the basis of 3 primary skills rather than taking every piece of unique information on the resume such as year, major, university, projects, activities, etc.

What we learned

Interpreting human language with a computer is difficult! Other than that, we also learned how to simplify solutions to a problem to an equally efficient model and also use natural language processors and interact with PDFs via code for the first time.

What's next for Discord Resume Checker

In the future, we seek to use natural language processing to its fullest extent, adding more features to gauge the grammatical traits of the resume such as its conciseness and language. We would also use it to compare a resume side-by-side with questions and information from a job application to determine its suitability and likelihood of being considered.

Built With

Share this project:

Updates