If you want to jump straight into creating the ATS, you can skip my rant and scroll down to the section titled ‘Creating our own ATS’.
Why we needed an ATS
Have you ever thought to yourself, “There’s too much to do and not enough people to do it”?
If you’re working at a high growth startup, I am 100% sure this thought visits your mind frequently. And if you’re the founder, one of your biggest challenges is hiring the right people. And fast!
My current predicament was similar. I’m a co-founder at Cliff.ai and we are creating the antithesis of dashboards. We had an urgent requirement for 6 positions (across product and engineering), hiring was my Priority #1.
For every position we have, we got 100+ applicants. Managing the entire operations of hiring was getting very overwhelming.
Furthermore, all these applicants were coming to us through:
- Job boards: Angel, Indeed, Naukri
- Paid listings: Linkedin
- Campus hiring drives
- Recruiting agencies
- DMs on Linkedin and Twitter
- Cold emails
Talking to so many applicants across multiple channels was a mess!!
We figured that all problems would be solved if:
- We implemented an Application Tracking System (ATS) to manage all applicants in one place.
- We hired a dedicated recruitment manager to operate the ATS, pre-screen applicants, handle all communication, schedule interviews, and any other operational work that might arise.
Getting a recruitment manager turned out to be the easy part. But finding an ATS proved way harder than it should have been.
The search for an ATS begins
When we realised we needed an ATS, our first thought (of course) was to look for a readymade ATS platform. How hard would that be?
A simple search on Capterra will show you 559 such platforms.
We spoke to sales reps, got on demo calls, signed up for free trials, and started using some of these platforms. This went on for a whole week. To summarise our learnings:
“All ATS platforms were either shitty or too expensive”
(Special mention to Zoho Recruit — Absolute nightmare 🙀)
Creating our own ATS
First we made a list of the features we wanted our ATS to have. These were:
- A central place for all applicants
- The initial application and all subsequent assignment submissions from applicants should be automatically entered in the ATS (no manual data entry)
- Custom hiring stages for each job position
- The ATS should allow us to directly send emails to applicants (using templates)
We already had a list of Job openings. We needed to plan the various rounds for each role. For example, for one of our Software Developer roles we decided to have the following rounds:
- Initial Assessment
- Video Assessment
- Coding Round
- Take Home Assignment
- Technical Interview
- HR Interview
Similarly, we planned the sequence of rounds for all our open job positions.
Airtable provides a template for an ‘Applicant Tracking System’. It has the basic tables in place like Applicants, Positions and Interviewers.
We used this as base, and added a new table for each assessment round (mentioned in Step 1) e.g. a new table called ‘Initial Assessment’, a new table called ‘Video Assessment’ etc.
Why did we do this? We have a different person evaluating for each role, which means the marketing person doesn’t need to check the coding assignments, and so on. To make the whole process neater, we separated the different assessment rounds.
Our first aim was to get applicants from all these various platforms (Linkedin, Angelist etc.) to our ATS.
Airtable lets you create many views for the same table. So we created a Form view for our ‘Applicants’ table. Here we created a small form where an applicant can fill their details (general stuff like name, email, position they are applying for etc.).
Airtable generates a link for every form you create. Once the form is ready, you can use the ‘Share form’ option to share the link with your applicants, and their responses will directly be recorded in your ‘Applicants’ table. Just click on the Grid view to see all responses!
So now all your applicants will be logged into your ATS! 🎉
We went to our ‘Initial Assessment’ table and created another Form view.
Here we created a short form with questions to get a general understanding about the applicant, their Resume, prior experiences etc.
You could club this together with the previous Application form, but we wanted to keep the ‘Apply Now’ form really really simple and quick, to encourage more applicants.
Two short forms seem friendlier than one really long form — Me
In the ‘Positions’ table (it comes with the template), we created a new column for each round, e.g. a column called ‘Initial Assessment url’, ‘Video Assessment url’ etc. This was of the type URL.
The purpose of this column is to associate each open position with the url corresponding to each assessment round. Why is this useful? When we create automated email templates, we can ensure the applicants get the correct assessment url.
Since we had a common form for Initial Assessment, we added the Initial Assessment form’s link (as obtained in Step 4) to each row in the ‘Initial Assessment url’ column.
For Video Assessments, we are using a platform called Hireflix. We created video assessments for each position, and added that unique link in the ‘Video Assessment url’ column for the corresponding position.
For Coding Assignments, we are using an online compiler called Repl.it. Once again we just added the url to the respective position.
If you’re using the template I mentioned in Step 2, your ‘Applicants’ table is already linked to the ‘Positions’ table by default.
In the ‘Applicants’ table, we created a new column for each round. We named these columns ‘Send Initial Assessment’, ‘Send Video Assessment’, ‘Send Coding Assignment’ etc. These were all of the type ‘Checkbox’.
Along with this, we created a new Grid view for each assessment round. We named these views the same as the columns (just for convenience. You can name it whatever you want).
For example, in the Master view of ‘Applicants’ we have a column with a checkbox called ‘Send Initial Assessment’, and we also have a separate view called ‘Send Initial Assessment’.
Now we made the following configurations in the ‘Send Initial Assessment’ view:
- In the ‘Hide fields’ option, we hid all fields except ‘Email’, ‘Name’ and ‘Send Initial Assessment’
- We created a filter Where Send Initial Assessment is ✅
(repeat for all assessment rounds)
Now, the moment you put a tick against any applicant in the ‘Send Initial Assessment’ column of the master view, a new row will get added for that applicant in the ‘Send Initial Assessment’ view.
This makes it easy to create Zaps (see next step).
Now we create our Zaps!
We created a Zap between Airtable and Gmail.
Trigger: whenever a new row is created in the view ‘Send Initial Assessment’
Action: send an email to the applicant with the url for the Initial Assessment
We customised our email templates to include the applicant’s name, position they are applying for, and the corresponding assessment link.
We created these Zaps for each of our assessment rounds. Zapier provides 3 zaps for free. We had a few more than that, so had to chose the paid plan (which isn’t much…starts at $20 a month).
Why is this great? Now every time we check the box for ‘Send initial assessment’ for an applicant, the applicant gets an email with a link to the Initial Assessment form. Same for every round.
Now our recruitment manager’s job is simply to manage one ATS. Simple, organised, efficient.
With this easy 7-step process, you can get started with your own ATS.
- It’s cheap (or even free, if you can get it done within 3 Zaps and skip the video assessment)
- It’s highly customisable
- It’s actually a lot of fun to build!
I’m sure this process can be made even better. Would love to hear your ideas around this, or other interesting no-code projects you have made/seen. Hit me up on Twitter or firstname.lastname@example.org!