ParserPal
Introduction
During WSQ ’24, our team had the opportunity to build a resume parser through CodeLab Davis, a tech organization at UC Davis. Resumes play a crucial role in the initial screening process for hiring. Currently, there are challenges in accurately extracting information and providing beneficial recommendation insights. We created a web application, FOR students BY students, to parse their resumes and display the information in an interactive, user-friendly way.
The Team
Leads
Ethan He — Team Mentor
Kavya Sasikumar — Project Manager
Designers
Neha Bagepalli
Roxanne Ruan
Developers
Justin Vaziri
Neerja Natu
Kyle Luo
Sruti Elangovan
Malav Ramanan
Our Task
There are many resume parsers on the market, but their effectiveness in extracting information from resumes is often lacking. Additionally, many of the effective tools are locked behind paywalls.
Our task is to develop a free web application that accurately parses resumes and generates insightful recommendations for content and Applicant Tracking System (ATS) optimization, built by students for students.
Our focus is on providing a user-friendly platform where users can upload a PDF file of their resume. The application will then parse the resume for the text and display the information interactively. Additionally, we will provide recommendations to enhance resume content and improve ATS compatibility.
Timeframe
January — June 2024 | 20 weeks
Tools
Design — Figma
Development — React, Express, Typescript, MongoDB
Maintenance — Jira, Notion, Slack, Github
The Project
Design
Low-Fidelity Wireframes
Maintenance — Jira, Notion, Slack, Github
In our user research, we aimed to understand what users wanted in a resume parsing application. We discovered that users primarily valued strong word choices and feedback on resume parsability. Our main goal was to maintain the integrity of the user experience while incorporating features highlighted in our surveys. This feedback helped us categorize our recommendations into two areas: ATS and content. We strive to ensure a seamless user experience with a solid layout and useful features.
Mid-Fidelity Wireframes
During this phase, we focused on incorporating color and other elements of the design system, as well as designing the logo. In conversations with developers, we scaled the project scope and decided on features based on their feasibility in code. We initiated work on all features, including the dashboard, sign-in/sign-up, homepage, and more.
High-Fidelity Wireframes
We refined our design components and color scheme, finalizing the prototype to ensure compatibility across all pages with consistent placement of elements like the navigation bar. We carefully determined the placement of every component to ensure a smooth handoff to developers. Additionally, we designed interactive buttons and icons to maintain a minimalistic yet intuitive user interface.
Design System
Development
User AuthenticationTo ensure a seamless sign-up and sign-in process for users, we created a flowchart to optimize the user experience. We detailed the features of sign-up, sign-in, and forgot password, incorporating state changes on the front-end. This included real-time validation for user inputs, clear error messages, and user-friendly interfaces for each step.
To ensure a seamless sign-up and sign-in process for users, we created a flowchart to optimize the user experience. We detailed the features of sign-up, sign-in, and forgot password, incorporating state changes on the front-end. This included real-time validation for user inputs, clear error messages, and user-friendly interfaces for each step.
We adhered to a scalable user profile schema throughout the development process.
Resume Parsing
When users upload their resume, we utilized the Multer API for handling file uploads.
They are then directed to the “Parsing Your Resume” page with a loading symbol. We utilized the PDF-parse to extract text from the PDF resumes. The extracted text is then stored in MongoDB as a text entity. This stored text is subsequently used to generate personalized recommendations for the users.
Recommendations
We designed two types of recommendations: content and ATS. However, due to time constraints, we focused only on content recommendations.
The system takes the text entity from the resume and uses the GPT API with specific prompt engineering to generate feedback on keywords, spelling and grammar, and repetition. It then uses logic to calculate a content quality percentage, indicating the strength of the resume. We chose the ChatGPT API for its ease of use, our previous experience with it, and its versatility in handling various content recommendations.
Dashboard
The system provides users with information and analytics through three main features: My Resumes, My Career, and Settings. The “My Resumes” feature allows users to view their resumes and use CRUD routes to manage their data. The “My Career” feature shows top career matches based on keywords in the resume content. The “Settings” feature enables users to control their profiles and apply CRUD routes for customization and data management.
Takeaways & Challenges
Challenges
Lack of Experience in Certain Parts of the Development Process
One of the significant challenges we faced was connecting the front end to the back end. Our team had limited experience in full-stack development, which resulted in a steep learning curve. We had to spend extra time learning about RESTful APIs, asynchronous requests, and how to handle data flow between the client-side and server-side efficiently. We had to quickly become proficient with new frameworks and libraries such as React for the front end and Node.js for the back end. This required us to balance our development tasks with ongoing learning and troubleshooting, which sometimes slowed down our progress.
Difficulty in Implementing Some Product Functionality
We underestimated the difficulty of executing some of our ideas. The lack of feasibility combined with time constraints created a challenging environment. Debugging issues that arose during development consumed a majority of our time.
User Authentication Problems
Certain aspects of user authentication, like querying the database to retrieve user-specific information for different parts of the application, were difficult. We had to ensure that our queries were efficient and that data was fetched accurately and securely. Integrating third-party authentication services, such as OAuth for social media logins, added another layer of complexity. We had to navigate through various API documentations and ensure seamless integration without compromising on user experience.
Takeaways
Importance of Work Environment
We learned that a positive and collaborative work environment is crucial for the success of any project. Effective communication among team members facilitated problem-solving and innovation. Regular meetings and open channels of communication helped us stay aligned and address issues promptly. Additionally, having access to the right resources and support systems made a significant difference, enabling us to focus on our tasks and improve productivity.
Feedback is Key
We realized that continuous feedback is essential for iterative improvement. User feedback, in particular, was invaluable in refining our product and making it more user-friendly. Constructive feedback from peers also helped us identify areas for personal and professional growth. Embracing feedback, even when it was critical, allowed us to make necessary adjustments and improve the quality of our work, fostering a culture of continuous learning and development.
Staying Flexible through Challenges
Flexibility and adaptability were crucial in navigating the challenges we faced. Whether it was adjusting our plans due to technical difficulties or revising our timeline to accommodate unexpected obstacles, staying flexible allowed us to keep moving forward. Challenges are inevitable in any project, but our ability to remain flexible and think creatively enabled us to find effective solutions and continue progressing towards our goals.
Learning is Everything
The importance of continuous learning cannot be overstated. Throughout the project, we encountered new technologies, frameworks, and methodologies that required us to step out of our comfort zones and acquire new skills. This constant learning process was vital for our growth and success. Viewing challenges as opportunities for learning rather than setbacks allowed us to maintain a positive outlook and stay motivated. Each obstacle we faced taught us valuable lessons that we can apply to future projects.
Closing Remarks
We have learned a lot through the challenges we faced and the lessons we gained, forging strong bonds along the way. For many of us, this was our first project of this caliber, and utilizing third-party APIs and tackling new bugs in a novel development environment presented significant challenges. However, we have grown as a team and will carry these lessons forward to become even better. It was a great experience coding and designing together, but even more rewarding was learning, growing, and laughing together. This is an experience I will always cherish and learn from.