This repository is home to asana-hire
, an open source (view license here) recruitment management web
application designed for organizations that use Asana. This app is simple to use, lightweight, gives you insight into
your hiring process, and automates your administrative work. Read on to learn more!
Here's a quick demo of the application, including pages for individual jobs and candidate management.
Here's an example of an anonymized and confidential demographics dashboard populated by the application.
- What this application can do
- Background and motivation
- Getting started
- Create a pipeline that collects all your hiring data automatically, with strict separation of concerns to protect sensitive candidate information
- Track applicants across a single hiring process or across all processes
- Copy applicants from one Asana project to another while hiding sensitive data from the interview committee
- Send applicants personalized update emails, including receipt of application, release from process, or custom messages
- View anonymized hiring data in charts and graphs through Asana's reporting feature
- Secure all this data with organization-bound Google OIDC and OAuth2 user authentication and authorization
- Run or deploy the application easily using Docker, both during development and in production
- Secure secrets and define your deployments just in time with environment variable configuration
I first started developing this application to do my job more efficiently at my organization. The tool started out as a few simple Java classes I wrote to copy data from one place to another, run analytics, and send automated emails. As we've adopted the tool at our organization, the application has necessarily grown from a set of command line tools to a full stack site.
This application has administrator, hiring manager, and applicant users, with hundreds of monthly users. Since anyone can apply to any open position at any time, and since hiring managers can review applications asynchronously, the availability requirement is high. To achieve this, the application uses Asana as a data store.
Asana is not perfect for this use case. The graph model used under the hood there is slow to retrieve large amounts of distributed information. This introduces latency to this application. However, Asana has good usability for our staff. It also comes at no additional cost; we already use the tool, while would have to pay for a managed database service. Also, we can easily export and report on data within Asana.
In short, Asana gives high availability and non-techie user-friendliness in exchange for additional latency when this application is used manually. This is a worthwhile tradeoff for our use case!