Are you a Hiring Manager who's tired of managing applicant applications through cumbersome spreadsheets?
Upgrade your hiring process with JABPro (JobApplicationsBook Pro), a CLI based desktop app that allows you to:
From interns to full-time roles, software to marketing, JABPro’s versatile interface allows you to keep track of all kinds of job applicants in various industries.
If you are a Hiring Manager, looking to improve your applications management workflow, JABPro is the tool for you!
Access our self-curated user guide below to learn more on how you can integrate various JABPro’s functions into your workflow.
Jump back to Table of Contents
While JABPro offers a whole range of features, we believe that the following features are likely to be the most useful to you:
Viewing details of applicants:
view
Tag colouring and categorisation:
create
listT
edit
Event management and Scheduling:
event
schedule
Comparing and filtering applicants:
filter
These features address the complications that Hiring Managers face when managing applicants:
Viewing details of applicants
and Tag colouring and categorisation
address this by creating an organized and intuitive way to view applicants and their details. This is done through colour coding and minimalistic design.
Event Management and Scheduling
address this by allowing you to schedule events and view them in the same software. This means that you do not have to toggle between different software to manage applicants and schedule events.
Comparing and filtering applicants
address this by allowing you to filter applicants by statistics and compare them. This means that you do not have to manually calculate summary statistics and compare applicants.Go to the Table of Contents to navigate to the feature that you are interested in
Our user guide takes into consideration your level of expertise in JABPro.
You are a beginner user if ...
ALl the notes and tips mentioned in this user guide are directed towards beginners unless otherwise stated.
You are an advanced user if ...
Notes and tips curated for you are labeled by the following box!
Advanced
Also, take note of the following icons and their meanings.
This is a warning. Watch out for these!
This refers to highlighted information that you should take note of!
This is a tip. It's good to know but not a must-have!
Jump back to Table of Contents
Ensure you have Java 11
or above installed in your Computer.
Download the latest jabpro.jar
from here.
Copy the file to the folder you want to use as the home folder for your JabPro.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar jabpro.jar
command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
Caution: ensure your JABPro contains some sample data. If it starts off empty then there might be some issues with the launch which might result in some commands to not run properly. See below to learn how to troubleshoot this problem!
My app does not contain any sample data! Not to worry, here are some steps you can take to fix this:
cd
into the folder where you put the jar file in.cd Data
to navigate to the Data
folder. This is the folder where JABPro stores the application data on your computer.ls
to view all the files stored in this folder.addressbook.json
. Run rm addressbook.json
to delete this file.cd ..
to navigate back to the folder you were in before.java -jar jabpro.jar
to relaunch the application. You should be able to see a GUI similar to the one above.If your UI looks compressed and words are being cut off such as that seen below, you should resize the window to a larger size by dragging the corners of the application window. The UI should now look like the example given above.
Here's what each part of the GUI signifies:
Colour | Component | Description |
---|---|---|
Menu Bar | Provides buttons for exiting, opening Help window, and opening Events window. | |
Command Box | Allows you to enter a command. | |
Result Display | Displays the result of the command execution. | |
Applicant List Panel | Displays a list of all applicants in JABPro. | |
Applicant Card | Displays certain details of an applicant for quick view, such as name, address, phone, email, tags, LinkedIn/GitHub username. | |
Applicant Information Panel | Displays a detailed view of an applicant, providing information of status and remarks, in addition to the basic information about the applicant. | |
Summary Statistics Panel | Displays summary statistics for a particular applicant pertaining to a specific tag. |
In addition, there are windows such as:
help
command, or through Menu Bar].schedule
command, or through Menu Bar].listT
command].Details for each have been provided with the respective commands.
Jump back to Table of Contents
How to know if your command has failed?
The example below shows a command failure for view
:
Jump back to Table of Contents
help
Opens the Help window
that leads you to the User Guide for assistance on working with JABPro.
Format: help
Tip: The Help window
can also be accessed by clicking Help > Help F1
in the menu bar, located at the top of the window.
Additionally, pressing the F1
key also opens the Help Window
.
Example of successful execution of the help
command:
help
help
command:The Help Window
opens up as follows:
Jump back to Table of Contents
Notes about the command format:
Words in UPPER_CASE
are the parameters to be supplied by the user.
e.g. in add n/NAME
, NAME
is a parameter which can be used as add n/John Doe
.
Items in square brackets are optional.
e.g. n/NAME [t/TAGNAME]
can be used as n/John Doe t/friend
or as n/John Doe
.
When using parentheses ( ) with items separated by the slash symbol /, at least one item must be included.
e.g. in the command search (n/NAME... st/STATUS... t/TAGNAME...)
, it is necessary to specify at least one search category.
Items with …
after them can be used multiple times including zero times.
e.g. t/TAGNAME…
can be used as (i.e. 0 times),
t/swe t/intern
for add
commands or t/swe intern
for search
and delete
commands.
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE_NUMBER
, p/PHONE_NUMBER n/NAME
is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as help
, listT
, exit
and clear
) will be ignored.
e.g. if the command specifies help 123
, it will be interpreted as help
.
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
Jump back to Table of Contents
Tags are meant to help you easily remember applicants details by appending different colour coding to different types of information.
create
Creates a tag and categorises it to the specified category.
Format: create t/CATEGORY TAGNAME…
Type | Field | Constraints |
---|---|---|
Mandatory | t/CATEGORY TAGNAME | TAGNAME must be alphanumeric (letters and numbers, no spaces and symbols allowed such as / , , ...) |
Note:
employment
, role
, and dept
. However, you can define up to 3 more tag categories of your own!add
or edit
command. Tagging
applicant without previously creating the tags using create
would still work but the tags would be uncategorised.create
only allows tags to be categorised at creation meaning tags that have already been created, cannot be categorised further i.e. cannot edit tag categories of tags.t/CATEGORY TAGNAME
must strictly contain only two words hence it is advisable for you to keep the TAGNAME
alphanumerical (contains no spaces). Any other word
that comes after t/CATEGORY TAGNAME
that is not preceded by a t/
prefix would be ignored and the tag for the first valid tag is created.
create t/role software developer
would create the tag software and ignore the word developer.Tip:
create t/dept marketing t/role developer ...
listT
command.An example of the create
command being successfully executed:
Enter the command create t/dept marketing t/role developer
This is what you should see upon successful execution of command.
View your newly created tags using the listT
command.
Failed to create tags? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing create keyword: create | Unknown command | Follow the command format of create t/CATEGORY TAGNAME… closely |
Missing mandatory field e.g. create | Invalid command format! | Ensure that you specify at least one tag category and tag name of the tag you would like to create. |
Incomplete field e.g. create t/test | Invalid command format! | Ensure that both parts of the field are included i.e. specify both tag category and tag name. |
Invalid tag name e.g. create t/developer@ | Tags names should be alphanumeric. | Ensure that the tag name does not contain any non-alphanumeric characters i.e. no symbols and whitespaces. |
Tag already exists | This tag already exists in the address book! | Since the tag already exists, there is no need for you to create a new one. You can reuse this same tag to tag applicants! |
Using commas as delimiters of different prefixes instead of whitespaces e.g. create t/dept software, t/role marketing | Invalid command format! | Remove the comma(s) e.g. create t/dept software, t/role marketing |
Jump back to Table of Contents
listT
Shows a list of all tags in JABPro
Format: listT
listT
command does not require any additional parameters or arguments.listT
command are unique and do not repeat.Example:
listT
Shows a list of all tags.Jump back to Table of Contents
add
Adds an applicant to JABPro.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/[CATEGORY] TAGNAME]…
Type | Field | Constraints |
---|---|---|
Mandatory | n/NAME | NAME must be alphanumeric (Letters and numbers, no symbols allowed such as / , , ...). |
Mandatory | p/PHONE_NUMBER | PHONE_NUMBER must contain numbers only and should be at-least 3 digits long. |
Mandatory | e/EMAIL | EMAIL must be the standard email address format (There must be an email-prefix followed by @ symbol and email domain). |
Mandatory | a/ADDRESS | ADDRESS can be any value, including special characters such as # , , ... |
Optional | t/[CATEGORY] TAGNAME | [CATEGORY] is optional. TAGNAME` must be alphanumeric with no spaces. Any details after the space will be ignored. |
Notes regarding additional constraint on add
command:
add
command will be added to the end of the overall list of applicants (i.e. the list that you would get when you do list
).Notes on adding tags:
create
command,
you can specify the category that you would like it to be categorised to in the add
command. e.g. ...t/role swe
add
command,
the tag would still be saved, but it would be uncategorized by default.Tip:
An example of the add
command being successfully executed:
Enter the command add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/dept finance
This is the result of the successful add
command (Take note that command entered will not be shown in the result):
Failed to add applicants? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing add keyword: add | Unknown command | Follow the command format of add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAGNAME]… closely |
Missing mandatory fields | Invalid command format! | Ensure that all mandatory fields are filled up. |
Duplicate name | This person already exists in the address book | Ensure that the name of the applicant is unique. That is you cannot add the same name twice. Use some form of extra identification like a number |
Invalid phone number | Phone numbers should only contain numbers, and it should be at least 3 digits long | Ensure that the phone number only contains number and should be at least 3 digits long |
Invalid email | Emails should be of the format local-part@domain and adhere to the following constraints: | Ensure that the prefix and domain of the email is correct following the constraints stated by the error |
Invalid tag name | Tag names should only contain alphanumeric characters and should not be blank | Ensure that the tag name only contains alphanumeric characters and should not be blank |
Multiple prefixes of the same type being used | Multiple values specified for the following single-valued field(s): prefix/ | Remove the duplicate prefix. The command should only have 1 of every prefix except for t/ |
Jump back to Table of Contents
remark
Edits a remark of an existing applicant in JABPro.
Format: remark INDEX r/REMARK
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be an existing index in the displayed applicant list and it must not be greater than the total number of applicants in JABPro. |
Optional | r/ [REMARK] | REMARK can be any value, including special characters such as # , , ... |
Notes regarding remark
command:
r/
without any text after it or by omitting the r/
prefix.**REMARK**
keyword. It will be replaced with the previous remark (see example below). The keyword **REMARK**
is case-sensitive. This means that remark 1 r/**remark**
will just replace the remark with the word **remark**
.remark
but only the last prefix will be used. This means that remark 1 r/remark r/remark2
will just replace the remark with remark2
.An example of the remark
command being successfully executed:
remark 1 r/Great attitude, hardworking
remark
command (Take note that command entered will not be shown in the result):
An example of the remark
command being successfully executed with the REMARK keyword:
remark 1 r/**REMARK** furthermore he is great at teamwork
remark
command (Take note that command entered will not be shown in the result):
Failed to add remark to an applicant? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing remark keyword: remark | Unknown command | Follow the command format of remark INDEX r/[REMARK] closely |
Missing Index | Invalid command format! | Ensure that the index is filled up. |
Invalid Index | The person index provided is invalid | Ensure that the index is valid. That is it is a number that is on the displayed applicant list. |
Negative or 0 Index | Invalid command format! | Ensure that the index is a positive integer and is also a number that is on the displayed applicant list. |
Additional Examples:
remark 1
Empties the remark of the 1st applicant. It is equivalent to remark 1 r/
.Jump back to Table of Contents
addL
or addG
Adds the username for their social profile [LinkedIn/GitHub] to the existing contact details of applicants.
Format: addL INDEX u/USERNAME
or addG INDEX u/USERNAME
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be a non-zero unsigned integer and it must not be greater than the total number of applicants in JABPro. |
Mandatory | u/USERNAME | USERNAME must be a string value. Only the prefix (i.e. u/ ) is mandatory. |
Notes regarding addL
and addG
command:
u/
is taken to be the username, except if the prefix u/
occurs multiple times.u/
, however, JABPro only considers the set of characters entered after the last occurring instance of u/
as the username.USERNAME
is a valid username for the respective social profile. If it is not a valid username, user will be redirected to the error page of the corresponding social profile when linkedin
or github
command is invoked. JABPro does not perform checks for the validity of the username for the corresponding social profile.addL
or addG
command for an applicant for whom a username has already been added, will simply overwrite the existing username with the new one.addL INDEX u/
or addG INDEX u/
, i.e. providing no username, or simply providing blanks for the username. Such inputs are accepted by JABPro. However, it will prove to be erroneous when linkedin
or github
command is invoked.Example of successful execution of the addL
command:
addL 1 u/alexyeoh
addL
commandaddG
command is invoked in the same way.
Failed to add LinkedIn/Github username? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing addL or addG keyword | Unknown command | Follow the command format of addL INDEX u/USERNAME or addG INDEX u/USERNAME closely |
Missing Index | Invalid command format! | Ensure that the index is filled up. |
Invalid Index | The person index provided is invalid | Ensure that the index is valid. That is it is a number that is on the displayed applicant list. |
Negative or 0 Index | Invalid command format! | Ensure that the index is a positive integer and is also a number that is on the displayed applicant list. |
Missing username | Invalid command format! | Ensure that the username is filled up |
Jump back to Table of Contents
linkedin
or github
Redirects user to applicant's LinkedIn or GitHub account.
Format: linkedin INDEX
or github INDEX
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be a non-zero unsigned integer and it must not be greater than the total number of applicants in JABPro. |
Notes regarding LinkedIn
and GitHub
commands:
INDEX
for an applicant for whom username [that is not blank, or does not comprise of only spaces] has been added previously.Example of successful execution of github
command:
github 1
github
command [It is assumed an applicant exists in JABPro, with Github username previously added]:The GitHub window opens as follows, displaying the profile with the specified username, or error page in case profile with that username does not exist:
linkedin
command is invoked in the same manner.
Failed to redirect to social profile? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing linkedin or github keyword | Unknown command | Follow the command format of linkedin INDEX or github INDEX closely |
Missing Index | Invalid command format! | Ensure that the index is filled up. |
Invalid Index | The person index provided is invalid | Ensure that the index is valid. That is it is a number that is on the displayed applicant list. |
Negative or 0 Index | Invalid command format! | Ensure that the index is a positive integer and is also a number that is on the displayed applicant list. |
Missing account for provided Index | No LinkedIn account has been added for this candidate. or No Github account has been added for this candidate. | Ensure that username has been previously added to the specified candidate |
Jump back to Table of Contents
set
Sets the applicant to a specific status ("Preliminary"/ "Interviewed"/ "Rejected"/ "Offered").
Format: set INDEX STATUS
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be an existing index in the displayed applicant list and it must not be greater than the total number of applicant in JABPro. It must also be a positive integer |
Mandatory | STATUS | STATUS must be one of the following - "Preliminary", "Interviewed", "Rejected", "Accepted". It is case-insensitive. |
Examples:
list
followed by set 2 Interviewed
sets the 2nd applicant in the address book to "Interviewed".Jump back to Table of Contents
view
Creates a complete view for details of an applicant in the applicant information panel and summary statistics (if applicable) of an applicant in the summary statistics panel.
Format: view INDEX
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be an existing index in the displayed applicant list and it must not be greater than the total number of applicant in JABPro. It must also be a positive integer. |
Notes regarding view
command:
Tip: Other operations that affect user's data will trigger a refresh of the view.
These include add
, edit
, set
, remark
, addL
, addG
.
This means that the view will be updated to reflect the latest changes to the data for that particular applicant.
An example of the view
command being successfully executed:
Enter the command view 3
This is the result of the successful view
command (Take note that command entered will not be shown in the result):
An example of the view
command being successfully executed for applicant with tags and score:
Enter the command view 2
(Applicant with tags and score)
This is the result of the successful view
command (Take note that command entered will not be shown in the result):
Failed to execute view
command? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing view keyword: view | Unknown command | Follow the command format of view INDEX closely |
Missing Index | Invalid command format! | Ensure that the index is filled up. |
Invalid Index | The person index provided is invalid | Ensure that the index is valid. That is it is a number that is on the displayed applicant list. |
Jump back to Table of Contents
edit
Edits an existing applicant's detail in JABPro. It also includes the functionality to add scores to a specific applicant.
Format: edit INDEX ([n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAGNAME]… [sc/TAGNAME SCORE])
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be a non-zero unsigned integer and must also not be greater than the total number of applicants in JABPro. |
Mandatory* | n/NAME | NAME must be alphanumeric (Letters and numbers, no symbols allowed such as / , , ...). |
Mandatory* | p/PHONE_NUMBER | PHONE_NUMBER must contain numbers only and should be at-least 3 digits long. |
Mandatory* | e/EMAIL | EMAIL must be the standard email address format (There must be an email-prefix followed by @ symbol and email domain). |
Mandatory* | a/ADDRESS | ADDRESS can be any value, including special characters such as # , , ... |
Mandatory* | t/[CATEGORY] TAGNAME | TAGNAME must be alphanumeric with no spaces. Any details after the space will be ignored. |
Mandatory* | sc/TAGNAME SCORE | TAGNAME a tag that is being created or already exist for that applicant. SCORE must be a non-negative integer. |
*it is mandatory if and only if it is the only field used in the command.
Notes regarding edit
command:
t/[CATEGORY] TAGNAME
for more details.Tip: Editing an applicant's details will trigger a refresh of the view. This means that the view will be updated to reflect the latest changes to the data for that particular applicant.
Editing tags of an applicant? Take note of the following:
edit INDEX /t
removes the tags of the applicant at that index.create
in an edit
command, the tag would still be added to the applicant, but it would be uncategorized.edit INDEX t/CATEGORY DUPLICATETAGNAME
Advanced
edit INDEX t/CATEGORY TAGNAME
.Caution:
If you tag a person with a tag that has not been categorised yet without specifying the category i.e. edit 1 t/UNCATEGORIZEDTAG
, and then you created that same tag with a specific category using create
,
you need to re-tag the person with the same tag name again in order to overwrite the previous uncategorized tag with the categorized tag.
This is because, create
only creates new categorized tags. It does not categorize existing tags when you do create t/CATEGORY EXISTINGTAGNAME
Editing the score of an applicant? Take note of the following:
TAG
in sc/TAGNAME SCORE
must be a tag of the category assessment
. You cannot use the sc/TAG SCORE
field for tags that are not of the assessment
category.SCORE
in sc/TAG SCORE
is non-negative, that is SCORE
must be more than or equal to 0.sc/TAG SCORE
field e.g. edit 1 t/SCORETAG
edit INDEX sc/TAGNAME SCORE
if they have been tagged with the assessment-related TAGNAME
.Advanced
edit INDEX t/TAGNAME sc/TAGNAME SCORE
.create
with the category assessment
. You cannot do this with a tag that hasn't been created even if you specified its category assessment i.e. edit INDEX t/assessment interview1 sc/interview1 100
does NOT
work. This is because, you cannot create tag and edit score at the same time as editing score relies on the fact that the tag has already existed.How is creating tags using edit
different from create
?
Both will create categorized tags and add them to the tag list but create
serves the singular purpose of creating categorized tags, while the main purpose of edit
is to edit the details of an applicant which includes tags.
The reason why we've allowed you to create tags in the event you use edit
with a tag that
hasn't been created is for the sake of convenience (i.e. if you had forgotten to create the tag, it would still be added to the applicant you were editing).
Nonetheless, we strongly recommend you to use create
to create categorized tags if your only intention is to create tags.
An example of the edit
command being successfully executed:
Enter the command edit 1 n/Alex Ho p/91234567
(edits name and phone number)
This is the result of the successful edit
command (Take note that command entered will not be shown in the result):
An example of the edit
command being successfully executed with tags and score:
Ensure that you have created a tag Interview
under the assessment
category using the create
command. Enter the command create t/assessment Interview
Enter the command edit 1 t/Interview sc/Interview 80
(edits tag and score)
This is the result of the successful edit
command (Take note that command entered will not be shown in the result):
An example of the edit
command being successfully executed to clear a tags and score:
Enter the command edit 1 t/
(Clear all tags)
This is the result of the successful edit
command (Take note that command entered will not be shown in the result):
Failed to edit an applicant's details? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing edit keyword: edit | Unknown command | Follow the command format of edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAGNAME]… [sc/TAGNAME SCORE] closely |
Missing Index | Invalid command format! | Ensure that the index is filled up. |
Invalid Index | The person index provided is invalid | Ensure that the index is a valid number on the displayed applicant list. |
Missing at least one of the field | At least one field to edit must be provided. | Ensure that at least one of the field is filled up and to be changed. |
Duplicate name | This person already exists in the address book | Ensure that the name of the applicant is unique. That is, you cannot add the same name twice. Use some form of extra identification like a number |
Invalid phone number | Phone numbers should only contain numbers, and it should be at least 3 digits long | Ensure that the phone number only contains numbers and should be at least 3 digits long |
Invalid email | Emails should be of the format local-part@domain and adhere to the following constraints: ... | Ensure that the prefix and domain of the email is correct, following the constraints stated by the error |
Invalid tag name | Tag names should only contain alphanumeric characters and should not be blank | Ensure that the tag name only contains alphanumeric characters and should not be blank |
Multiple prefixes of the same type being used (does not apply to tag prefix t ) | Multiple values specified for the following single-valued field(s): prefix/ | Remove the duplicate prefix. The command should only have 1 of every prefix except for t/ |
Missing score for tag | Invalid score, score must be non-negative integer. | Ensure that the score is filled up and is separated from the TAGNAME by a whitespace (NOT commas). |
Invalid tag to attach score | Invalid score tag, tag must a tag of the category assessment and must exist on the applicant | Ensure that the tag is of the category assessment and it exists on the applicant. If it's the wrong category, use create i.e. create t/assessment TAGNAME to firstly create the categorized tag. If it is not tagged to the person use edit i.e. edit INDEX t/TAGNAME |
Missing valid score-tag on applicant | The tag does not exist, cannot attach a score to it | Ensure that the applicant has the tag and it is of category assessment , this is what is considered a valid score-tag. This is done by creating an assessment category for the tag name using create and update tag using edit INDEX t/TAGNAME ... |
Tag ambiguity | Multiple tags exists with the same name! Specify the category of the tag when adding it to a person e.g. edit 1 t/experience 3 | Specify the category of the tag you want to add in the field e.g.edit INDEX t/CATEGORY DUPLICATETAGNAME |
Jump back to Table of Contents
delete
Deletes the specified job applicants from the address book.
Format: delete INDEX
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be a non-zero unsigned integer and must also not be greater than the total number of applicants in JABPro. |
Format: delete (t/TAGNAME... st/STATUS...)
Type | Field | Constraints |
---|---|---|
Mandatory* | t/TAGNAME | TAGNAME must be alphanumeric and contains no spaces. |
Mandatory* | st/STATUS | STATUS must either be preliminary , interviewed , offered , rejected . |
*it is mandatory if and only if it is the only field used in the command.
Note:
delete 1 t/hardworking
is not allowed.delete
by tags & status requires at least ONE delete parameter i.e. st/STATUS
, or t/TAGNAME
.delete st/preliminary interviewed
delete t/interN
is the same as delete t/intern
Advanced
Note:
delete
command e.g. delete st/interviewed t/intern
An example of delete by index command being successfully executed:
Similarly, here are some examples of delete by tags & status command being successfully executed:
Assuming this as the data after executing list
:
delete t/marketing software
The above delete
command deleted all applicants whose tags match ANY of the given keywords. This is because
delete
does an OR
search within a specific category.
delete st/interviewed t/software
The above delete
command only deleted Bernice because delete
does an AND
search across multiple categories.
What does it mean to do an OR
delete within a single category and an AND
delete across multiple categories?
It's best to explain this by breaking down an example delete
command!
delete st/interviewed rejected t/intern manager
will delete applicants whose:
OR
rejectedAND
has a tag intern
or manager
.Failed to execute the delete
command? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing delete keyword | Unknown command! | Follow the command format delete INDEX OR delete (st/STATUS... t/TAGNAME...) |
Missing delete categories e.g. delete | Invalid command format! | Make sure you include at least one of the delete categories i.e. /st , /t . |
Invalid INDEX e.g. delete 0 , delete -1 | Invalid command format! | Make sure INDEX is a positive integer. |
Invalid status e.g. delete st/in , delete st/ | Status should be either one of the following: 'Preliminary','Interviewed', 'Offered', 'Rejected' and it should not be blank. | Check that the status is one of the following: preliminary , interviewed , rejected , offered . |
Invalid tag e.g. delete t/intern@ , delete t/ | Tags names should be alphanumeric. | Ensure that tag does not contain any non alphanumeric characters such as &, $, @, -, %, *, _, empty space, etc. |
Multiple prefixes of the same category being used e.g. delete t/intern t/manager | Multiple values specified for the following single-valued field(s): prefix/ . | Remove the duplicate prefix. The command should only have at most one of every prefix. |
Using commas as delimiters of different parameters instead of spaces e.g. delete t/intern, manager | Status should be either one of the following: 'Preliminary','Interviewed', 'Offered', 'Rejected' and it should not be blank Tags names should be alphanumeric. | Remove the comma(s) e.g. delete t/intern manager |
Using commas as delimiters of different parameters instead of spaces e.g. delete st/interviewed, t/intern | Should display the error message for either invalid status or tag depending on the first prefix because it will consider the comma and anything that comes after it as part of the first prefix. | Remove the comma(s) e.g. delete n/alex t/intern |
Jump back to Table of Contents
search
Finds job applicants whose profiles match the specified categories' keywords. The search categories are: name, status, tag.
Format: search (n/NAME... st/STATUS... t/TAGNAME...)
Type | Field | Constraints |
---|---|---|
Mandatory* | n/NAME | NAME must be alphanumeric (Letters and numbers, no symbols allowed such as / , , ...). |
Mandatory* | st/STATUS | STATUS must either be preliminary , interviewed , offered , rejected . |
Mandatory* | t/TAGNAME | TAGNAME must be alphanumeric and contains no spaces. |
*it is mandatory if and only if it is the only field used in the command.
Note:
search
requires at least ONE search parameter i.e. n/NAME
, st/STATUS
, or t/TAGNAME
.search st/preliminary interviewed
search n/aLeX
is the same as search n/alex
Advanced
Note:
search
command e.g. search n/alex st/interviewed t/intern
Here are some examples of search command being successfully executed:
Enter search n/alex bernice
The above search
command displayed all applicants whose name match ANY of the given keywords. This is because
search
does an OR
search within a specific category.
Enter search n/alex bernice st/interviewed t/intern
Notice how the above search
command did not display "Alex" despite his profile matching
the name
and tag
categories. This is because search
does an AND
search across multiple categories.
What does it mean to do an OR
search within a single category and an AND
search across multiple categories?
It's best to explain this by breaking down an example search
command!
search n/alex bernice st/interviewed t/intern
will output applicants whose:
OR
BerniceAND
status is either interviewedAND
has a tag intern
Failed to execute the search
command? Here are some possible reasons why
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing search keyword | Unknown command! | Follow the command format search (n/NAME... st/STATUS... t/TAGNAME...) |
Missing search categories e.g. search | Invalid command format! | Make sure you include at least one of the search categories i.e. /n , /st , /t . |
Invalid name e.g. search n/alex@ , search n/ | Names should only contain alphanumeric characters and spaces, and it should not be blank. | Ensure that name does not contain any non-alphanumeric characters such as &, $, @, -, %, *, _, etc. |
Invalid status e.g. search st/in , search st/ | Status should be either one of the following: 'Preliminary','Interviewed', 'Offered', 'Rejected' and it should not be blank. | Check that the status is one of the following: preliminary , interviewed , rejected , offered . Enter the command again with any of the 4 metric |
Invalid tag e.g. search t/intern@ , search t/ | Tags names should be alphanumeric. | Ensure that tag does not contain any non alphanumeric characters such as &, $, @, -, %, *, _, empty space, etc. |
Multiple prefixes of the same category being used e.g. search n/alex n/bernice | Multiple values specified for the following single-valued field(s): prefix/ . | Remove the duplicate prefix. The command should only have at most one of every prefix. |
Using commas as delimiters of different parameters instead of spaces e.g. search n/alex, bernice | Names should only contain alphanumeric characters and spaces, and it should not be blank Status should be either one of the following: 'Preliminary','Interviewed', 'Offered', 'Rejected' and it should not be blank Tags names should be alphanumeric. | Remove the comma(s) e.g. search n/alex yeoh |
Using commas as delimiters of different parameters instead of spaces e.g. search n/alex, t/intern | Should display the error message for either invalid name , status , or tag depending on the first prefix because it will consider the comma and anything that comes after it as part of the first prefix. | Remove the comma(s) e.g. search n/alex t/intern |
Jump back to Table of Contents
filter
Filters and display applicants in the current displayed applicant list using statistical metrics and values.
In essence, this allows you to find job applicants whose performance rating is above a certain percentile, score or mean/median score for that tag.
Ideally, this feature can then be used to find the best applicants easily and quickly without having to manually look through the list of applicants.
Format:filter t/TAGNAME met/METRIC val/VALUE
or filter t/TAGNAME met/METRIC
Type | Field | Constraints |
---|---|---|
Mandatory | t/TAGNAME | TAGNAME must be a tag that is of the category assessment . |
Mandatory | met/METRIC | METRIC must be either score , percentile , mean , median . |
Mandatory* | val/VALUE | VALUE must be a non-negative integer and is a mandatory field only for score and percentile |
*val/VALUE
is an optional field for mean
and median
METRIC
that is score
or percentile
, filter
displays job applicants whose value is greater than or equal to the specified value for the specified statistic metric.METRIC
that is mean
or median
, the VALUE
is optional. Specifying a VALUE
here will be ignored accordingly. filter t/TAGNAME met/METRIC
is equivalent to filter t/TAGNAME met/METRIC val/X
where X
is any positive integer.Notes:
list
before using filter
to ensure that you are filtering the correct list of job applicants.list
again.You should use filter
after you have tagged most of the job applicants with a tag that has a score.
This is because some metrics such as percentile
, mean
and median
require a certain number of scores to be considered meaningful.
Read more about this in the Summary Statistics section.
Set up for examples when you first start JABPro with default data:
list
create t/assessment interview
to create a tag interview
under the assessment
category.
edit 1 t/interview sc/interview 80
edit 2 t/interview sc/interview 90
edit 3 t/interview sc/interview 70
The result of the above commands should look like this:
An example of the filter
command being successfully executed:
Enter the command list
Enter the command filter t/interview met/percentile val/80
(Filter by percentile)
This is the result of the successful filter
command (Take note that command entered will not be shown in the result):
An example of the filter
command being successfully executed with median
:
Enter the command list
Enter the command filter t/interview met/median
(Filter by median)
This is the result of the successful filter
command (Take note that command entered will not be shown in the result):
Failed to execute the filter
command? Here are some possible reasons why:
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing filter keyword: filter | Unknown command! | Follow the command format strictly of filter t/TAGNAME met/METRIC val/VALUE for score and percentile or filter t/TAGNAME met/METRIC for mean or median. |
Missing parameters | Incomplete parameter inputs. t/TAG and met/SCORE are compulsory fields. | Enter the command again with the correct parameters. |
Tag missing on applicants | Tag does not exist! | Check that the tag is used on at least one applicant and that the tag is a assessment tag also. Add the tag to the applicants using edit |
Invalid tag name | Invalid tag provided. Needs to be non-empty name | Check that the tag name is not empty and is alphanumeric (a valid tag name) and does not contain space. Additionally, the tag must already have a category of assessment , ensure this by using listT |
Invalid metric | Invalid metric provided. Needs to be one of: score, mean, median, percentile | Check that the metric is one of the following: score , mean , median , percentile and that it is spelt correctly. Enter the command again with any of the 4 metric |
Invalid value | Invalid value provided. Needs to be a non negative integer that is more than or equal to 0 | Check that the value is a non-negative integer that is more than or equal to 0. Enter the command again with the correct value. |
Missing value | val/VALUE is missing, it is compulsory. | Enter a value for val/VALUE since the metric requires it. |
Multiple prefixes of the same type being used | Multiple values specified for the following single-valued field(s): prefix/ | Remove the duplicate prefix. The command should only have 1 of every prefix |
Jump back to Table of Contents
list
Shows a list of all applicants in JABPro
Format:
list [so/ATTRIBUTE]
Type | Field | Constraints |
---|---|---|
Optional | so/ATTRIBUTE | ATTRIBUTE must either be name or email . |
Note:
list so/NAME
and list so/name
return the same result.Jump back to Table of Contents
event
Adds an event, associated with an applicant, to JABPro.
Format: event INDEX d/DESCRIPTION bt/BEGIN_TIME et/END_TIME
Type | Field | Constraints |
---|---|---|
Mandatory | INDEX | INDEX must be a non-zero unsigned integer and it must not be greater than the total number of applicant in JABPro |
Mandatory | d/DESCRIPTION | DESCRIPTION must be a string value. Only the prefix (i.e. d/ ) is mandatory. |
Mandatory | bt/BEGIN_TIME | BEGIN_TIME must be a valid date-time, in the format yyyy-MM-dd HH:mm |
Mandatory | et/END_TIME | END_TIME must be a valid date-time, in the format yyyy-MM-dd HH:mm , and after the BEGIN_TIME |
Note:
data/eventbook.json
file. Existing events are also read from the file when JABPro starts up.DESCRIPTION
s can also be added. However, the prefix d/
must still be present.Example of successful execution of event
command:
event 1 d/Interview bt/2023-11-12 10:00 et/2023-11-12 12:00
event
command [It is assumed an applicant called Alex Yeoh exists in JABPro]:The changes in UI take place in the Events Window
. Please find more details in Viewing Events.
Failed to execute teh event
command? Here are some possible reasons why:
Reason for Error | Error Message | Remedy / Suggested course of action |
---|---|---|
Missing event keyword: event | Unknown command | Follow the command format of event INDEX d/DESCRIPTION bt/START_TIME et/END_TIME closely |
Missing Index | Invalid command format! | Ensure that the index is filled up. |
Invalid Index | The person index provided is invalid | Ensure that the index is valid. That is it is a number that is on the displayed applicant list. |
Negative or 0 Index | Invalid command format! | Ensure that the index is a positive integer and is also a number that is on the displayed applicant list. |
Missing description | Invalid command format! | Ensure that the description is filled up |
Missing start time | Invalid command format! | Ensure that the start time is filled up |
Missing end time | Invalid command format! | Ensure that the end time is filled up |
Start time/End time not in correct format | Date is not in correct format! | Ensure that the start time/end time is in yyyy-MM-dd format |
Start time/End time not a valid date-time | Date entered is invalid! | Ensure that the start time/end time is a semantically valid date |
End time before or same as start time | End time must be after start time! | Ensure that the end time is after the start time |
Jump back to Table of Contents
schedule
Displays all events that have been added to JABPro.
Format: schedule
Note:
schedule
command will open the Events
window regardless of whether there are events in JABPro or not.schedule
keyword will be ignored. E.g.: schedule a1b2c3
Tip: The Events
window can also be accessed by clicking Events > Events
in the menu bar, located at the top of the window.
Example of successful execution of schedule
command:
schedule
schedule
command [It is assumed that an event was previously added using the command `event 1 d/Interview bt/2023-11-12 10:00 et/2023-11-12 12:00]:The Events
window opens up:
There is no possibility of a "failed" execution of the schedule
command.
Jump back to Table of Contents
export
Format: export
Exports the entries into a .csv file located in the current directory as (/data/export.csv)
Note:
Examples:
export
exports the data to /data/export.csvJump back to Table of Contents
clear
Clears all entries from JABPro - including applicants and events.
Format: clear
Note:
clear
command empties all records, not only in the current running instance of JABPro, but from the json
files as well where the data is written to/read from. Hence, a subsequent launch of JABPro will display an empty application.clear
command can be invoked on an already empty instance of JABPro as well, without any errors being raised. There is no effect of running this command.Example of the successful execution of the clear
command:
Jump back to Table of Contents
exit
Exits the program.
Format: exit
Jump back to Table of Contents
Advanced
Summary Statistics is a table generated by JABPro that displays the following information about an applicant:
It is generated for tags that are categorised under the assessment
category.
Statistic / Metric | Description |
---|---|
score | The score of the applicant for the tag. |
mean | The mean score of applicant with that tag. |
median | The median score of applicant with that tag. |
minimum | The minimum score of applicant with that tag. |
maximum | The maximum score of applicant with that tag. |
percentile | The percentile of the applicant for that tag. |
You should ensure that you have sufficient candidates of more than 20 with a score for the tag you are interested in, before using the summary statistics to make comparisons.
Notes on why you should have sufficient applicants with a score for the tag you are interested in:
Tip:
median
and percentile
to make your judgement on the performance of an applicant.median
to find applicants who are the better performing halfpercentile
as where this applicant stands among all other applicants (treat it like a ranking system, the higher the percentile, the better the applicant is performing)Advanced
Note:
percentile
has limited functionality in some context. This is because if two applicants have the same score, they are rank
the same. This means that the percentile of both applicants will be the same.
rank
the same.Formula used to calculate the summary statistics:
sum of all scores with that tag / number of applicants with that tag
middle score of all scores with that tag
lowest score of all scores with that tag
highest score of all scores with that tag
number of applicants with a score strictly lower than the applicant / total number of applicants with that tag
Jump back to Table of Contents
JABPro data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
JABPro data are saved automatically as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.
Caution: If your changes to the data file makes its format invalid, JABPro will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Jump back to Table of Contents
Q: What would happen if I used JABPro for the first time without the sample data? Would the app break? A: Not necessarily, we've tested out the JABPro launch without any sample data and basic functionalities are working fine. However, we do not recommend this because there could be unexpected behaviours that we might have not accounted for. It is always advisable to follow the quickstart instructions and launch JABPro with the sample data!
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 JABPro home folder.
Jump back to Table of Contents
Action | Format, Examples |
---|---|
Add | add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/[CATEGORY] TAGNAME]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/developer t/intern |
Remark | remark r/REMARK e.g., remark 1 r/Great attitude, hardworking |
Add LinkedIn/Github | addL INDEX u/USERNAME or addG INDEX u/USERNAME e.g., addL 1 u/alex-yeoh , addG 2 u/bernicesanders123 |
Open LinkedIn/Github | linkedin INDEX or github INDEX e.g., linkedin 1 , github 2 |
Set | set INDEX STATUS e.g., set 2 Interviewed |
View | view INDEX e.g., view 1 |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAGNAME] [sc/TAGNAME SCORE] e.g., edit 2 n/James Lee e/jameslee@example.com t\MarketingInterview sc\MarketingInterview 50 |
Delete | delete INDEX or delete (t/TAGNAME... st/STATUS...) e.g., delete 3 , delete t/intern st/rejected |
Create | create t/CATEGORY NAME… e.g. create t/dept software |
ListT | listT |
Search | search (n/NAME... st/STATUS... t/TAGNAME...) e.g., search n/alex |
Filter | filter t/TAGNAME met/METRIC val/VALUE e.g., filter t/interview met/score val/80 |
List | list so/ATTRIBUTE e.g. list so/name |
Event | event INDEX d/DESCRIPTION bt/START_TIME et/END_TIME |
Schedule | schedule |
Help | help |
Export | export |
Clear | clear |
Jump back to Table of Contents
Prefix | Description | Commands | Constraint |
---|---|---|---|
n/ | Name | Add, Edit, Search | Must be alphanumeric (Letters and numbers, no symbols allowed such as / , , ...). |
p/ | Phone Number | Add, Edit | Must contain numbers only and should be at-least 3 digits long. |
e/ | Add, Edit | Must be the standard email address format (There must be an email-prefix followed by @ symbol and email domain). | |
a/ | Address | Add, Edit | can be any value, including special characters such as # , , ... |
t/ | Tag | Add, Edit, Search, Create, Delete | Must be alphanumeric with no spaces. Any details after the space will be ignored. |
sc/ | Score | Edit | Must be a non-negative integer. |
st/ | Status | Search, Delete, Set | Must either be preliminary , interviewed , offered , rejected . |
r/ | Remark | Remark | can be any value, including special characters such as # , , ... |
u/ | Username | Add Github/LinkedIn | Must be a string value. |
met/ | Metric | Filter | Must be either score , percentile , mean , median . |
val/ | Value | Filter | Optional only for mean and median. Otherwise, must be a non-negative integer. |
so/ | Sort | List | Must be either name or email . |
d/ | Description | Event | Must be a string value. |
bt/ | Begin Time | Event | Must be a valid date-time, in the format yyyy-MM-dd HH:mm . |
et/ | End Time | Event | Must be a valid date-time, in the format yyyy-MM-dd HH:mm . |
Jump back to Table of Contents
Keyword | Definition |
---|---|
Alphanumeric | Letters and numbers. Should NOT contain symbols, or whitespaces. |
Index | The index of the applicant of the currently displayed list in the applicant list panel. |
Parameter | Details about the job applicant that will be included in the command. |
Command | Instructions that JABPro will execute. |
JAR | Compressed file of JABPro that is in the form of a Java Archive. |