User Guide
HireLah is a desktop app that helps recruiters to manage talent and job candidates by tracking every step of the hiring process, from offering positions to scheduling interviews with candidates. It is optimised for Command Line Interface (CLI) users while still offering a GUI, so that power users can accomplish tasks much quicker by using commands
- Quick start
- Features
- Add
- Edit
- Delete
- List
- Passing Interviews :
pass
- Failing Interviews :
fail
- Accepting Interviews :
accept
- Rejecting Interviews :
reject
- Exporting Data :
export
- Clearing Data :
clear
- Viewing Help :
help
- Exiting the program :
exit
- Saving the data
- FAQ
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
HireLah.jar
from here. -
Copy the file to the folder you want to use as the home folder for your HireLah.
-
Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Type the command in the command box and press Enter to execute it. e.g. typing
help
and pressing Enter will open the help window.
Some example commands you can try:-
list -i
: Switches to interview tab and displays all interviews. -
list -a s/asc
: Switches to applicants tab and displays all applicants sorted by name in ascending order. -
add -a n/Benedict ag/20 g/M p/98123456 e/ben@gmail.com a/12 Kent Ridge Drive, 119243
: Adds an applicant namedBenedict
to the HireLah. -
delete -i 2
: Deletes the 2nd interview shown in the current interview list. -
export -a
: Exports the displayed data of all applicants in HireLah to a CSV file. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd -a n/NAME
,NAME
is a parameter which can be used asadd n/Benedict
. -
Items in square brackets are optional.
e.gn/NAME [t/TAG]
can be used asn/John Doe t/C++
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/C++
,t/Java t/C++
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/12341234 p/56785678
, onlyp/56785678
will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
exit
) will be ignored.
e.g. if the command specifiesexit 123
, it will be interpreted asexit
. -
The largest value for a positive integer is 2147483647, which is the maximum value usable for all the index.
Add
General command to add different data types into HireLah.
Format: add -TYPE …
- TYPE must take the form of
a
,i
,p
-
-a
to indicate adding an applicant -
-i
to indicate adding an interview -
-p
to indicate adding a position
-
Adding Applicant: add -a
Adds a new applicant to HireLah
Format: add -a n/APPLICANT_NAME ag/AGE g/GENDER p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…

- Age provided must be exactly two digits and should not start with 0 eg: “23”.
- Two applicants cannot have the same Name, Phone Number or Email.
- Gender must be M/F. (case-sensitive)
Examples:
add -a n/Benedict ag/20 g/M p/98123456 e/ben@gmail.com a/12 Kent Ridge Drive, 119243
add -a n/Max ag/15 g/M p/97123456 e/max@yahoo.com a/12 Kent Ridge Drive, 119243 t/Data Analyst
Adding Interview : add -i
Adds a new interview to HireLah.
Format: add -i APPLICANT_INDEX d/DATE p/POSITION_INDEX
- Date provided must be in format YYYY-MM-DD HH:MM.
- All interviews added have a duration of 1 hour.
- An applicant can only have interviews if they are at least 1 hour (60 minutes) apart. For example,
an applicant can have an interview at
2022-01-01 13:00
and again at2022-01-01 14:00
, but not at2022-01-01 13:50
. - An applicant can only have at most one interview for each unique position in the position list.
- An interview cannot be created for a Position that has no openings.
- An interview cannot be created for an Applicant that has already been hired.
- The
APPLICANT_INDEX
refers to the index number shown in the last displayed Applicant list. - The
POSITION_INDEX
refers to the index number shown in the last displayed Position list. - Index provided must be a positive integer 1, 2, 3, …
Examples:
add -i 1 d/2022-01-01 14:00 p/2
Adding Positions : add -p
Adds a new open position to HireLah.
Format: add -p p/POSITION_NAME o/NUM_OPENINGS d/DESCRIPTION [r/REQUIREMENTS]

