By: RecruitMe Since: January 2019 Licence: MIT

1. Introduction

Recruit Me is an application for keeping all your company’s applicants in a concise and organized format for easy searching designed to help you find the best candidates.

2. Quick Start

  1. Ensure you have Java 9 (revision 9.01 or later) installed in your Computer.

    Only Java 9 is supported.
  2. Copy the file to the folder you want to use as the home folder for your Address Book.

  3. Download the latest addressbook.jar here.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. 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.

  6. Refer to Section 3, “Features” for details of each command.

3. Features

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 [skill/TAG] can be used as n/John Doe skill/friend position/Systems Analyst or as n/John Doe.

  • Items with ​ after them can be used multiple times including zero times e.g. [skill/TAG]…​ can be used as   (i.e. 0 times), skill/Java, skill/Excel skill/leadership etc.

  • 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.

3.2. Adding a person: add

Adds a candidate to Recruit Me

Format: add n/NAME p/PHONE_NUMBER e/EMAIL d/EDUCATION g/GPA a/ADDRESS deg/DEGREE-LEVEL [skill/SKILL]…​ [position/POSITION]…​

  • Name can have any character from English alphabet and also it can have space

  • Phone Number has to be in 8 digits

  • Email should be in the format of [ANY NUMBER OF ASCII CHARACTERS MORE THAN 0]@[EXTENSION1].[EXTENSION2]

  • Education can take the characters from English alphabet and also it can have space

  • GPA can take any float value between 0.0 and 4.0

  • DEGREE-LEVEL only takes these inputs: high school, associates (2-year-degree), bachelors, masters, PhD

  • A candidate can have any number of skill/position tags (including 0)

Examples:

  • add n/John Doe p/98765432 e/johnd@example.com d/NUS g/3.4 deg/bachelors a/John street, block 123, #01-01

  • add n/Betsy Crowe skill/statistics e/betsycrowe@example.com d/NTU g/2.4 deg/high school a/Newgate Prison p/1234567 skill/Java position/UIDeveloper

3.3. Listing all persons : list

Shows a list of all candidates in Recruit Me. If there is a filtering available, it lists all the persons that passes all the filtering conditions.
Format: list

3.4. Editing a person : edit

Edits an existing candidate in Recruit Me.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [d/EDUCATION] [g/GPA] [deg/DEGREE-LEVEL] [a/ADDRESS] [skill/TAG]…​ [position/TAG]…​

  • Edits the person at the specified INDEX. The index refers to the index number shown in the displayed person list. The 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 person will be removed (i.e adding of tags is not cumulative, both skills and positions will be changed after editing one of them) except for existing endorsement tags.

  • You can remove all the person’s tags, except for endorsement tags, by typing skill/ or 'position/' without specifying any tags after it.

Examples:

  • edit 1 p/91234567 e/johndoe@example.com
    Edits the phone number and email address of the 1st person to be 91234567 and johndoe@example.com respectively.

  • edit 2 n/Betsy Crower skill/
    Edits the name of the 2nd person to be Betsy Crower and clears all existing tags except for endorsements.

3.5. Filtering Recruit Me: filter

  • It filters the current applicant pool regarding the existing entities of every single person (name, phone, email, address, gpa, education (school), degree level, position, endorsement count or skills).

  • Format: filter or/and [name<NAME>name] [phone<PHONE>phone] [email<EMAIL>email] [gpa<GPA>gpa] [edu<EDUCATION>edu] [deg<DEGREE-LEVEL>deg] [addr<ADDRESS>addr] [skill<SKILL1, SKILL2, …​ >skill][pos<POSITION1, POSITION2, …​ >pos] [end<ENDORSEMENT>end]

For every field, using < or > can cause false results. Please do not use them in filtering criterion texts. All the fields are optional but at least one field should be used.

Definition of Some Keywords for the Filter Guide:

  • Prefix: basically the beginning part of every field in the command e.g. name< for NAME field, deg< for DEGREE-LEVEL.

  • Reverse Prefix: the ending part of every field in the command e.g. >name for NAME field, >deg for DEGREE-LEVEL.

  • Condition: The text between every Prefix and Reverse Prefix couple.

