AI Powered Open-Source Applicant Tracking System and Search Engine
Live Demo
Check out the live demo here.
Complex Filtering
Filter applicants based on location, application status, years of experience or given stars.
Alternative Scoring Systems
Choose among different scoring systems to rank applicants:
Applicant Tracking System
Status
Track the application status of candidates.
Notes
Take notes on candidates to keep track of your thoughts.
Star Ratings
Rate candidates with stars to easily filter them later.
Resumes
Easily view resumes of candidates via uploadthing.
Socials
Reach out to candidates via their email or social media profiles.
Role Based Authentication
Protect your app with role based authentication via Clerk.
Admin Dashboard
Manage Positions
Open, close or delete positions. Share application links with candidates.
Manage Application Methods
Enable or disable applications via email or through the app.
- DB: Upstash Redis
- VectorDB: Upstash Vector
- Scheduling & Serverless Function Orchestration: Upstash QStash
- App logic: Next.js
- Deployment: Vercel
- Auth: Clerk
- File Storage: uploadthing
- LLM & Embedding Models: OpenAI
- UI Components: NextUI
Step 1: Deploying with Vercel
- Click the button below.
- Connect your GitHub account & create a Git repository as described.
- Fill the environment variables as described in the next steps.
Step 2: Connect your mailbox
Note: This tutorial will be based on Gmail, but you can set up an IMAP connection with any other provider.
- Complete the following steps described in this tutorial.
- Turn on Less secure apps.
- Create and use App Passwords.
- Turn on IMAP in Gmail.
- Fill the following environment variables in Vercel:
- IMAP_USERNAME: Your mail address
- IMAP_PASSWORD: App Password you generated
- IMAP_HOST: imap.gmail.com
- IMAP_PORT: 993
Step 3: Set up Upstash
-
Open an Upstash account.
-
Switch to Redis tab in Console.
-
Click Create database.
-
Think of a name and select a primary region close to your users.
-
Click Next -> Click Create.
-
Fill the following environment variables in Vercel, which can be found and copied in your database page:
- UPSTASH_REDIS_REST_URL
- UPSTASH_REDIS_REST_TOKEN
-
Switch to Vector tab in Console.
-
Click Create Index.
-
Think of a name and select a region close to your users, Embedding Model, Dimensions and Metric should be set like below.
-
Click Next -> Click Create.
-
Fill the following environment variables in Vercel, which can be found and copied in your index page:
- UPSTASH_VECTOR_REST_URL: Your endpoint
- UPSTASH_VECTOR_REST_TOKEN
-
Switch to QStash tab in Console
-
Fill the following environment variables in Vercel, which can be found and copied in your QStash page:
QStash free plan has a limit of 500 messages per day. This will limit your mail pipeline to approximately 200 applicants per day. We recommend upgrading to the pay as you go plan. See QStash Pricing for more information.
Step 4: Set up uploadthing
Step 5: Set OpenAI API key
-
Go to OpenAI Platform -> API keys and login to your account.
-
Click Create new secret key.
-
Don't forget to copy and save your key. Fill the following environment variable in Vercel:
- OPENAI_API_KEY
Step 6: Set up Clerk
- Sign in to Clerk and create an application.
- Select a project name and your preferred sign in options.
- Fill the following environment variables in Vercel, which can be found and copied in the API keys tab:
Now we will create ourselves user and make it admin. We will only need to do this once as Recruiter and Admin roles can easily be given in Admin Dashboard inside our application.
- Switch to Users tab.
- Click Create user.
- Set up an email and a password, click Create.
- Click on the created user to go its page.
- Scroll down to see Metadata section, Edit public metadata.
- Give admin role as shown below, click Save.
{
"role": "admin"
}
- You should see something like this:
- Finally, switch to Sessions tab and edit session token.
- Set it as shown below:
{
"metadata": "{{user.public_metadata}}"
}
Step 7: Set your application URL
- Fill the following environment variables in Vercel:
- NEXT_PUBLIC_URL: URL of your application (e.g. purple-squirrel.vercel.app)
→ Step 8: Click deploy & visit your site, it will guide you through the rest of your setup!
A local tunnel is required in local development since QStash requires a publicly available API to send messages to. This tutorial is based on localtunnel.me but you can use any service of your choice.
Step 1: Create a local tunnel
npx localtunnel --port 3000
Step 2: Fill environment variables
Copy the output URL and fill the following environment variable in .env.local
LOCAL_TUNNEL_URL=<YOUR_URL>
Fill the rest of the environment variables in .env.local
as described in the Deploy your own section.
Step 3: Install dependencies & run the project
npm install
npm run dev
→ Step 4: Visit your site at http://localhost:3000
In local development, mail pipeline is triggered only once instead of creating a schedule since local server is not expected to be always available.
We welcome contributions to improve this project. Please feel free to submit issues or pull requests.