- Positions must have a unique name.
- Name provided is case-insensitive.
- Number of openings in the position must be between 1 and 5 digits.
- Description must be between 1 and 200 characters.
- Name must be between 1 and 100 characters.
Examples:
add -p p/Senior Software Engineer o/3 d/More than 5 years experience r/JavaScript r/HTML r/CSS
Edit
General command to edit different types into HireLah.
Format: edit -TYPE …
- TYPE must take the form of
a
,i
,p
-
-a
to indicate editing an applicant -
-i
to indicate editing an interview -
-p
to indicate editing a position
-
Editing Applicant : edit -a
Edits an existing Applicant in HireLah.
Format: edit -a APPLICANT_INDEX [n/APPLICANT_NAME] [ag/AGE] [g/GENDER] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…
- Edits the Applicant at the specified
APPLICANT_INDEX
. - The
APPLICANT_INDEX
refers to the index number shown in the last displayed applicant list. - The
APPLICANT_INDEX
must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing tags, the existing tags of the applicant will be removed i.e adding of tags is not cumulative.
- You can remove all the Applicant’s tags by typing
t/
without specifying any tags after it.
Examples:
edit -a 1 n/Belle ag/43 g/F p/81234567
edit -a 2 e/cedric@yahoo.com a/13 Computing Drive 612345 t/
Editing Interview : edit -i
Edits an existing interview in HireLah.
Format: edit -i INTERVIEW_INDEX [a/APPLICANT_INDEX] [d/DATE] [p/POSITION_INDEX]
- Date provided must be in format YYYY-MM-DD HH:MM.
- Edits the interview at the specified
INTERVIEW_INDEX
. - Only interviews with
Pending
status can be edited. - The
INTERVIEW_INDEX
refers to the index number shown in the last displayed interview list. - The
APPLICANT_INDEX
refers to the index number shown in the last displayed applicant list. - The
POSITION_INDEX
refers to the index number shown in the last displayed position list. - At least one optional field must be provided.
- Existing attribute of the interview will be updated to the input value.
Examples:
edit -i 1 d/2022-01-01 15:00
edit -i 3 a/1 d/2022-01-01 15:00 p/1
Editing Positions : edit -p
Edits an existing position in HireLah.
Format: edit -p POSITION_INDEX [p/POSITION_NAME] [o/NUM_OPENINGS] [d/DESCRIPTION] [r/REQUIREMENTS]
- Edits the available position at the specified
POSITION_INDEX
. - The
POSITION_INDEX
refers to the index number shown in the last displayed position list. - At least one optional field must be provided.
- Existing attributes of the position will be updated to the input value.
- When editing requirements, the existing requirements of the position will be removed. i.e. adding requirements is not cumulative.
- Requirements can be removed by providing an empty requirement field. i.e. r/
- Number of openings in the position must be between 1 and 5 digits.
- Number of openings in the position cannot be edited to be lower than the current number of outstanding offers.
- Description must be between 1 and 200 characters.
- Name must be between 1 and 100 characters.
Examples:
edit -p 1 p/Senior Frontend Software Engineer o/5
edit -p 3 p/Senior Frontend Software Engineer r/JavaScript r/React
Delete
General command to delete different data type in HireLah.
Format: delete -TYPE …
- TYPE must take the form of
a
,i
,p
-
-a
to indicate deleting an applicant -
-i
to indicate deleting an interview -
-p
to indicate deleting a position
-
Deleting Applicant : delete -a
Deletes the specified Applicant from HireLah.
Format: delete -a APPLICANT_INDEX
- Deletes the Applicant at the specified
APPLICANT_INDEX
. - Interviews that contain said applicant are also deleted.
- Offers for Positions handed out to said applicant will also be removed.
- The index refers to the index number shown in the displayed Applicant list.
- The index must be a positive integer 1, 2, 3, …
Examples:
delete -a 1
Deleting Interview: delete -i
Deletes an existing interview in HireLah.
Format: delete -i INTERVIEW_INDEX
- Deletes the Interview at the specified
INTERVIEW_INDEX
. - Offer for Positions handed out via the interview will also be removed.
- The index refers to the index number shown in the displayed Interview list.
- The index must be a positive integer 1, 2, 3, …
Examples:
delete -i 2
Deleting Positions : delete -p
Deletes an existing position in HireLah.
Format: delete -p POSITION_INDEX
- Deletes the Position at the specified
POSITION_INDEX
. - Interviews that contain said position are also deleted.
- However, Applicants that have already accepted a job at said Position, will retain their status as being hired for that Position.
- The index refers to the index number shown in the displayed Position list.
- The index must be a positive integer 1, 2, 3, …
Examples:
delete -p 3
List
General command to list different data types in HireLah. Users can provide optional parameters to filter and sort the data to display. Users can either display all data, with filter only, with sort only, or with both filter and sort.
Note: This command may change the index of the displayed items, and all other commands that accepts an index will follow the latest index shown.
Format: list -TYPE [f/FILTER_TYPE a/FILTER_ARGUMENT] [s/SORT_ARGUMENT]
- TYPE must take the form of
a
,i
,p
-
-a
to indicate deleting an applicant -
-i
to indicate deleting an interview -
-p
to indicate deleting a position
-
- If there are no parameters provided, HireLah will display all data of that type by default.
-
FILTER_TYPE
andFILTER_ARGUMENT
are optional parameters to filter the data displayed.- Note that both
FILTER_TYPE
andFILTER_ARGUMENT
need to be provided to filter data. - Different data types will accept different
FILTER_TYPE
andFILTER_ARGUMENT
, as elaborated in the table below.
- Note that both
-
SORT_ARGUMENT
is the optional parameter to sort the data displayed.- Can either be
asc
ordsc
. - Sorting only works based on a predetermined attribute, and different data types will be sorted according to different attributes, as elaborated in the table below.
- Can either be
Listing Applicants: list -a [f/FILTER_TYPE a/FILTER_ARGUMENT] [s/SORT_ARGUMENT]
Lists all applicants by default. Automatically toggles view to the applicant tab on the GUI.
The applicants displayed can be filtered by providing the optional parameters f/FILTER_TYPE
and a/FILTER_ARGUMENT
:
FILTER_TYPE | FILTER_ARGUMENT | Description |
---|---|---|
name |
Keyword(s) in the applicant’s name | View applicants whose name contains the keyword(s) |
gender |
M / F (Case-sensitive) | View applicants of the given gender |
status |
available / hired | View applicants with the status given |
tag |
Keyword(s) in the applicant’s tag | View applicants with a tag that matches the keywords(s) |
The applicants displayed can be sorted by their name using the parameter s/SORT_ARGUMENT
.
Examples:
list -a s/asc
list -a f/name a/John Doe
list -a f/tag a/Java
list -a f/status a/hired s/dsc
Listing interviews: list -i [f/FILTER_TYPE a/FILTER_ARGUMENT] [s/SORT_ARGUMENT]
Lists all existing interviews by default. Automatically toggles view to the interview tab on the GUI.
The interviews displayed can be filtered by providing the optional parameters f/FILTER_TYPE
and a/FILTER_ARGUMENT
:
FILTER_TYPE | FILTER_ARGUMENT | Description |
---|---|---|
appl |
Keyword(s) in the applicant’s name | View interviews for applicants whose name contains the keyword(s) |
pos |
Keyword(s) in the position’s name | View interviews for position with names that contains the keyword(s) |
date |
Date the interview is happening in yyyy-mm-dd
|
View interviews which happens on the date provided |
status |
pending / passed / failed / accepted / rejected | View interviews with the status given |
The interviews displayed can be sorted by their date using the parameter s/SORT_ARGUMENT
.
Examples:
list -i s/dsc
list -i f/date a/2022-05-04
list -i f/status a/accepted s/asc
Listing Positions : list -p [f/FILTER_TYPE a/FILTER_ARGUMENT] [s/SORT_ARGUMENT]
Lists all existing positions by default. Automatically toggles view to the position tab on the GUI.
The positions displayed can be filtered by providing the optional parameters f/FILTER_TYPE
and a/FILTER_ARGUMENT
:
FILTER_TYPE | FILTER_ARGUMENT | Description |
---|---|---|
name |
Keyword(s) in the position name | View positions with names that contains the keyword(s) |
req |
Keyword(s) in the requirement | View positions with a requirement that contains the keywords(s) |
The positions displayed can be sorted by their name using the parameter s/SORT_ARGUMENT
.
Examples:
list -p s/asc
list -p f/name a/Software Engineer
list -p f/req a/Java s/dsc
Passing Interviews : pass
Passes an existing interview in HireLah.
Format: pass INTERVIEW_INDEX
- Passes the Interview at the specified
INTERVIEW_INDEX
. - The
INTERVIEW_INDEX
refers to the index number shown in the last displayed interview list. - Interview must have status
Pending
before it can be passed. - The Applicant in the Interview must not be hired already, else the Interview cannot be passed.
- The index must be a positive integer 1, 2, 3, …
Additional details:
- A job offer is handed out for the interviewed position when the applicant passes an interview.
- Job offer is tracked by the
Position
interviewed for. - Job can only be offered if
offered
is less thanopenings
. - A job offered will increase
offered
by 1.
Example: pass 1
Failing Interviews : fail
Fails an existing interview in HireLah.
Format: fail INTERVIEW_INDEX
- Fails the Interview at the specified
INTERVIEW_INDEX
. - The
INTERVIEW_INDEX
refers to the index number shown in the last displayed interview list. - Interview must have status
Pending
before it can be failed. - The index must be a positive integer 1, 2, 3, …
Example: fail 1
Accepting Interviews : accept
Accepts an existing passed
interview in HireLah. This command accepts the passed
interview,
meaning that the candidate has accepted the job.
Format: accept INTERVIEW_INDEX
- Accepts the Interview at the specified
INTERVIEW_INDEX
. - The
INTERVIEW_INDEX
refers to the index number shown in the last displayed interview list. - Interview must have status
Passed
before it can be accepted. - The Applicant in the Interview must not be hired already, else the Interview cannot be accepted.
- The index must be a positive integer 1, 2, 3, …
Additional details:
- Accepting a job offer will decrement number of
openings
andoffers
, as a vacancy in thePosition
is now filled. -
Applicant
status will be updated to reflect the new job title. - Note that editing a
Position
’s name after anApplicant
has been hired will not change theApplicant
’s job status.
Example: accept 1
Rejecting Interviews : reject
Rejects an existing interview in HireLah. This command rejects the passed
interview,
meaning that the candidate has rejected the job.
Format: reject INTERVIEW_INDEX
- Rejects the Interview at the specified
INTERVIEW_INDEX
. - The
INTERVIEW_INDEX
refers to the index number shown in the last displayed interview list. - Interview must have status
Passed
before it can be rejected. - The index must be a positive integer 1, 2, 3, …
Additional details:
- Rejecting a job offer will decrement the number of
offered
inPosition
, as the offer no longer stands.
Example: reject 1
Exporting Data : export
Exports all current displayed data of the specified data type in HireLah to a CSV file. The export csv file will be stored at export_csv folder.
- The export csv file only contain data that are currently displayed in HireLah
Format:
export -TYPE
- TYPE must take the form of
a
,i
,p
-
-a
to indicate exporting applicants -
-i
to indicate exporting interviews -
-p
to indicate exporting positions
-
Examples:
-
export -p
will export all positions to the corresponding csv file. -
list -a f/name a/Betsy
thenexport -a
will export csv all applicants named Betsy to the corresponding csv file.
Clearing Data : clear
Clears all data in HireLah, including all applicants
, positions
, and interviews
.
Format: clear
Warning: This command cannot be undone.
Viewing Help : help
Lists all the command keywords with their general descriptions
Format: help
For a more detail description about a specific COMMAND
, you can type in the following:
Format: help COMMAND
- Full description and format of the command will be displayed
- Command name is not case-sensitive
Examples:
help add
help delete
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
Upon exiting HireLah, the data in the application will automatically be saved, including the positions, applicants, and interviews. There is no need to save manually. You should not modify the JSON file to preserve the integrity of the data.
FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous HireLah home folder.
Q: How do I schedule an interview for a new applicant?
A: You will need to first create a new applicant in HireLah, and ensure that the applied position exists in the system, else you will need to create the position as well. To schedule an interview, simply create a new interview with the applicant and the position.
Q: Can I add an applicant without any interviews scheduled?
A: Yes, you can simply add a new applicant in HireLah without adding any interviews.
Q: I have a position that is only open for one applicant, do I still have to add the position?
A: Yes, you will need to add the position as well even if it is only used once.