# How to Build a Recruitment System for Your Agency

> You can build an agency recruitment system in a no code app builder such as Noloco in four steps: set up the databases, build the navigation, build the pages, then build the individual record pages. The result is a custom internal tool where applicants apply through a public form, interviewers log in to see their own interviews, and your team tracks every applicant through the hiring stages.

Source: https://fluxomate.com/blog/build-an-agency-recruitment-system.html  
Published by Fluxomate (https://fluxomate.com/), 2024-07-03. Section: Internal platforms.
Video: https://www.youtube.com/watch?v=3-qE8-RFu0g

## Key takeaways

- Build the database first, because it is the back end that everything else in the app depends on.
- Use five databases: applicants, positions, interviewers, departments and users, linked together with link fields.
- A public form lets applicants apply without logging in, and each submission lands in your applicants database.
- Filters on a page or a calendar mean each interviewer only sees the applicants and interviews assigned to them.
- Buttons on a record page can assign interviewers and log interview notes and scores in one click.
- Automation tools such as Zapier or Make can sit on top later to email applicants and create tasks at each stage.

## Step 1: Set up the five databases

A recruitment system for an agency should let you track applications, see key application stats, get a clear overview of every open position, and let interviewers log in to see the interviews coming up for their own roles. It should also let your team admins check that interviews are being handled well.

The approach here is a fully custom internal tool built in a no code or low code app builder. We use Noloco for this because it is easy for a client's team to maintain once the build is handed over. Other builders such as Bubble can do the same job, so test a few free trials and pick the one that suits you. The method below applies to any of them.

Every internal app starts with the database. Before you build anything, map it out in a document so you can see every field and how the databases connect. A field is one piece of data you track for each row, such as an applicant's name.

For recruitment we use five databases:

- Applicants, to track everyone who applies.
- Positions, to show the jobs you have available.
- Interviewers, for the people who can take interviews.
- Departments, because each position sits inside a department.
- Users, so each interviewer can be given a login and a role in the app.

## Which fields should the applicants database have?

The applicants database holds the most fields. Keep them as simple field types so the form and the board work cleanly later.

- Name and email, both set as unique.
- Stage, as a single option select: candidate, contacted, interview scheduled, interviewing, decision needed, hire and no hire.
- Phone number, social profiles, current role and location.
- Resume, as a file upload that allows multiple files.
- Why they applied, as long text.
- For each of two interviews: the interviewer, the interview date and time, the notes, and a score from 1 to 5.
- Applying for, as a link to the positions database.

## How do link fields connect the databases?

A link field pulls a record from another database. Create the plain fields first, then add the link fields once all the databases exist, because it is much easier that way.

The links we set up: an applicant links to the position they are applying for, and to a first and second interviewer. A position links to its applicants, its interviewers and its department. An interviewer links to their first and second interviews, their positions and their user login. A department links to its positions and interviewers.

To give the app something to show while you build, import some sample data from a CSV file. You can ask ChatGPT to generate one for your fields. Imports handle link fields poorly, so tidy those up by hand afterwards.


## Step 2: Build the navigation

The navigation is how people move around the app. Recruitment is simple here because interviewers and team admins see the same thing, so you do not need different navigation bars for different roles.

Add these pages: all applicants, applicant status (a blank page for charts), applicant board, positions with two nested views for open and closed positions, interviewers, and departments. Place the navigation at the top or the side, and add your colour and logo.


## Step 3: Build the pages

Each page is a different view of the same data. These are the ones to build:

- All applicants: switch the layout from a table to cards, choose which fields show on each card, and add conditions so empty fields such as resume or location stay hidden. Add a search bar and filters for stage, position and location.
- Applicant form: turn the form on as a public form. Remove the stage field because you update that yourself, make every field required, limit resume uploads to images, text and documents, and rename questions so they read well to applicants. Applicants get a thank you message after submitting.
- Applicant status: a blank page so you can mix data from different databases. Add a line chart of applicants by day, a bar chart of applicants by stage, and a pie chart of open against closed positions, with filters for stage and position.
- Applicant board: change the applicants collection to a board so cards move along the stages from left to right. Hide the fields you do not need, and show interview scores only when they exist and the applicant is at the interviewing or decision needed stage.
- Open positions and closed positions: use a page level filter on position status, so one page shows only open roles and the other only closed ones.
- Interviewers: use cards with a circle profile image and hide long collections to keep each card clean. Turn on inline editing so you can change values without opening each record.

## Step 4: Build the record pages

Record pages are where people actually use the app, so it is worth getting them right. For each record type, add two tabs: a general tab that shows a clean summary, and an editing tab with a details block that includes every field apart from the default ones. That way someone can change any information without going into the database.

On the applicant page, add a first interview summary and a second interview summary, and set each to show only when its interview date is not empty. Add a progress bar so the stage can be changed with a click. Then add two action bars with modal buttons:

- Assign interviewers: an update record action showing the first and second interviewer fields, left blank so the person pressing it chooses.
- Second interview summary: an update record action for the second interview notes, the score and the stage, so an interviewer can log the outcome without leaving the page.

## How do you show each interviewer only their own work?

On the position record page, add a collection of applicants filtered to that position, and a collection of its interviewers. Change the add button on the interviewers collection so it edits related records. That lets you pick existing interviewers and unlink them rather than creating a new one.

On the interviewer record page, add the name, email and join date as a highlight. Add two calendars from the applicants database, one for first interview dates and one for second interview dates, each filtered to that interviewer. Add a tab of applicant cards using two filters, so it shows applicants where the first interviewer or the second interviewer is that person. When an interviewer logs in, they see only the applicants and interviews that belong to them.


## How can you automate the recruitment system?

The app works on its own, but automation takes it further. Most no code builders have a built in workflow tool, but connecting Zapier or Make gives you more integrations and lets you build more complex flows.

Two automations are worth adding. First, a meeting automation: when an interview is booked, find the applicant record or create one, update the databases, and email both the applicant and the interviewer. Second, stage emails: when an applicant moves to a stage such as hire, email the applicant, email the interviewer and create a task for the interviewer. Repeat for each stage so everyone knows what happens next.


## Questions people ask

### Which tool should I use to build a recruitment system?

Any no code or low code app builder can do it, including Noloco and Bubble. We use Noloco because it is easy for a client's team to maintain after the build. Most offer a free trial, so test a few before choosing.

### Can applicants apply without logging in?

Yes. In Noloco you can turn on a public form for the applicants database. Applicants fill it in, see a thank you message, and the submission is saved as a new record.

### How do interviewers only see their own applicants?

Add filters on the collections and calendars of the interviewer page. Each one shows only records where the first or second interviewer matches that person, so every interviewer sees their own interviews and applicants.

### How do you add automation to the system?

Connect a workflow tool such as Zapier or Make. A meeting automation can create or update the applicant record when an interview is booked and send emails, and stage based emails can notify the applicant and create tasks for the interviewer.

Tools used: Noloco, Google Docs, ChatGPT, Zapier, Make.com

Free templates for this guide: https://fluxomate.com/resources.html?r=build-an-agency-recruitment-system