Different Types of Filtering Processes:

  • OR Usage: According to the conditions written, if at least one of them passes with the regarding person in the applicant pool, the person is included in the filtered version.

  • AND Usage: According to the conditions written, if every single one of them passes with the regarding person in the applicant pool, the person is included in the filtered version.

Special Input Conditions for Fields:

  • For all the non-mentioned fields below, the default input format should be applied for the filtering field. Default input formats can be checked from Adding a person: add - User Guide

  • For PHONE, any number of integers more than 0 can be entered.

  • For EMAIL and ADDRESS, any number of ASCII characters (also take the TIP into attention for correct results) more than 0 can be used.

  • For GPA, it prints the persons who have higher or equal amount of GPA from the given input

  • For ENDORSEMENT, a positive integer value is wanted, it prints the persons who have that much or higher amount of endorsements.

  • For SKILLS and POSITIONS, if more than one specification are added to the filter, they should be separated by ','

  • For DEGREE-LEVEL, there are 2 input type options: text and number. For the text format, the search is case-insensitive. So, any uppercase or lowercase type of the text is accepted. If filtering is applied for this criteria, the persons with the same or higher education levels are shown. There 5 different levels for the input:

    • Number: 0 and Text: highschool / Number: 1 and Text: associates (2-year-university) / Number: 2 and Text: bachelors / Number: 3 and Text: masters / Number: 4 and Text: phd

About the Running Process of Filtering Command:

  • The filtering is case insensitive. e.g hans will match Hans.

  • Filtering does not check if the written condition passes totally. It only checks, if the written condition is contained in the person properties. e.g if there is someone named Alex, in the filtering conditions n/ale/n or n/le/n or n/lex/n, Alex will be included.

  • All the people that are included in the filtering will be returned.

  • ADD operation clears the existing filters automatically.

  • After one filtering, the filtered address book can be filtered again.

  • For every single criteria between the filtering prefixes, input check for the validity is made.

  • When filtering is active, adding a person also clears the filter along the addition. But addition takes place.

Examples:

  • filter or phone<91234567>phone email<mail@ex>email skill<C++, Java>skill end<2>end deg<4>deg

    • Returns the people, whose numbers include 91234567 or whose email includes mail@ex or who has (contains) at least C++ or Java in the skills or has at least 2 endorsements or has at least Master’s degree.

  • filter and name<ale>name addr<street>addr gpa<3.1>gpa pos<Manager, Developer>pos deg<bachelors>deg

    • Returns the people, whose name contains ale (in any uppercase and lowercase format) and whose address contains street and who is interested in Manager and Developer positions,has a GPA higher than or equal to 3.1 and has at least Bachelor’s degree.

3.6. Clearing the filter in Recruit Me: filter clear

It clears all the filters in the applicant pool.
Format: filter clear

3.7. Reversing the filter in Recruit Me: filter reverse

It reverses all the filtering conditions and shows the eliminated ones.
Format: filter reverse

3.8. Employee approval of candidates: endorse

Endorses an existing candidate in RecruitMe.
Format: endorse [clear] INDEX n/YOUR NAME

  • Feature for employees to navigate the recruiting platform and choose candidates that they want hired

  • Endorses the person at the specified INDEX. The index refers to the index number shown in the displayed person list.

  • The index must be a positive integer 1, 2, 3, …​

  • All ASCII characters accepted, not limited to alphanumeric characters

  • Error will be thrown if an employee tries to endorse a candidate more than once

  • When editing tags, the existing tags of the person will be removed (i.e adding of tags is not cumulative) except for existing endorsement tags.

  • Optional clear keyword will delete the employee endorsement at a specified index

  • Error will be thrown if an employee tries to un-endorse a candidate he or she has not previously endorsed

  • Compatible with filter and sorting methods for easy navigation

Examples:

  • endorse 1 n/Steve Jobs Adds a blue tag to the candidate at the 1 index with the text Steve Jobs

  • endorse clear 1 n/Steve Jobs Removes 'Steve Jobs' blue tag from the candidate at the 1 index

3.9. Locating persons by name: find

