TL;DR

Simplifying UBC Launch Pad's recruitment process.

Background

Hireflow is a web app built as one of the projects at UBC Launch Pad, a student-run software engineering team devoted to building software projects in a collaborative, professional environment. Our team consists of 6 developers, 1 UI/UX designer, and a lot of passion.

Project Goal

Building a web app that aims to make recruiting new UBC Launch Pad members less exhaustive, less prone to human-error, and more systematically efficient.

Duration

September 2020 - April 2021

My Role

UI/UX Designer

Tools

React, Express, MongoDB, Figma, Whimsical

Team

Connor Fong, Andrea Tang, Kavpreet Grewal, Leonardo Kamino, Nancy Wan, Thomas Lapadat, Fransiskus Filbert

THE PROBLEM

UBC Launch Pad’s current application process is inefficient

Building a web app that aims to make recruiting new UBC Launch Pad members less exhaustive, less prone to human-error, and more systematically efficient.

TARGET AUDIENCE

Launch Pad execs who handle the application process

For our MVP, our target audience are the execs who are handling the application process. In the future, however, we would like to expand our product for public use— clubs, hackathon organization, and even business companies.

THE SOLUTION

Introducing: Hireflow

Hireflow is an all-in-one internal tool that integrates multiple key features often used by UBC Launch Pad into one streamlined, sytematic platform.

Dashboard

The Dashboard displays applicants who are at various stages of the screening process and allows the user to view the information associated with each applicant, such as their application type (i.e., Designer or Developer), their experience level, and their resume/application.

Integration with Google Sheets

By importing a single Google Sheets URL using our built-in import tool, we automatically pull the applicants’ responses and display them in an easy-to-read interface.

Scoring System

The numeric scoring system lets you score and rate applicants based on their compatibility skills, allowing for an objective evaluation.

Filter and Sort

Use the filter and sort feature to go through different types of applicants based on their experience level, scores, and/or roles.

Bulk Actions

Bulk actions allow users to select multiple applicants simultaneously for quicker actions. Sorting through hundreds of applicants has never been easier.

Input Responses Directly

Input notes and responses all without ever leaving Hireflow. These responses can then be viewed again in the future if it’s time to make a decision.

01
Research

The first thing I wanted to do was to identify the pain points that execs face during the hiring process. Are there any behavioural patterns that are shared between the execs that might induce specific pain points? This step is crucial in providing insights and context during the creation of Hireflow.

User Interviews

I initially interviewed 6 club execs, all within UBC Launch Pad and who are mostly university students. I asked questions mostly about their prior experience in recruiting new club members and was provided with the past Google Form question and responses to better understand the behavioural and technical pattern of the hiring process. Here are the results:
     • Creating and sorting through multiple spreadsheets is very “time-consuming” and “resource-intensive”
     • Scheduling an interview time that works for both parties is hard to manage
     • Manually sending decision email to applicants is ineffective
     • Google Forms and Sheets create a lot of duplication, is resource intensive and very prone to human error.
     • Scheduling an interview through a single Calendly account and migrating the appointments onto a spreadsheet is time-consuming and intensive

02
Discovery

After compiling the data I have found from the research, I utilized Whimsical and began creating flowcharts to better visualize the end-to-end recruitment process for a clearer understanding of the pain points. I also created multiple case flows for the edge cases and also to identify which flow and/or feature works best for our project. Converting my research findings into a flowchart is very important as it allows me to tackle the problem more critically and systematically; visualisation is a very powerful method of processing mass data.

03
User Flow

Afterwards, I began creating the end-to-end product flow using charts to make sure that I didn’t miss anything and that every feature integrates cohesively with each other. It’s very time-consuming to make a whole product flow alone, but it’s completely worth the time and effort as it’s going to tremendously help me in creating the lo-fi wireframe later on down the line.

04
Lo-Fi Wireframes

Using Figma, we began creating the lo-fi wireframes to visualise what we had in mind. This step is necessary as it provides us with a rough estimate of what the outcome is going to look like. Moreover, since lo-fi wireframes are generally easier to create and fix, the developers can begin to visualise the development early.

05
User Testing

With the lo-fi wireframes ready, we did a thorough user testing with the president of UBC Launch Pad, Rob, to hear his insights and feedback. Based on his crucial input, I then began modifying the wireframes to better accommodate UBC Launch Pad’s specific needs. More specifically, he wanted the pipeline shortened to be more effective and to have separate pages for the sorted and unsorted applicants.

06
Hi-Fi Prototypes

With everything laid out and ready to go, I moved on to the (arguably) most fun phase of the whole design process: designing the Hi-Fi prototypes. Still utilizing Figma, I began bringing our wireframes to life with wonderful design entities such as: colors, illustrations, content writing, etc.

