How to develop an ATS / software for recruitment and not to screw up

Some companies decide to develop software specifically for their own recruiters. Technologically, this is a difficult task.

I know how to solve it in detail as I’ve directed the development of a successful cloud-based / enterprise recruitment system from the scratch.
Read the article and you will learn:

  • Functional requirements for modern recruitment software;
  • Security requirements;
  • Some technical recommendations;
  • Fine details regarding support and further development;
  • Recommendations on stuff to do before starting the development;
  • How to screw up the whole thing.

I hope that my advice will help you to plan your resources for the project more efficiently to make it better and faster.

What is a recruiting system (ATS)?

Recruiters are people who pick the staff.
The system for recruitment automation is a software solution providing recruiters the following:

  • Convenient work with candidates and vacancies database;
  • Teamwork, sharing responsibility and setting reminders;
  • Simple and automatic maintenance of the database and personnel selection.

Recruiters complete the database of candidates in order to keep in touch with them and to save the history of communications and results of each job applicant.
Maintaining the database should be fast, easy and should not require any additional actions from a user. Otherwise, the intensity of efforts needed to deal with the database nullifies all the advantages of the automation tools.

What should an ATS be like? The requirements.

I. Minimum functional requirements

The obligatory requirements the system should not be started without are:
1. Adding and editing vacancies, candidates, customers in the database. The availability to leave comments on them.
2. Search on vacancies and candidates by several criteria.
3. Easy maintenance of the database. Basically, this important function comes down to ease and speed up the input of candidates’ data to the system; because recruiters add a pretty large bunch of CVs to the database — hundreds of them every month.
Candidates can be added to the ATS from:

  • resume files;
  • LinkedIn profiles (online);
  • CVs on the job boards (online).

Ideally, these actions should be possible to do “in one click”. It’s quite difficult to manage. But if recruiters can not fill the database quickly, all the rest benefits of an applicant tracking system will not cover this shortcoming.
What if recruiters receive 30-200 applications per job opening placed on the online job board? Manual input of them to the system is time-consuming, even if one needs to add only some of them. But if recruiters don’t transfer all the information regarding applicants to the database it will affect the further effectiveness of their work.
There is a separate employee engaged in routine tasks in some companies. This can solve the problem. However, the extra-worker costs money, human works slower than software and brings mistakes and biases.
I’ve pictured arguments and examples intentionally since the success or failure on this point determines the success or failure of the whole system. There are many cloud-based solutions for recruitment including those been developed specifically for the company. Numerous of them end up falling through exactly because of ignoring the importance of resume parsing (autofill of profiles with data from the downloaded files) and integration with LinkedIn, job boards and email.
4. Protection against duplication of candidates (their CVs) in the database. Don’t underestimate the importance and complexity of this task. Later, I will tell you why.
5. Joint work mode for the hiring team with shared vacancies and candidates database. This includes the possibility to appoint responsible recruiters for specific vacancies and candidates.
6. Managing the user roles and optional restrictions of certain functions in order to avoid errors or removing important information.
7. Fixing each action by the user in the system’s activity log. This feature allows generating reports on the work done, statistics of the recruiters’ performance and filling of vacancies, as well as to know exactly who, what and when did in the system.

II. Mandatory functional requirements

They’re very important. Certainly, you can launch the ATS without meeting these requirements and use it for some time receiving feedback from recruiters, but without them, the system is not complete and leaves many manual routines for recruiters to do. These requirements are better to be met before the start or as soon as possible after it.
1. Full-text search on CV files.
2. Getting notifications about important actions and events via email and in the interface.
3. Integration with online calendars (Google Calendar, Outlook Calendar, etc.).
4. Convenient and customizable stages for candidates on vacancies (workflow of vacancy) and refusal reasons for candidates.
5. Integration with email:

  • transfers CVs directly from inbox to the resume database;
  • stores the whole story of correspondence with candidates in their profiles in the system;
  • enables sending an automatic reminder to the candidate about the interview with address and the route attached.

6. Reports on the work done on the vacancy.
7. Report on each recruiter’s performance for a specific period.
8. Search by candidate’s name including its transliteration, just like it is on Facebook.
9. Clear and “intuitive” interaction with the program (and the entire UX interface as a whole thing).
Growing complexity of an applicant tracking system makes the introduction of new features more complicated. How to place everything in the interface correctly, to name all the elements and to put the accents properly, so that all functions would be clearly available and handy? One needs to give users powerful and convenient functions and try not to overload the interface at the same time.

III. Advanced requirements

They are meant to increase the workflow efficiency. Some companies need the certain points as mandatory features, and others don’t need them at all. It depends on requirements of your HR department.
1. Report on the sources of applicants.
2. Calculation of the average salary of candidates selected for a position.
3. The option to publish a vacancy in social networks in one click. In addition, the option to create the separate vacancy page to let candidates send their CVs directly to the ATS.
4. The page containing the list of the company’s vacancies, which can be integrated to the corporate website.
5. The option to give the customer direct access to job vacancies in the account, so that he can track all selected resumes and evaluate them without communicating with the recruiter.
6. Matching (automatic suggestion) candidates with job openings: the system determines the most suitable candidates for the given vacancy requirements basing on their profiles in the database and offers them to the recruiter.
7. Bulk uploading new resumes to the database in the form of archive with CV files.
8. Creating tasks for candidates and vacancies along with reminders.
9. The mobile application or a convenient mobile version of the website.
10. Mailing vacancies to the candidates via email.
11. API for integration with corporate site or internal programs of the company.