Finds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]

  • It filters the list of candidates temporally. If you use filter or sort commands after that, they uses the entire list to process. To have a permanent filtering until you use add command or clear the filter, use the filter command.

  • The search is case insensitive. e.g hans will match Hans

  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans

  • Only the name is searched.

  • Only full words will be matched e.g. Han will not match Hans

  • Persons matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber, Bo Yang

Examples:

  • find John
    Returns john and John Doe

  • find Betsy Tim John
    Returns any person having names Betsy, Tim, or John

3.10. Sorting persons: sort

Sorts persons by method described by the given keywords.
Format: sort [reverse] KEYWORD

Accepted KEYWORDs: name; surname; education; gpa; degree; skills; positions; endorsements; skill number;
position number; endorsement number

Examples:

  • sort education
    Returns the persons, with new index numbers, in alphabetical order of their education.

  • sort reverse skills
    Returns the persons, with new index numbers, in reverse alphabetical order of their first skill. Their first
    skill is that which appears first when the person’s skills have been ordered alphabetically.

Methodology:

Table 1. Individual Sort Command Methods
CLI Command Sort Comparison Sort Effect Example

sort name

Christian name first, then the surname

Alphabetical

Adam Smith shall come before Shaun Adams and Adam Blacksmith shall come before Adam Smith.

sort surname

Surname

Alphabetical

Ben Adams shall come before Adam Black.

sort education

Education name

Alphabetical, case-insensitive

Charlotte Green (NTU) shall come before Adam Smith (NUS).

sort gpa

GPA

Decreasing numeric value

Adam Smith (3.1) shall come before Charlotte Green (3.9).

sort degree

Degree name

Highest to lowest: PhD, Masters, Bachelors, Associates, High School

Charlotte Green (Masters) shall come before Adam Smith (Bachelors).

sort skills

Arranges each person’s skills alphabetically and then arranges the people based on their skills

Alphabetical, case-insensitive

Peter Parker (Python, Debugging) shall come before Charlotte Oliveiro (Java) since Debugging comes before Java.

sort positions

Arranges each person’s positions alphabetically and then arranges the people based on their positions

Alphabetical, case-insensitive

Charlotte Oliveiro (Project Consultant, Crime Analyst) shall come before Peter Parker (Databases) since Crime Analyst comes before Databases.

sort endorsements

Arranges each person’s endorsements alphabetically and then arranges the people based on their endorsements

Alphabetical, case-insensitive

Irfan Ibrahim (Warren Buffett, Jeff Bezos) shall come before Alex Yeoh (Mark Cuban, Steve Jobs) since Jeff Bezos comes before Mark Cuban.

sort skill number

Number of skills

Decreasing numeric value

Peter Parker (Python, Debugging) shall come before Charlotte Oliveiro (Java) since Peter Parker has two skills whereas Charlotte Oliveiro only has one.

sort position number

Number of positions

Decreasing numeric value

Charlotte Oliveiro (Project Consultant, Crime Analyst) shall come before Peter Parker (Databases) since Charlotte Oliveiro has had two positions whereas Peter Parker only has one.

sort endorsement number

Number of endorsements

Decreasing numeric value

Irfan Ibrahim (Warren Buffett, Jeff Bezos) shall come before Bruce Wayne (Thomas Wayne) since Irfan Ibrahim has two endorsements whereas Bruce Wayne only has one.

sort reverse KEYWORD

Reverses the ordering caused by the KEYWORD

-

sort reverse gpa will cause Adam Smith (3.1) to come after Charlotte Green (3.9).

Intelligent Sorting:

It is possible for persons to share the same information (e.g. both have the same GPA). For this situation a subsequent sorting method to sort these persons is chosen based on what the user, wanting a certain initial sort method, is likely to be interested in.

Since persons in the address book cannot have the same full name, this shall always differentiate persons and so is used as the final sorting method.

Table 2. Flow pattern for the sorting methods

Initial Sort Method

Subsequent Sort Method (for persons with same value after first sort method)

Secondary Subsequent Sort Method (for persons with same value after first and subsequent sort method)

Name

-

-

Surname

Name

-

Skills, Positions, Endorsements

Name

-

Skills, Positions, Endorsements Number

Skills, Positions, Endorsements respectively

Name

Gpa

Name

-

Degree

GPA

