Icon change when hovering over "Apply"
Icon change when hovering over "Save"
Icon change on 'Apply' hover
UI of our Job Buddy program
A description pop-up of the job that appears when the user clicks on a job from the UI!
More job descriptions!
Additional job description pop-up
A page loaded full of applications that a user has applied for!
The pop-up that appears when the user clicks on the Job Buddy extension in the extension bar
As college students, one of the most important and stressful points of our lives can be applying for jobs and internships. We wanted to bring in a companion to assist in job applications and make the process easier to keep track of and care for. Job Buddy is a Google Chrome extension made to compile all necessary information on a job posting to enable the user to return to the post at any time to refresh on job details and follow up on their applications. Users can refer to this information for interviews, emails, or simply to keep a record for follow-ups. Our goal when making Job Buddy was to make the integration seamless with the already existing UI on job websites. In this way, we are able to bookkeep for our users without being a distraction.
What it does
Our project for this year’s HackUci is a quick and easy to use chrome extension. Focused on making it easier and more efficient for students applying to jobs on LinkedIn, Job Buddy gives our users a streamlined and simple way to keep track of and update their job application statuses. By clicking either “apply” or “save” on any LinkedIn job posting, Job Buddy stores the company name, job title, location of the job, status of application, and date that you applied for that position locally into the chrome.
Next, users can click on the extension icon in the top-right corner and click “View Applications” to view all the relevant information for their job viewings and applications. Users can view all the previously named job information in a well organized format.
How we built it
We divided the project into three components
1. Webpage parsing component This component is responsible for detecting LinkedIn job postings on a user’s browser and modifying the “Apply” button to also complete a custom task defined by the next component. We did this by using jQuery to access elements in the DOM and manipulate them. We used multiple regex patterns in order to discover elements relevant to the job posting and process that data.
2. Data retention component After gathering the data from the LinkedIn job posting page, we use chrome local storage to store data about the job posting even between browser sessions. The data retention component is also responsible for transferring data from the chrome local storage to a new HTML page that displays the information in a beautiful interface.
Challenges we ran into
Our problems mainly came due to our inexperience in making chrome extensions. Although the idea seemed straightforward to implement, we became stuck on a few roadblocks along the way.
Most notably, we ran into complications with storage.
Our initial plan was to store it into a google spreadsheet. However, due to the number of restrictions chrome places on account authentication and document access, it quickly became complicated to compile our job information into a spreadsheet.
We then tried to store our information using chrome.storage. This approach worked for the majority of our testing, but we eventually realized the 100kb storage restrictions greatly limited the amount of jobs we could store.
Finally, we were able to implement the data storage using local storage through the chrome extension api.
Accomplishments that we're proud of
One of our biggest accomplishments was formatting the jQuery objects from the html files. Because job descriptions were split across multiple sections, descriptions became difficult to print out in a clean format. Our descriptions were plaintext for the majority of our development with no surety in our ability to fix it on time. Towards the end we made a breakthrough as we were able to output the descriptions in their original html and integrate them into our generated html file. Overall, we were very happy with the way we ended up implementing the table in a very organized and eye-pleasing format.
What we learned
We made many mistakes, but we also learned a lot of lessons along the way. The most important one without a doubt was to fail often and fail quickly. Especially because we were working with tools and languages we weren’t familiar with, it was an immense boon to be able to figure out quickly what worked and what didn’t and to be able to learn very quickly from our mistakes and figure out the next best move. Secondly, we learned to divide and conquer in order to achieve more, faster. By catering to each others strengths, weaknesses, and knowledge we were able to more quickly get through a lot of the initial roadblocks that came with working with new technologies. Third, we learned the importance of collaboration. It became very clear that two great minds working together is a lot better than one. It helps to have a helping hand catch your mistakes and walk you through your logic. Lastly, we learned the importance of having fun while coding. The reward of a well-made product became all the more meaningful after pushing through coding difficulties and sleepiness.
What's next for Job Buddy
Our goal for Job Buddy is to make it a single simple tool that can be useful for every step of the application process. Due to time constraints, we were unable to implement all of the features we wanted to see. Below is a list of changes ordered by priority. We believe that every feature would be useful for the job application process and are still brainstorming more ways for our application to help.
- Develop compatibility for Glassdoor, AngelList, Indeed, Ziprecruiter and more.
- Add the ability to upload key files for applications such as resumes, cover letters and email templates into job buddy
- Drag and drop files of your choice from the popup menu.
- Make the code more scalable to accommodate larger files
- Export and back up job data to a csv file or Google spreadsheet
- Add a fields for contact information: url, email, recruiter names, etc.
- Add a field for personal notes for job listings. Prompted on every ‘Apply’ or ‘Save’ if enabled in settings.
- Add the ability to edit job details
- Keep users on track with their saved job applications.
- Add email reminders for application deadlines for ‘Saved’ jobs
- Add email reminders for follow-ups if a certain amount of time has passed from application date with no response from the recruiter. We want to implement a way to automatically detect this in the future through an email API like SendGrid.
- An easier way to exit the job description page (currently done by pressing a small X button in the top right corner) Share your saved jobs through email or social media with friends who might be interested in similar postings.