IV. Security requirements

1. Password encryption. With a salt.
Many programmers and software architects do it as a part of the system without any doubts. At the same time, many people ignore the password encryption though.
There was a leak in the Yandex database recently with email user logins and passwords been stolen. Previously, even the top online job boards used to send the “Forgot password?” requests to the users, then simply sent them their passwords via email unprotected. It turns out that they are kept in the database in the open form. Afterwards, most websites stopped doing so and started to give a link to change the password. However, this still does not mean that user passwords are encrypted.
Why should you do this?
Passwords kept in the open form can be stolen by the admin and “leaked” to the web or secretly transferred to someone. Management won’t even know anything about the fraud. Third parties will be able to copy data from the system accessing it by logins and passwords, as they all are transparent and easily available.
I prefer not to rely on the honesty of the database administrators, tech support staff or someone else. When users learn about the leakage of their personal data, there will be huge damage to your reputation done.
The professional approach is to encrypt the passwords. It is better to avoid risks of data leakage. If someone gets a well-encrypted password it’s almost impossible to decrypt and use it.
2. Encrypted SSL connection.
This technology protects the data from interception. If the website URL has “https” in it, the data from the browser to the server is transmitted in the encrypted form and it would be useless to intercept it. Login and password would not be available then. It is easy and cheap to do for any website indeed.
3. Backups (system changes rollbacks). Needless to say.

V. Important technical requirements

1. Permanent user sessions that do not occupy random access memory.
We also used to believe that re-authorization was not a problem. The reality is users often open multiple tabs simultaneously in the system they work in. If the user session ends in all tabs when the server or software is restarted, it may cause trouble.
2. Using the special “engine” is a must to provide the full-text search by CVs.
It may be Apache Solr, as for instance. It’s unlikely that it will properly work immediately after the implementation. It must be tuned in the right way; many tests would need to be done for this. The task requires intelligence and creativity.
3. The database is increasing rapidly.
Therefore, you have to build effective indexes and write effective SQL queries.
4. Developers should know how to find and fix memory leaks.
This problem arises sooner or later while developing the complex software. The chance increases, if the development was performed by not very proficient coders. The solution includes setting up the software monitoring, different features combinations testing, and comparing the memory dumps of the program.

VI. Nuances of software support and development

A good recruitment software is not the case when you have launched it once and then it can run without you getting involved in its further development. Let me share with you some main points from my experience:
1. Integration breaks occasionally due to updates of LinkedIn, job boards or email services.
2. The browsers new versions cause changes in the user interface. There can appear some visual flaws, “broken” elements, or something just can stop working at all.
3. Wide variety of resume and vacancy options predictably leads to the cases of shortcomings in the software interface, parsing or recommendations. Developer team constantly has to look for new solutions, take different reasons into consideration, improve system algorithms.
4. The world doesn’t stand still. Everything’s evolving. Recruiters always need new advanced features. If the software can’t provide them, its users begin to lag behind their counterparts (competing companies).
At the end of the day, it negatively affects the speed and quality of the vacancies filling, then the company’s financial results. The system improvements constantly require attention and expenses.
5. Usual user requests and troubles, which sometimes are quite hard to fulfill. One needs to ask for screenshots, try to understand explanations — the solution often requires developers’ involvement.

VII. Things to do before the development

The development of the viable recruiting system “from the scratch”, meeting at least minimum and mandatory requirements, may take up to 35-50 person-a-months of work.
I doubt the fact that realizing this project would be more profitable than buying a ready-made software, even customized for the specific company.
Here are some tips on what you need to do before start coding:
1. Describe particularly all features the software should have to satisfy recruiters’ needs. You can use those mentioned above.
2. With the assistance of software architect calculate the total funds required for the entire development, as well as the team composition and the project implementation period.
3. Decide what solution to use for recruitment while the system is in production.
4. Request a number of commercial offers from the side suppliers of professional recruitment systems.
Maybe, you’ll even end up buying ready recruitment software without involving the working and financial resources of your own company.

VIII. How to screw up

1. Spend too much money.
While the average cost of a person-a-month for the company is 1500 USD (at a quite moderate wage), the total cost of the entire product development would be from 52500 to 75000 USD. Let me remind you, that the calculation is based on the declared 35-50 person-a-months of work.
For example, such tech giants as SoftServe and GlobalLogic have been developing their own recruiting systems for several years by now (!).
There is still an unpleasant point: it’s a shame to drop the project when it’s almost ready and a lot of money have been invested in it.
Torments of such a kind are common for the inexperienced poker players who have already put at stake a lot and continue to raise bets even when the game is not in their favor.
2. Develop the system for too long, forcing your recruiters to suffer be inefficient all this time.
3. Develop, work and leave it unfinished. Otherwise, release the software in such a deplorable state that your recruiters will refuse to use it.
It happens when the executive or HR director is replaced, i. e. one of those decided to develop the software.
Anyway, I wish you to succeed in this addictive and fascinating task!
Vladimir Kurilo
CEO @CleverStaff