Every company has a unique hiring requirement and they follow their own style of the hiring process that works for them.
We mostly have openings for developers in our company. We post our job openings on platforms like AngelList, Indeed, LinkedIn, and Internshala. We usually get 400+ candidates for a single post.
Our selection process
- Basic shortlisting questions (Availability, office timing, knowledge about required technologies).
- Sending candidates a programming problem to solve.
- Checking the submitted solutions, asking candidates to make fixes, or moving them to the next round.
- Checking team fit - since we are a small team we want to make sure that the candidates are fit for the team, so we do a first-round interview to check team-fit.
- The final interview consists of team asking technical questions and solve live problems.
- Finally the candidate is hired!
What we used to do - Gmail Labels
Our first solution was to ask candidates to send us the solution via Email and we used Gmail labels to process their application further.
- Shortlisting on the platforms based on availability, look at resume, etc.
- Sending shortlisted candidates the first problem to solve.
- Gmail Labels were made for each round of the job post.
- We used to add labels to each candidate when they sent the solution - Correct, Maybe, Rejected, etc.
- Labels were updated when their round changed, they were rejected, or moved to Maybe (Not sure about these ones).
Problems we faced
The solution works but it can get out of order quite fast, we faced these problems -
- Tough to manage 400+ candidates this way.
- Aggregating Candidates from different platforms was a major issue, we had to reach out to candidates on different platforms, update their status, etc. We would often miss doing this for some of the candidates.
- Managing candidate application and status.
- Checking submitted solutions over Email and asking them to fix issues. The same candidate can send multiple emails instead of replying to the same thread and that makes it worse.
- Scheduling Interviews, which we had to do manually. We had to do too many back and forth about availability conflicts. Also, often candidates would miss the interview and we had to join the call and wait for them.
- We didn't have a dedicated HR personnel, so doing this part-time and keep it in order is a tedious process.
Our Custom hiring software (Applicant Tracking System - ATS) - Automating stuff!
We finally got tired of Gmail labels since it was taking too much effort to maintain and was getting in our way to hire people faster.
Why did we choose to build a custom hiring software (Applicant Tracking System - ATS) instead of subscribing to services
- We didn't find one service which does everything we wanted, there was still a lot of manual effort required to make things work.
- Subscribing to too many services meant increased cost, hiring services are not cheap and we preferred to code our own instead of paying monthly fees.
Problem 1: Candidate Aggregation + Basic Shortlisting
We used to post the same job on multiple platforms and each of these platforms had their own candidate management, ways to contact candidates, statuses, etc.
This meant we had to contact candidates about updates on those platforms or send emails, manage stuff on those platforms.
We create the job with basic details on the app's admin panel -
Each job is added as a Trello board automatically.
A single registration form page for the candidates asking them to enter name, email.
A list of basic questions about availability, office timings, and knowledge about tech.
All candidates are added to a database and shortlisted candidates are automatically shifted to the next round.
Every candidate gets a unique link which they can use to track their progress.
All candidates are also added to Trello, one applicant has 1 card on Trello.
We also have the option to create various rounds for a job post on the app's admin panel. Each Round creates two lists/columns on the Trello board.
All of this really helps bring Job, Rounds, and Applicants data in one place on Trello.
Problem 2: Asking candidates to solve a programming question
Sending candidates questions manually via Email, Chat, etc. and following up with them when they submit their assignments and getting it to the right person to verify is a lot of work and can lead to mismanagement.
There are also scenarios where we will like someone's solution but will want changes on them, this leads to more communication with the candidates.
Shortlisted candidates get the programming question which is controlled by the app's admin panel.
Candidate can solve the problem and add the link of the solution.
Once a solution is submitted, candidate gets a acknowledgement.
The solution is automatically added to the candidate's Trello card. The candidate is also moved to a next card list, this helps us easily see a list of candidates who have completed their work.
We have also track all the comments on the card, if someone writes a comment starting with "@email" the message is sent to the candidate.
We also track any email that comes to our hiring email id from the candidates and add their message on the Trello card for easy tracking.
We can always use Trello's nifty features to add feedback, labels, etc to make things even more manageable.
Problem 3: Scheduling interviews
Ok, this one was the most frustrating one for us to manage.
Scheduling calls for each of the interview rounds for the candidates via Google calendar which has a Google hangout link as well, making sure the timing works for the interviewers.
Most of the time (~ around 50%), candidates won't show up in the interviews leaving us waiting for them on the call which was a waste of time.
We tried services like Calendly as well but that also gave the option to candidate to re-schedule the interviews, a lot of re-scheduling happened at the last minute. Some candidates booked multiple slots, not leaving anything for others.
There were days where we had 10 interviews scattered all over the day and 2 of the candidates would actually show but we would have wasted a lot of time.
We decided that we will always open slots for next 2 days from 3 PM to 7 PM.
Shortlisted candidates from programming rounds are notified over email about scheduling interviews.
We gave option to the candidate to select an available slot during those times.
They get a confirmation after they select a slot.
The selected slot is added to the candidate's Trello card.
If the candidate comes to their application page at the time of the interview, they see an option to join the call which takes them to a new Google hangout link.
We have also integrated to Slack, we get two types of notifications
- Every day at 11 AM, if there are any interviews it sends a list of all the timings and candidate details.
- Most importantly, if and when the candidate joins the interview we get a notification and also the Google hangout link to join. This way we don't have to join a call until someone comes for an interview.
Hiring / Rejecting Candidates
If we hire someone, we just tell them over the call in the final round or over the email.
If we want to reject someone, we archive the candidate's Trello card which sends them an email about it.
How did the custom hiring software (Applicant Tracking System - ATS) help us
- No management required - everything in one place - Trello.
- Money saved in long-run by not subscribing to multiple services.
- No candidate is missed due to mis-management.
- This also presents us with more integration options by using services like zapier.
Finally, if you are looking for a similar custom hiring software (Applicant Tracking System - ATS) for your company, feel free to contact us and we will get it done for you.