Name

Education

GPA

Name

  • The sort command is compatible with the filter command.
    If the Address Book contains ten persons, but the filter has selected just three persons, then only the three persons shall be ordered and returned with the new index numbers.
    Additional filters can be applied within the sort.

  • The sort command is partially compatible with the find command.
    If the Address Book is currently sorted according to a certain method, the find command shall return the persons, according to the specified find keyword, ordered by the previous sort method.
    If the Address Book has currently found certain persons from the find command, a subsequent sort shall sort all those in the address book and not just those that have been found. Should the user wish to just sort a few people, the filter command should be used as outlined above.

  • The sort command is compatible with all other commands (add/clear/delete/edit/exit/help/history/list/redo/select/undo).
    It shall not automatically update the returned list of persons. For example adding a person shall simply add them to the end of the list of persons.

3.11. Deleting a person : delete

Deletes the specified person from the address book.
Format: delete INDEX

  • Deletes the person at the specified INDEX.

  • The index refers to the index number shown in the displayed applicant pool.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list
    delete 2
    Deletes the 2nd person in the applicant pool.

  • find Betsy
    delete 1
    Deletes the 1st person in the results of the find command.

3.12. Selecting a person : select

Selects the person identified by the index number used in the displayed applicant pool.
Format: select INDEX

  • Selects the person and loads the CV the person at the specified INDEX if there is a CV for that person in the storage. If there is not, a placeholder page is loaded that says no CV is available.

  • The index refers to the index number shown in the displayed person list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list
    select 2
    Selects the 2nd person in the address book.

  • find Betsy
    select 1
    Selects the 1st person in the results of the find command.

3.13. Listing entered commands : history

Lists all the commands that you have entered in reverse chronological order.
Format: history

Pressing the and arrows will display the previous and next input respectively in the command box.

3.14. Undoing previous command : undo

Restores the applicant pool to the state before the previous undoable command was executed.
Format: undo

Undoable commands: those commands that modify the applicant pool’s content (add, delete, edit and clear).

Examples:

  • delete 1
    list
    undo (reverses the delete 1 command)

  • select 1
    list
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)

3.15. Redoing the previously undone command : redo

Reverses the most recent undo command.
Format: redo

Examples:

  • delete 1
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)

  • delete 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)
    redo (reapplies the clear command)

3.16. Clearing all entries : clear

Clears all entries from the applicant pool.
Format: clear

3.17. Exiting the program : exit

Exits the program.
Format: exit

3.18. Showing and Updating the CV for a Person:

Showing Stage:

  • Just running the select command or clicking on the wanted person opens the CV.

  • If there is no CV is available for the person, it shows a placeholder page.

Adding a new CV:

  • After running the application first time and selecting someone in the application, the directories ./data/html and ./data/html/cv should be created.

  • To add a new CV to the application, please create an HTML file in ./data/html directory.

    • The name of the directory should be the name of the person in lowercase with no-space-separated format (e.g. if the candidate name is Alex Yeoh, the file name should be alexyeoh.html).

    • The content of the HTML is below. to the field in HTML content [YOUR_JPG_FILE_CV] place the name that you gave to HTML file. But do not add any extension.

    • Prepare the CV you want to add in JPG format and name with the text that you wrote to [YOUR_JPG_FILE_CV] and place this file to directory ./data/html/cv

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="DarkTheme.css">
</head>
<body style="background-color:#383838">
	<img style="display:block; margin-left:auto; margin-right:auto; width:40%"
	src="./cv/[YOUR_JPG_FILE_CV].jpg">
</body>
</html>

Updating a CV:

  • Edit Command: If you change name of a candidate in the application, the name of the HTML file is not automatically updated. Please update the name.

    • If you change name of a person that came to the application by default and has a CV, you cannot reach to that person’s CV until you reverse your edit.

  • Delete Command: If you delete one person from the application, the HTML and JPG files are not automatically deleted. Please delete them manually if you want those files to be deleted.

What comes in v2.0?

  • Automatic file handling for editing and deleting commands.

  • For addition, path of a JPG image will be taken and the html file will be constructed and JPG file will be copied to the right directory directly by the application.

  • Currently, adding multiple CVs at one is not available, thet will be possible with v2.0.

