A few weeks back, we had the pleasure of supporting EngHack 2018. We caught up with the first place winners of indico’s Machine Learning API prize — Jobalytics — with Charlie Lin speaking for the team.
What is Jobalytics?
- Job Match – Using an inputted job posting URL, we determine how effectively your resume matches a job posting, including keywords, responsibilities, and skills.
- What Works and What Doesn’t – We provide specific comments regarding the strengths and weaknesses in your resume found in relation to a job posting.
- Frequent Words – We detect the most common words in your resume, so you can determine if you are effectively stating your skills or being repetitious.
- Personality Radials Classification – Based on your resume, we draw a radial chart that explains your Myers-Briggs personality type, determine your individual role in the team and how best you function with others.
What inspired you to build Jobalytics?
We wanted to make a project that could address both problems in an intelligent and user-friendly manner—providing advice for resumes tailored for a particular job, and beating machine using machine. We carefully selected the features that would be most useful, deciding not only to provide generic pros and cons but job- and personality-specific feedback for individual cases, empowering students to build the perfect job application.
How did you build it?
We built this project using Node.JS as our server side language and Express.JS as our framework. We used python-shell to connect the endpoints of indico’s API directly within Node, while using a body-parser library to scrape both the resume and job sites. The front-end design was inspired by the layout, interactivity and look of Google’s CardView template, seen in products such as Google Keep.
We also incorporated Wolfram One’s cloud computation platform; very useful in visualizing the outputs of indico’s algorithms. It was incredibly helpful to use indico’s APIs as we wouldn’t have been able to produce the same results training our own algorithms in the short span of a 24-hour hackathon.
Furthermore, indico’s variety of built-in algorithms and flexibility enabled us to stress test the variance/bias and add layers to a test neural network in Jupyter Notebook, tailoring the algorithms to our needs.
How did Jobalytics evolve throughout the hackathon?
As previously mentioned, we came into the hackathon knowing we wanted to do something to help students succeed in the competitive job market. Our team had a solid understanding of machine learning but we were always worried that we wouldn’t be able to implement and train our own algorithms under the 24-hour timeframe. Luckily, we discovered indico and decided that we would make a job match analyzer after doing some research on the rise of ATS. We made some difficult decisions about what features to implement but quickly laid out a prototype. It was difficult to incorporate the Python code we used for our algorithms within the Node server side framework but we pushed through and made sure all the routes worked. We then implemented Wolfram One for better visualizations as we saw the potential for the raw number output to be confusing for the average user. Halfway through, we decided on a card view layout, which also greatly differentiated the features.
Are there any other machine learning features you’d like to add?
We would like to use indico’s Sentiment Analysis to provide further feedback on the language used in a resume, and potentially cover letters. Some companies, especially startups, have a laid back mood that is evident even in the online job descriptions, while others have a traditional, formal process. This feature could help identify the match and “culture fit” of a potential candidate.
The Facial Emotion Recognition libraries could also be potentially implemented in a “mock interview” where users speak into the screen, answering generic interview questions. An algorithm would analyze features that employers value, such as eagerness, and aggregate a score.
Finally, we want to improve our current algorithms by feature engineering and providing our student expertise on the outputs of the current implementation, using indico’s Custom Collection API. These modified values can then be retrained into a neural network, therefore increasing the accuracy of our results.
What are your plans for its future?
On the front end, we want to refactor our code using React.JS components to streamline rendering and fully implement the card view functionality once we add user accounts. Backend-wise, we want to explore the npm library and see what new handy libraries we can incorporate. We are in the midst of implementing MongoDB so users can improve their resume each time they log in and track their progress against specific job postings. We would also like to implement JWT for account invitations to form peer groups based on similar job interests so users can receive anonymous review sessions while looking at other resumes for further inspiration. This feature will not be a public forum and will allow only invited users to view one’s resume, guaranteeing privacy. With a large number of unexplored indico functions still remaining, we are looking forward to building more features.