What I Learned
⏱  Teamwork Synchronization

Throughout the duration of this project, the team were working asynchronously throughout multiple timezones as a result of COVID-19. Hence, I learned a lot about teamwork and syncing up with people from different time zones.

✨  Design ≠ Pretty Interfaces

Designing is not all about creating prettiest interfaces. Sure, it’s one thing to make it look visually appealing in the end, but most importantly, I learned that tailoring your product exactly to your user needs is ultimately the goal that I need to strive for as a designer.

📊  Data Visualization

Converting research findings into flowchart helps tremendously in identifying pain points and helps me see my project from an unseen perspective. Even though it’s time consuming, it’s very much worth it to have my research data visualized in the form of flowcharts.

Play with the Prototype

Play around with this project and explore on your own!

Development Process 🤖

FRONT END ARCHITECTURE

Sidebar, Dashboard Header, Dashboard Buttons, and Dashboard List.

Each of these major components utilizes reused instances of child components. The Sidebar contains Sidebar Link components, which allow for navigation between the main UI views. The Dashboard Header contains cards that allow the user to choose which applicants they would like to view based on the screening stage (i.e., Application Reviewed, Scheduled For Interview, Interviewed, Final Decision). The Dashboard Buttons component contains filters, which provide further customizability for the user regarding what types of applicants they would like to view. The Dashboard List contains cards that display applicant names as well as any relevant buttons/scores for that applicant.

DASHBOARD MANAGEMENT

Tracking the applicants in the pipeline.

There are five arrays that allow for applicant tracking, each of which correspond to a different screening stage:
• Pending Applications
• Application Reviewed
• Scheduled For Interview
• Interviewed
• Accepted or Rejected.

Each applicant object also contains a status property that represents where they are in the screening process. Once applications are imported from Google Sheets, every applicant is placed in the array that corresponds to their status.

The status property is also used to determine which applicants are displayed on the Dashboard, depending on the screening stage that the user is viewing. Only certain buttons are displayed within each applicant’s card depending on their current screening stage. For example, only the “Reject Applicant” and “Schedule For Interview” buttons will be rendered next to each applicant name if the user is viewing the “Application Reviewed” stage. Interacting with these buttons will move the given applicant forward in the screening process and when this happens, the following events occur:
a. the applicant is removed from their current array and placed in the array that corresponds to their new status
b. an HTTP PATCH request is made to the server to update the applicant status

In addition to these two events, if an applicant’s score (i.e., the Interview score or the initial application Screening score) is created or updated in the process of moving an applicant from one screening stage to another, an HTTP POST request is made to the server.

BACK END ARCHITECTURE

Hireflow is built on a server-client architecture.

This allows web-browsers (clients) to visualize and interact with data in our backend (server). Our backend consists of a Node server to facilitate communications via our RESTful API, as well as a MongoDB database to store our application’s data such as its users, applicants, reviews, and sheets. Our API endpoints were developed using Express framework and our controller functions communicate with our MongoDB instance using the Mongoose library.  The Node server and MongoDB instance were both dockerized and deployed on Heroku.

BACK END API

Following an object-based NoSQL database design, designing a RESTful API was simple.

Each of our models: users (interviewers), applicants (interviewees), grades, and sheets (for Google Sheets integration) were modifiable through GET, POST, PATCH, and DELETE requests. The API endpoints are secured through middleware functions that check the user’s cookies to verify authorization.

GOOGLE OAUTH AND COOKIE MANAGEMENT

Using Google OAuth for authentication.

Hireflow uses Google OAuth to authenticate users on both the client and server-side, and provide seamless integration with Google Sheets. When a user logs in, a Google Auth token is stored as a cookie in the browser and is attached to API calls to the server to authenticate the user. This grants the user access to the application and prevents unauthorized access. The Auth token is also used to access to user's Google Sheets, which can then be parsed to import applicants into the database.

INFRASTRUCTURE

Optimizing and making sure Hireflow runs for everyone.

Building and running the application can be a challenge in a cross-platform team. Our developers used a combination of Windows, MacOS, and various Linux distributions. To simplify running the application and ensure that local builds behaved the same as deployed ones, we used Docker Compose to spin up a client, server, and MongoDB database on containers.To keep deployments frequent and agile, we employed the CI/CD paradigm. Any changes marked for review were run against our suite of unit tests. Upon successful merging to main, the main branch would be tested again. Once everything passed, it was automatically built and deployed to our Heroku instances. As a result of heavily automated deploys, our product was often successfully rebuilt several times a day.

You’ve reached the end. Thank you for reading!