3.19. Saving the data

Applicant data is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

3.20. Adding Multiple Persons [coming in v2.0]

  • Right now, through the application there is no possibility to add multiple persons at once. This feature will come with v2.0.

  • However, there is a way to add multiple persons at once:

    • If you run the application at least once and change some data in it, you will see the directory ./data/addressbook.json.

    • It is the JSON file that holds every single person on the application. The format is given below.

    • As long as the format is correct, you can add as many people as you want or if you have a ready file with the same format, you can replace it directly as long as you rename the file as addressbook.json.

    • The changes made in the file will be shown in the application GUI itself, too.

{
  "persons" : [ {
    "name" : "Claire Smith",
    "phone" : "98765432",
    "education" : "Oxford",
    "gpa" : "2.7",
    "degree" : "PHD",
    "email" : "claireS@gmail.com",
    "address" : "12 Biscuits Way, Oxford",
    "tagged" : [ "s:PHP", "s:C#", "s:C++", "e:Elon Musk", "s:Linux", "p:Systems Analyst", "s:Finance" ]
  }, {
    "name" : "Bruce Wayne",
    "phone" : "92875639",
    "education" : "Stanford",
    "gpa" : "3.6",
    "degree" : "Bachelors",
    "email" : "bruce@wayne.com",
    "address" : "1 Wayne Manor, New York NY",
    "tagged" : [ "e:Thomas Wayne", "p:Project Consultant", "s:Cyber Crime", "s:Hardware Testing", "p:Crime Analyst", "s:Finance", "s:Business Analysis" ]
  }  ]
}

4. 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 application folder.

5. Command Summary

  • Add add n/NAME p/PHONE_NUMBER e/EMAIL d/EDUCATION g/GPA deg/DEGREE-LEVEL a/ADDRESS [skill/TAG]…​ [position/TAG]…​
    e.g. add n/James Ho p/22224444 e/jamesho@example.com d/NTU g/3.1 deg/Bachelors a/123, Clementi Rd, 1234665 skill/Java position/Manager

  • Clear : clear

  • Delete : delete INDEX
    e.g. delete 3

  • Edit : edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [d/EDUCATION] [g/GPA] [deg/DEGREE-LEVEL][a/ADDRESS] [skill/TAG]…​ [position/TAG]…​
    e.g. edit 2 n/James Lee e/jameslee@example.com

  • Find : find KEYWORD [MORE_KEYWORDS]
    e.g. find James Jake

  • Filter :

    • Usage 1: filter and [name<NAME>name] [phone<PHONE>phone] [email<EMAIL>email] [gpa<GPA>gpa] [edu<EDUCATION>edu] [deg<DEGREE-LEVEL>deg] [addr<ADDRESS>addr] [skill<SKILL1, SKILL2, …​ >skill][pos<POSITION1, POSITION2, …​ >pos] [end<ENDORSEMENT>end]
      e.g. filter and name<ale>name gpa<2.6>gpa skill<C++>skill end<2>end email<a@>email

    • Usage 2: filter or [name<NAME>name] [phone<PHONE>phone] [email<EMAIL>email] [gpa<GPA>gpa] [edu<EDUCATION>edu] [deg<DEGREE-LEVEL>deg] [addr<ADDRESS>addr] [skill<SKILL1, SKILL2, …​ >skill][pos<POSITION1, POSITION2, …​ >pos] [end<ENDORSEMENT>end]
      e.g. filter or phone<9>phone edu<NUS>edu pos<Manager, Developer>pos deg<high school>deg addr<street>addr

    • Usage 3: filter clear

    • Usage 4: filter reverse

  • Sort : sort [reverse] KEYWORD
    Valid KEYWORDs: name; surname; education; gpa; degree; skills; positions; endorsements; skill number; position number; endorsement number
    e.g. sort name
    e.g. sort reverse education

  • Endorse : endorse [clear] INDEX n/NAME
    e.g. endorse 1 n/Bill Gates+ e.g. endorse clear 1 n/Bill Gates

  • List : list

  • Help : help

  • Select : select INDEX
    e.g.select 2

  • History : history

  • Undo : undo

  • Redo : redo