TalentMatch is the ultimate power tool for HR recruiters in Singapore SMEs who are drowning in internship applications from local universities and need a lifeline. Say goodbye to spreadsheet nightmares and scattered emails!
Are you tired of:
TalentMatch combines lightning-fast command-line efficiency with intuitive visuals to give you complete control over your recruitment pipeline. Our SME-focused solution lets you manage your entire internship program from a single dashboard.
With TalentMatch's CLI interface, you can:
The more you type, the more time you save. Master our simple commands and watch your productivity soar!
Ensure you have Java 17 or above installed in your Computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your AddressBook.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar TalentMatch.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.

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:
listjob : Lists all job entries.
addjob jt/Software Developer jr/3 k/JavaScript: Adds a job titled Software Developer to TalentMatch.
deljob 3 : Deletes the 3rd job shown in the current list.
clear : Deletes all entries.
exit : Exits the app.
Refer to the Features below for details of each command.
TalentMatch supports remembering command history, allowing you to be able to navigate through your past inputs and reduce the need to type out every command from scratch!
Simply use the up and down arrow keys after clicking on the command box text input area and navigate through your past inputs like how you would in terminal.
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by you.
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 [k/SKILL] can be used as n/John Doe k/Python or as n/John Doe.
Items with …​ after them can be used multiple times including zero times.
e.g. [k/SKILL]…​ can be used as (i.e. 0 times), k/Python, k/Java k/Python 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.
All prefixes and commands used in TalentMatch are case-sensitive.
e.g. if the command specifies n/NAME p/PHONE_NUMBER, N/NAME P/PHONE_NUMBER is not acceptable.
e.g. if the command specifies addjob jt/JOB_TITLE, ADDJOB JT/JOB_TITLE is not acceptable.
All parameters that accept alphanumeric characters are case-insensitive, except for EMAIL.
Extraneous parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
Job commands should be called only in job view while person commands should be called only in person view. This is to ensure you can see real time updates in response to their queries.
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.
Commands that are suitable for use in either person view or job view.
helpShows a message explaining how to access the help page.
Format: help
switchSwitches the view of GUI from job view to person view and vice versa.
Please note the differences in job view and person view as the commands available are different.
Job View: Displays a list of all jobs and applications
Person View: Displays a list of all persons
Format: switch
clearClears all entries from TalentMatch, removing applications, jobs and persons.
Format: clear
exitExits the program.
Format: exit
These commands support CRUD operations on Jobs and are only available to you in Job View so that you are able to see real time updates on the GUI.
| Parameters | Definition | Constraints |
|---|---|---|
JOB_TITLE | Name of the job opening | Only alphanumeric characters and spaces allowed, and should not be blank. |
JOB_ROUNDS | Number of rounds that an applicant has to complete before receiving an offer | Must be a positive integer between 1 and 10 (inclusive). |
SKILL | Skills that are required by the job | Only alphanummeric charcters are allowed, with the exception of . and /. Skills should only be one word with no spaces. |
INDEX | Index of the job in the displayed job list in Job View | Must be a natural number and should be an index displayed in Job View. |
addjobAdds a job to TalentMatch
Format: addjob jt/JOB_TITLE jr/INTERVIEW_ROUNDS [k/SKILL]…​
Tip: A job can have any number of skills (including 0)
Expected output:
addjob jt/Quant Analyst jr/5 k/Maths k/Analytic adds a job with the specified details
Examples:
addjob jt/Software Engineering jr/3 k/React k/JavaScript adds Software Engineering job with 3 rounds and requires applicants to know React and JavaScript.editjobEdits an existing job in TalentMatch.
Format: editjob INDEX [jt/JOB_TITLE] [jr/JOB_ROUNDS] [k/SKILL]…​
INDEX. The index refers to the index number shown in the displayed job list.k/ without
specifying any skills after it.Warning:
Attempting to change JOB_ROUNDS to a number less than the application status of any current applicant for that job will result in an error.
Expected output:
editjob 2 jr/5 edits the 2nd job and changes JOB_ROUNDS to 5.
Examples:
editjob 7 jt/Software Engineering jr/3 edits the 7th job and changes its JOB_TITLE to Software Engineering and JOB_ROUNDS to 3.listjobShows a list of all jobs in TalentMatch.
Format: listjob
findjobFinds jobs whose details contain any of the given keywords.
Format: findjob KEYWORD [MORE_KEYWORDS]…​
software will match SoftwareEngineering Software will match Software EngineeringEngi will not match EngineerOR search).Engineer will return Software Engineer, AI Engineerfindjob 2 will return jobs that contain 2 any of the searchable fields.findjob command searches the displayed list using logical OR.
e.g. findjob data engineering will return Software Engineering and Data Scientistfindjob commands continue the search based on the current displayed list.
e.g. findjob data engineering followed by findjob engineering will only return Software Engineeringlistjob to reset back to original list and continue searching again.Searchable fields:
Expected output:
findjob data engineer returns jobs which contain data or engineer in their details.findjob data engineer followed by findjob software returns jobs which contains data or engineer, and software in its details.Examples:
findjob Software returns jobs that contain Software in their details.deljobDeletes the specified job from TalentMatch.
Format: deljob INDEX
INDEX.Expected output:
deljob 7 deletes the job at the 7th index.
Examples:
listjob followed by deljob 2 deletes the 2nd job in TalentMatch.findjob Software Engineering followed by deljob 1 deletes the 1st job in the results of the findjob command.These commands support CRUD operations on Persons and are only available to you in Person View so that you are able to see real time updates on the GUI.
| Parameters | Definition | Constraints |
|---|---|---|
NAME | Name of the applicant | Only alphanumeric characters and spaces allowed, and should not be blank. |
PHONE_NUMBER | Phone number of the applicant | Should be a valid Singapore phone number (starts with 6, 8 or 9), and contain only 8 numbers. |
EMAIL | Email of the applicant | Emails should be of the format local-part@domain and adhere to the following constraints: 1. The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-). The local-part may not start or end with any special characters. 2. This is followed by a '@' and then a domain name. The domain name is made up of domain labels separated by periods. The domain name must: - end with a domain label at least 2 characters long - have each domain label start and end with alphanumeric characters - have each domain label consist of alphanumeric characters, separated only by hyphens, if any. |
ADDRESS | Address of the applicant | Contains alphanumeric characters and special characters, and should not be blank. |
SCHOOL | School that the applicant is currently studying in | Only alphanumeric characters and spaces allowed, and should not be blank. |
DEGREE | Degree that the applicant is currently pursuing | Only alphanumeric characters and spaces allowed, and should not be blank. |
SKILL | Skills that the applicant possesses | Only alphanummeric charcters are allowed, with the exception of . and /. Skills should only be one word with no spaces. |
INDEX | Index of the person in the displayed person list in Person View | Must be a natural number and should be an index displayed in Person View. |
addAdds a person to TalentMatch.
Format: add n/NAME s/SCHOOL d/DEGREE p/PHONE_NUMBER e/EMAIL a/ADDRESS [k/SKILL]…​
Tip: A person can have any number of skills (including 0)
Expected output:
add n/John Doe s/NUS d/Computer Science p/98765432 e/johnd@example.com a/John street, block 123, #01-01 adds a person with the specified details.
Examples:
add n/John Doe s/NUS d/Computer Science p/98765432 e/johnd@example.com a/John street, block 123, #01-01 adds a person with the specified details without skills.add n/Betsy Crowe s/NTU d/Civil Engineering k/Communication e/betsycrowe@example.com a/Newgate Prison p/97542384 k/Python adds a person with the specified details with skills.editEdits an existing person in TalentMatch.
Format: edit INDEX [n/NAME] [s/SCHOOL] [d/DEGREE] [p/PHONE] [e/EMAIL] [a/ADDRESS] [k/SKILL]…​
INDEX. The index refers to the index number shown in the displayed person list.k/ without
specifying any skills after it.Expected output:
edit 7 k/python edits the person at the 7th index to have 1 skill.
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 k/ Edits the name of the 2nd person to be Betsy Crower and clears all existing skills.listShows a list of all persons in TalentMatch.
Format: list
findFinds persons whose details contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]…​
hans will match HansHans Bo will match Bo HansHan will not match HansOR search).Hans Bo will return Hans Gruber, Bo Yangfind Alice will return persons that contain Alice in any of the searchable fields.findjob command searches the displayed list using logical OR.
e.g. find Hans Bo will return Hans Gruber, Bo Yangfind commands continue the search based on the current displayed list.
e.g. find Hans Bo followed by find Hans will only return Hans Gruberlist to reset back to original list and continue searching again.Searchable fields:
Expected output:
find alex irfan returns persons who contain alex or irfan in their detailsfind alex irfan followed by find yeoh returns persons who contain alex or irfan, and yeoh in their details.Examples:
find John returns john and John Doefind alex david returns Alex Yeoh, David LidelDeletes the specified person from TalentMatch.
Format: del INDEX
INDEX.Expected output:
del 7 deletes the person at the 7th index.
Examples:
list followed by del 2 deletes the 2nd person in TalentMatch.find Betsy followed by del 1 deletes the 1st person in the results of the find command.These commands support CRUD operations on Applications and are only available to you in Job View so that you are able to see real time updates on the GUI.
| Parameters | Definition | Constraints |
|---|---|---|
PERSON_INDEX | Index of the person in the displayed person list in Person View | Must be a natural number and should be an index displayed in Person View. |
JOB_INDEX | Index of the job in the displayed job list in Job View | Must be a natural number and should be an index displayed in Job View. |
APPLICATION_STATUS | A numerical value indicating an applicant's progress through the interview process | Must be a positive integer >= 0 and should be less than or equal JOB_ROUNDS of that particular job. |
APPLICATION_INDEX | Index of the application in the displayed job list in Job View | Must be a natural number and should be an index displayed in Job View. |
Here is a brief label of the various parameters:
addappAdds an application to TalentMatch
Format: addapp ip/PERSON_INDEX ij/JOB_INDEX
PERSON_INDEX can be obtained by switching to Person View in TalentMatch.JOB_INDEX can be obtained by switching to Job View in TalentMatch.addapp is the only application command that is available to you in both Person and Job view.Warnings:
This application already exists in the address book Try using delapp instead!Expected output:
addapp ip/1 ij/4 adds an application which has the person at index 1 as the applicant and the job at index 4 as the job that he/she is applying for.
Examples:
addapp ip/3 ij/6 adds an application for the 3rd person to the 6th job in the current displayed person and job list respectively.findappFinds application by JOB_INDEX and APPLICATION_STATUS in Job View.
Format: findapp as/APPLICATION_STATUS [ij/JOB_INDEX]
Tip:
APPLICATION_STATUS on its own returns all applications with the specified APPLICATION_STATUS.APPLICATION_STATUS and JOB_INDEX returns all applications under the specified job at JOB_INDEX with the specified APPLICATION_STATUS.findapp works on the current displayed list of jobs (i.e. if there are multiple jobs with applications with an APPLICATION_STATUS of 3 in TalentMatch, but only 1 job is currently displayed on the job list, findapp as/3 returns only that 1 job).listjob to clear any existing filters to reset the search space to the entire job list.Warnings:
JOB_INDEX and APPLICATION_STATUS must be valid positive integers (exception of APPLICATION_STATUS having 0) existing in the respective views.findjob can be used alongside findapp, however do note that all searches will search the current displayed list.
APPLICATION_STATUS of 2), findapp as/2 returns all applications with APPLICATION_STATUS of 2, using findjob A after will return job A with only 2 applications shown (despite there existing 3 applications).Expected output:
findapp as/2 returns all applications in TalentMatch that currently have APPLICATION_STATUS of 2.
Example:
findapp as/3 ij/2 returns all applications with APPLICATION_STATUS of 3 for the 2nd job in the displayed job list.
delappDeletes the specified application from TalentMatch.
Format: delapp ij/JOB_INDEX ia/APPLICATION_INDEX
Tip: Both the job and application indices can be obtained from the job view alone.
Warnings:
JOB_INDEX and APPLICATION_INDEX must be valid positive integers existing in Job View.This application does not exist in the address book. Try using addapp to add an application first!Expected output:
delapp ij/1 ia/1 deletes the 1st application for the 1st job.
Example:
delapp ij/2 ia/3 deletes the 3rd application for the 2nd job.
advappAdvances an application to the next round of interview.
Format: advapp ij/JOB_INDEX ia/APPLICATION_INDEX
Warnings:
JOB_INDEX and APPLICATION_INDEX must be valid indices existing in Job View.This application does not exist in the address book. Try using addapp to add an application first!Expected output:
advapp ij/2 ia/1 advances the 1st application for the 2nd job by one round.
Example:
advapp ij/1 ia/2 advances the 2nd application for the 1st job by one round (if it exists).viewjobDisplays a sidebar that shows the job title and the number of applicants for that job. It also shows the distribution of applicants across different interview rounds in a bar chart, and the skills required for the job.
Format: viewjob INDEX
INDEX.Expected output:
viewjob 1 displays information about the 1st job in the sidebar.Examples:
listjob followed by viewjob 2 displays detailed information of the 2nd job in TalentMatch.viewjob 1 shows detailed information about the first job in the current list.viewjob 10 will return a INVALID_INDEX_MESSAGE if there is no job at index 10.viewjob 0 will return a INVALID_COMMAND_MESSAGE as the index must be a natural number.viewpersonShows a sidebar that shows the applicant's name, school, degree, phone number, email, address, and skills. It also shows the application status of the applicant for the job through a progress bar.
Format: viewperson ij/JOB_INDEX ia/APPLICATION_INDEX
APPLICATION_INDEX for the job at the specified JOB_INDEX.Expected Output:
viewperson ia/1 ij/1 displays information about the 1st applicant of the 1st job in the sidebar.Examples:
viewperson ij/1 ia/1 in job view will generate a sidebar with detailed information of the applicant associated with the 1st application for the 1st job (if it exists).viewjob 1 followed by viewperson ij/1 ia/2 displays detailed information of the applicant associated with the 2nd application for the 1st job.viewperson ij/1 ia/2 will return a NOT_FOUND_MESSAGE if there are no applications at index 2 for the job at index 1.viewperson ij/1 ia/0 will return a INVALID_COMMAND_MESSAGE as the application index must be a natural number.TalentMatch data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
TalentMatch stores data in two separate JSON files:
[JAR file location]/data/addressbook.json - Contains all person and job data[JAR file location]/data/applicationbook.json - Contains all application data linking persons to jobsAdvanced users can update data directly by editing these files, but caution is advised.
Do note that all case-insensitive fields are stored in lowercase in these files and casing is done automatically by TalentMatch.
Caution: If your changes to the data files make their format invalid, TalentMatch will handle it as follows:
If you correctly edit the files and maintain valid format:
If the address book file is invalid or missing:
If only the applications file is invalid or missing:
If both files are valid but contain inconsistencies:
It is strongly recommended to:
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 AddressBook home folder.
Q: Why are the commands limited to specific views?
A: We limit commands to their specific views to ensure you are able to see real time updates in the GUI. This is in consideration of the case you type the wrong command and accidentally
change data in the other view unknowingly.
Q: Why are the find commands so restrictive?
A: TalentMatch is built with the assumption that experienced users will be unlikely to make typing mistakes when searching for a certain job/person, hence having a find function that continuously
reduces the search space improves your experience by being able to narrow down your displayed lists for easier addition of applications. In the event of typing a wrong keyword, you can use list/listjob in the
appropriate view to reset your current search and try searching again.
Q: Why are skills limited to 1 word?
A: TalentMatch follows typical resume formats where skills are listed as single words. In the event of skills that take up multiple words, you can compromise by
concatenating them into a single word.
preferences.json file created by the application before running the application again.help command again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.| Action | Format, Examples |
|---|---|
| Add | add n/NAME s/SCHOOL d/DEGREE p/PHONE_NUMBER e/EMAIL a/ADDRESS [k/SKILL]…​ e.g., add n/James Ho s/NUS d/Physics p/83920347 e/jamesho@example.com a/123, Clementi Rd, 1234665 k/python k/java |
| AddJob | addjob jt/JOB_TITLE jr/INTERVIEW_ROUNDS [k/SKILL]…​ e.g., addjob jt/Software Engineering jr/3 k/Python |
| AddApp | addapp ip/PERSON_INDEX ij/JOB_INDEX e.g., addapp ip/1 ij/1 |
| AdvApp | advapp ij/JOB_INDEX ia/APPLICATION_INDEX e.g., advapp ij/1 ia/1 |
| Clear | clear |
| Delete | del INDEXe.g., del 3 |
| DeleteJob | deljob INDEX e.g., deljob 3 |
| DeleteApp | delapp ij/JOB_INDEX ia/APPLICATION_INDEX e.g., delapp ij/1 ia/1 |
| Edit | edit INDEX [n/NAME] [s/SCHOOL] [d/DEGREE] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [k/SKILL]…​e.g., edit 2 n/James Lee e/jameslee@example.com |
| EditJob | editjob INDEX [jt/JOB_TITLE] [jr/INTERVIEW_ROUNDS] [k/SKILL]…​ e.g., editjob 7 jt/Software Engineering jr/3 |
| Find | find KEYWORD [MORE_KEYWORDS]…​e.g., find James Jake |
| FindJob | findjob KEYWORD [MORE_KEYWORDS]…​e.g., findjob Software Engineering |
| FindApp | findapp as/APPLICATION_STATUS [ij/JOB_INDEX] e.g., findapp as/2 ij/1 |
| Help | help |
| List | list |
| ListJobs | listjob |
| Switch | switch |
| ViewJob | viewjob INDEX e.g., viewjob 3 |
| ViewPerson | viewperson ij/JOB_INDEX ia/APPLICATION_INDEX e.g., viewperson ij/1 ia/2 |