The twenty-first century has brought a rapid change in how job applications are made, with the meteoric rise in the importance of internships during university.

However, the job-seeking process is difficult and time consuming for everyone, especially university students, who are always swamped with work and extracurricular activities. Having to jump through numerous hoops to apply to one position is tedious, time-consuming, and detrimental to the entire job application effort. Oftentimes, applicants have to input the same data multiple times despite the information being present in their resume.

This unnecessary and inefficient process to the conception of JobOverflow, a chrome extension that allows you to upload your resume only once and apply anywhere with a click of a button only. This streamlined and effective career tool will significantly reduce the time taken in the job search process, allowing applicants to focus on both quality and quantity rather than sacrificing one or the other.

What it does

JobOverflow has many features tailored to make the application process as simple and streamlined as possible. Built as a React-based chrome extension, JobOverflow first identifies various user attributes such as personal details, skills, and experiences through a resume parser. Users can upload their resumes to the app, which then get parsed efficiently, allowing pertinent information regarding the user to be collected and stored. Afterwards, whenever the user applies for a job, the extension auto-fills the necessary queries without any effort expended.

How we built it

The development process consisted of five significant facets: Parsing the resume - The resume was parsed using the Affinda public Resume parsing API, which was able to identify and segment PDF documents into personal details, skills, work experience, and achievements.

Designing the UI - The UI consists of two separate React applications, both with bootstrap assets. The first app consists of a google extension popup used to start/stop the app at any time, and the second app consists of a web page in which users can upload their resumes to be parsed, and then later update the input fields in case the parser makes a mistake.

Integration to Backend - The Affinda API was processed through a Python program, yielding a JSON file that was sent to the Javascript frontend using a programmed Flask API. The Javascript frontend makes POST requests to the Flask server using fetch.

Database development - The personal data parsed from the resume and entered by the user is stored in a Firebase server. Firebase provided a lot of flexibility for querying data, and made the entire process a lot more streamlined. The React app queries data into the Firebase database, and during the autofill process, queries the same data out and into the application sites.

Web Scraping & Autocompleting - The Web Scraping and autocompletion aspects of the app were done in a chrome content script which scrapes viewed web pages for input fields & their corresponding labels. The app will automatically fill in the related fields with information received from the firebase database based on the titles given.

Challenges we ran into

There were a variety of challenges we ran into. First and foremost, it was challenging to find an effective and free resume parsing API that would extract the information from various formats with acceptable accuracy. Affinda was eventually found, and its user-friendly documentation made the request process a lot easier using Python. Another challenge faced was the creation of a custom Flask API that interacted with the React UI. Due to the nature of Javascript, coordinating the POST requests was a tedious task.

Selecting an appropriate database proved to be challenging for our application. We eventually settled on a No-SQL database solution and utilized a Firebase Realtime database to support the storage for each user’s information. A significant challenge that was faced along the way included setting up the appropriate permissions in the build scripts to allow any machine running the chrome extension to run the embedded firebase scripts without having to manually configure them.

What's Next

There are still many further steps to take with the app, especially regarding the web scraping elements of it. Due to the wide variety of ways to input information on varying websites, our app may not be able to complete (or even detect) all types of fields. Thus, more logic would need to be added to better see these alternative input fields (like multi-select) for job applications.

+ 6 more
Share this project: