TalentNexus is a desktop app for managing recruits, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). For avid keyboard users, TalentNexus can get contact management tasks done faster than traditional GUI apps.
TalentNexus is designed for recruiters and HR professionals who:
Ensure Java 17 or above is installed on the computer.
Check if Java 17 is installed
java -version
17 or above, skip the installation.Install Java 17 (if not installed)
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 17.0.14.fx-zulu
sdk default java 17.0.14.fx-zulu
java -version
Check if Java 17 is installed
java -version
17 or above, skip the installation.Install Java 17 (if not installed)
java -version
Check if Java 17 is installed
java -version
17 or above, skip the installation.Install Java 17 (if not installed)
sudo apt update
sudo apt install openjdk-17-jdk
java -version
Download the latest .jar file from here.
Copy the file to the folder to be designated as the home folder for TalentNexus.
Open a command terminal, navigate to the folder where the .jar file is saved using the cd command and run the command java -jar TalentNexus.jar.
A GUI similar to Figure 1 should appear in a few seconds.
Figure 1: Screenshot of the TalentNexus app
help : Shows help information.list : Lists all recruits.add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 : Adds a recruit named John Doe to the Address Book.edit 1 p/91234567 : Edits the phone number of the 1st recruit.find John : Finds recruits with "John" in their name.delete 3 : Deletes the 3rd recruit shown in the current list.| Action | Format, Examples |
|---|---|
| Add | add n/NAME... [p/PHONE_NUMBER]... [e/EMAIL]... [a/ADDRESS]... [d/DESCRIPTION] [t/TAG]... e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague |
| Edit | edit INDEX|UUID OPERATION [n/NAME]... [p/PHONE_NUMBER]... [e/EMAIL]... [a/ADDRESS]... [d/DESCRIPTION] [t/TAG]...e.g., edit 2 -ap n/James Lee e/jameslee@example.com |
| View | view INDEX|UUIDe.g., view 2 |
| Delete | delete INDEX|UUIDe.g., delete 3 |
| Find | find NAME [-id KEYWORDS] [-n KEYWORDS] [-p KEYWORDS] [-e KEYWORDS] [-a KEYWORDS] [-t KEYWORDS]e.g., find James Jake |
| Sort | sort [-n ORDER] [-p ORDER] [-e ORDER] [-a ORDER]e.g., sort, sort desc, sort n/ asc p/ desc |
| List | list [-archived] [-all]e.g., list, list -archived, list -all |
| Archive | archive INDEXe.g., archive 2 |
| Unarchive | unarchive INDEXe.g., unarchive 1 |
| Undo | undo |
| Redo | redo |
| Export | export [FILEPATH]e.g., export ./data/recruits.csv |
| Clear | clear -confirm |
| Dismiss | dismiss |
| Help | help |
The following points explain how to interpret the command syntax that are used in the subsequent section that explains each command in detail.
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.
A space " " needs to be added before each individual prefix/flag.
e.g. n/NAME t/TAG...
Items in square brackets are optional.
e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [t/TAG]… can be used as (i.e. 0 times), t/friend, t/friend t/family 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.
Extra arguments for commands that do not take in parameters such as help, list, exit and clear will be ignored.
e.g. If the user types help 123, it will be interpreted as help.
When using the PDF versions of the user guide, 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.
UUID vs INDEX: UUID refers to UUID, which is a randomly-generated, unique identifier to identify a unique recruit. UUID is in the form of something like 77da2944-2102-429c-946d-bad6c33c1fe1. INDEX refers to the index number shown to the left of a recruit's name. The index number of a recruit can change depending on various factors such as the order that the recruits are sorted, and whether archived recruits are being listed too.
The pipe symbol | denotes "or" when used in command format. Unless otherwise stated, you may only choose one parameter type to specify but not both.
e.g. view INDEX|UUID means you can pass in either a recruit's id or index right after the command word view, but not both.
view 1 and view 74ce96b7-5249-4368-815f-c5a927ed5b0d are accepted, but view 1|74ce96b7-5249-4368-815f-c5a927ed5b0d is not accepted.If any of the data fields contains special characters like - or /, the command may not be parsed correctly as
these characters are used as prefixes in other commands. Instead, surround the field with quotation marks ",
"like this" to ensure that the data is handled correctly.
e.g. add n/"Anne-Marie" or add n/"Nurul a/p Rahman"
" you want to use \ or ", place the character \ before it to "escape" it, which
basically tells the program that you want to input these special characters. add n/"\"Maria del Carmen\" Pérez" or add n/Ned d/"This is a backslash \\"The following table explains the restriction on the arguments that you can pass in to some commands. Unless otherwise stated, empty arguments are not allowed.
| Parameters | Restriction | Note |
|---|---|---|
INDEX | Positive whole number ranging from 1 to the number of recruits in the current list of recruit. | If there are no recruits in the current list of command, then there is no valid INDEX that can be passed in. |
NAME | Any string with length of at least 1 consisting of only Unicode letter characters, Unicode numeric digit characters, and permitted symbols such as comma ,, doublequote ", apostrophe ', hyphen -, at @, and forward slash /. |
|
PHONE | Any string that satisfies the following:
|
|
EMAIL | Email should follow the format local-part@domain-name. The local-part should adhere to the following constraints:
domain-name should adhere to the following constraints:
|
|
ADDRESS | Any string with length of at least 1 | See Note 2 below |
DESCRIPTION | Any string (can be empty) | - |
TAG | Any string with length of at least 1 and consist of only alphanumeric characters, spaces, and the following permitted special symbols: underscore _, hyphen -, and forward-slash / | Tags are case-sensitive. This means, the tag "swe" and "SWE" are considered two different tags. |
helpFormat: help
Figure 2: Help message pop-up
addAdds a recruit to the address book.
n/Layla n/Layla, an error is raised.Format: add n/NAME... [p/PHONE_NUMBER]... [e/EMAIL]... [a/ADDRESS]... [d/DESCRIPTION] [t/TAG]...
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01add n/Jenny Mantle p/66612873 e/jenneram@example.com a/Shadow maze, block 3, #01-01 d/Considered a friend inside t/bossadd n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminaladd n/田中小泉 n/Max e/koizumi@example.com e/max@example.com a/30 Princess Gina Park t/swe t/test_engineerlistShows a list of all unarchived recruits in the address book. (archived recruits are hidden from the list)
Format: list
-archived or -all as shown belo:Formats:
list — Shows only unarchived (active) recruits (default)list -archived — Shows only archived recruitslist -all — Shows all recruits (both archived and unarchived)viewView the recruit located at the a particular index from the address book.
Format: view INDEX|UUID
INDEX or UUID in the recruit list.Examples:
list followed by view 2 displays the 2nd recruit in the address book.find Betsy followed by view 1 displays the 1st recruit in the results of the find command.editEdits an existing recruit in the address book.
Format: edit INDEX|UUID OPERATION [n/NAME]... [p/PHONE]... [e/EMAIL]... [a/ADDRESS]... [d/DESCRIPTION] [t/TAG]...
INDEX or UUID.OPERATION, which can be append, overwrite, or remove to the specified attributes. If OPERATION is missing, the command is implicitly treated as an overwrite command."/" "-" to prevent the special characters from being misinterpretededit 1 t/ without specifying any tags after the t/ prefix.n/Layla n/Layla, an error is raised.The edit command can perform three types of operation: append, remove, and overwrite.
-ap) operation adds the specified attributes to the existing list of attributes.-rm) operation removes the specified attributes from the existing list of attributes.-o) operation overwrites existing values of all the specified attributes.-primary) operation updates the primary data for the specified attributes.Examples:
edit 1 p/91234567 e/johndoe@example.com edits the phone number and email address of the 1st recruit to be 91234567 and johndoe@example.com respectively.edit 2 n/Betsy Crower t/ edits the name of the 2nd recruit to be Betsy Crower and clears all existing tags.edit 3 -ap e/e01234567@u.nus.edu e/dcsat@nus.edu.sg a/1 Computing Drive adds to the 3rd recruit the email addresses e01234567@u.nus.edu.sg and dcsat@nus.edu.sg, and the address 1 Computing Drive.edit 2 -rm n/花沢かな e/hanazawa@example.com t/seiyuu removes from the 2nd recruit the name 花沢かな, the email hanazawa@example.com, and the tag seiyuu.edit 4 -o p/80135815 p/94647894 n/Lawrence Wonk n/ローレンスヲン edits the names of the 4th recruit to include only Lawrence Wonk and ローレンスヲン, and the phone numbers to include only 80135815 and 94647894.edit -primary 2 p/98989898 n/Dwayne "Ping Qilin" Johnsson updates the 2nd recruit's primary phone number to 98989898 and the primary name to Dwayne "Ping Qilin" Johnsson, assuming that this phone number and name exist.deleteDeletes the specified recruit from the address book.
Format: delete INDEX|UUID
INDEX or UUID.Examples:
list followed by delete 2 deletes the 2nd recruit in the address book.find Betsy followed by delete 1 deletes the 1st recruit in the results of the find command.undoUndoes operations that were done recently.
Format: undo
Example usage scenarios:
redoRedoes operations that were undone recently.
Format: redo
Examples usage scenario:
findFinds all recruits whose details match any of the given keywords.
Format: find NAME [id/KEYWORDS] [n/KEYWORDS] [p/KEYWORDS] [e/KEYWORDS] [a/KEYWORDS] [t/KEYWORDS]
The NAME keyword(s) take precedence
The flag / preceding KEYWORDS specifies the field(s) to search under:
id/ — Search by UUIDn/ — Search by Namep/ — Search by Phonee/ — Search by Emaila/ — Search by Addresst/ — Search by TagThe search is case-insensitive
For each attribute (e.g. phone, email), multiple search keywords can be specified by chaining repeated flags (-n alice -n bob).
If no flag is provided, the app searches using NAME keywords by default
If multiple search criteria are provided, the result will include all recruits who satisfy them. (See below for examples)
If duplicate entries are specified for any particular attribute, for example n/Layla n/Layla, an error is raised.
Shorthand formats:
find alice — Finds recruits whose name contains “alice” (case-insensitive)find n/alice n/bob n/charlie — Finds recruits whose name contains “alice”, “bob”, or “charlie”find a/Clementi a/Tampines — Finds recruits whose address contains “Clementi” or “Tampines”find t/volunteer t/intern t/cleaner — Finds recruits tagged as “volunteer” or “intern” or "cleaner"find p/98765432 p/91234567 — Finds recruits whose phone number contains “98765432” or “91234567”find e/gmail e/hotmail — Finds recruits whose email contains “gmail” or “hotmail”Chaining multiple flags:
find n/alice n/bob a/Clementi a/Jurong — Finds recruits whose name contains “alice” or “bob”, and whosefind n/alice p/98765432 p/91234567 — Finds recruits whose name contains “alice” and whose phone matches either numberfind t/intern t/fulltime a/Bukit a/Pasir — Finds recruits tagged as “intern” or “fulltime”, and whose address contains
“Bukit” or “Pasir”Examples:
find alice — Finds all recruits with “alice” in their namefind n/alice n/bob n/charlie — Finds recruits whose name matches “alice”, “bob”, or “charlie”find a/Clementi a/Tampines p/98765432 p/91234567 — Finds recruits with “Clementi” or “Tampines” in their address, and whose phone numbers contain “98765432” or “91234567”find t/volunteer t/member e/gmail — Finds recruits tagged as “volunteer” or “member”, and with a Gmail addressfind id/123 id/456 id/789 — Finds recruits whose UUID contains “123”, “456”, or “789”
Figure 3: Searching for recruits whose name contains "Benjamin" and "Bukit Batok" in their address
Figure 4: Searching for recruits whose name contains either "Johnathon" or "Ben"
sortSorts all recruits in the address book by specified fields in ascending or descending order.
Format: sort [PARAMETER ORDER]...
PARAMETER includes -n for name, -p for phone, -e for email, and -a for address.ORDER can be either asc (ascending) or desc (descending).asc or desc is provided (without field prefixes), recruits will be sorted by name in that order.Shorthand formats:
sort - Sorts by name in ascending ordersort asc - Sorts by name in ascending ordersort desc - Sorts by name in descending orderExamples:
sort - Sorts all recruits by name in ascending order (A to Z)sort desc - Sorts all recruits by name in descending order (Z to A)sort -n asc - Sorts all recruits by name in ascending ordersort -p desc - Sorts all recruits by phone number in descending ordersort -n asc -p desc - Sorts by name (ascending) first, then by phone number (descending) for recruits with the same namesort -e asc -a desc - Sorts by email (ascending) first, then by address (descending) for recruits with the same emailsort -n -p desc - Sorts by name (ascending) first, then by phone number (descending) for recruits with the same namesort -n -e - Sorts by name (ascending) first, the by email (ascending) for recruit with the same namearchiveArchives a recruit to hide them from the default list view while preserving their information.
Format: archive INDEX|UUID
Parameters:
INDEX — The index number shown in the displayed recruit listUUID — The UUID of the recruit to archiveWhat is archiving?
list view but remain in the systemlist -archived (which will list out all the archived recruits only) or list -all (which will list out all recruits - archived & unarchived)Examples:
list followed by archive 2 archives the 2nd recruit in the address bookfind John followed by archive 1 archives the 1st recruit in the results of the find commandunarchiveUnarchives a previously archived recruit to restore them to the active recruit list.
Format: unarchive INDEX|UUID
Parameters:
INDEX — The index number shown in the displayed recruit list (must be viewing archived recruits)UUID — The UUID of the recruit to unarchiveExamples:
list -archived followed by unarchive 1 unarchives the 1st recruit in the archived listlist -all followed by unarchive 3 unarchives the 3rd recruit if they are archivedexportExport all recruits in the address book to a .csv file.
Format: export FILEPATH
FILEPATH is optional, if none is given the default filepath found in preferences.json will be used.Examples:
export Exports all recruits to the default filepath found in preferences.json.export ./data/recruits.csv Exports all recruits to the relative filepath ./data/recruits.csv.Figure 5: Exported recruits list in .csv format from TalentNexus
clearClears all entries from the address book.
Format: clear -confirm
-confirm flag is required to confirm deletion of all recruits.-confirm is not specified, this command will simply display a help message.dismissClears the message shown after executing a command.
Format: dismiss
exitExits the program.
Format: exit
Recruit data is saved automatically after any command is executed. There is no need to save manually.
Recruit data is saved automatically as a JSON file [JAR file location]/data/TalentNexusData.json. Advanced users are welcome to update data directly by editing that data file.
Q: How do I transfer my data to another Computer?
A: First, install TalentNexus on the new computer. Then, locate the TalentNexusData.json file in the /data folder of your current installation and copy it over to the same location on the new machine, replacing the existing file.
Q: Can I use TalentNexus without an internet connection? A: Yes. TalentNexus is a fully offline desktop application. No internet connection is required to use any of its features.
Q: What happens if I accidentally delete a recruit?
A: Deleted recruits can be restored immediately using the undo command (undo), as long as the application has not been closed since the deletion.
Q: How do I back up my data?
A: Copy the TalentNexusData.json file located in the /data folder (in the same directory as the .jar file). Store this backup in a safe place (cloud storage, external drive, etc.).
Q: Can I import data from another AddressBook or TalentNexus installation?
A: Yes. Copy the TalentNexusData.json file from the other installation into the current /data folder, replacing the existing file. Always back up the current TalentNexusData.json file first.
Q: Why are my changes not appearing after restarting the app?
A: This can happen if the app is executed from a different file directory or the data file has been moved. Make sure the TalentNexusData.json file is placed in the /data folder.
Q: What if I enter invalid recruit data inside the data file? A: TalentNexus always validates the data file on startup. If the file format is invalid, the app may reset the data file. Always back up the data file before making manual edits to it.
Q: How do I view archived recruits?
A: Use list -archived to show only archived recruits, or list -all to view both archived and active recruits.
Q: What should I do if a command doesn’t work?
A: Check the command syntax against the Command summary and the relevant command section. Type help to view the quick command guide.
Q: How do I reset the application to its default state?
A: Delete both preferences.json and TalentNexusData.json files from the ./data folder. On next launch the app will recreate default files and sample data.
Q: How do I run TalentNexus with a specific Java version? A: Ensure the desired JDK is installed and added to the computer's environment variables. Then, run the app with that Java version.
Q: Where can I find the JSON schema or data format?
A: The primary data file is TalentNexusData.json and stores recruits as JSON objects with fields such as name, phone, email, address, tags, archived, and uuid. To edit the file manually, back it up first and preserve the valid JSON and expected field types (arrays for multiple values like email/phone/name).
Q: The Help window opened off-screen or is minimized — what do I do?
A: Close the app and delete the preferences.json file in the ./data folder to reset window positions. Relaunch the app to restore windows to default locations.
Q: Is there a limit to how many operations I can undo?
A: There is a limit of up to 200 consecutive undo operations. Note that certain actions (like closing the app) may clear the undo history.
Q: Who do I contact for bug reports or feature requests?
A: Create an issue on the project repository (if using the upstream AddressBook/TalentNexus repo). Include reproducible steps, the preferences.json and TalentNexusData.json (sanitized if needed), and the Java version used.
Q: My computer has a different java version installed and the application is not launching as expected? A: To switch to Java 17, first ensure it is installed by following the instructions here. After installation, update your system’s JAVA_HOME environment variable to the Java 17 installation directory such that the /bin folder of Java 17 comes before other Java versions. On Windows, this can be done via System Properties > Environment Variables; on macOS or Linux, update .bashrc, .zshrc, or .profile to export the correct paths. Finally, restart your terminal or IDE and run java -version to confirm Java 17 is now in use.
Q: What does the button with two paper icon next to the recruit UUID do> A: This is a copy button. When clicked, the recruit's UUID will be copied to your computer's clipboard, and you may paste it anywhere you need it.
preferences.json file created by the application before running the application again.help command (or use the Help menu, or the keyboard shortcut F1) 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.If you are running a Linux-based operating system such as Ubuntu and Linux Mint, you may experience some of the issues below:
sudo vi ~/.local/share/applications/TalentNexus.desktop in your terminal.Ctrl + Shift + V, replacing <ABSOLUTE PATH TO JAR FILE> and <ABSOLUTE PATH TO ICON FILE> with the corresponding absolute path where you save these files. For example, you may pass in /home/username/tnexus/TalentNexus.jar as <ABSOLUTE PATH TO JAR FILE>, and /home/username/tnexus/address_book_32.png as <ABSOLUTE PATH TO ICON FILE>, assuming the JAR file and the icon file you downloaded are stored in the folder tnexus in the Linux home directory for your user account.[Desktop Entry]
Type=Application
Name=TalentNexus
Exec=java -jar <ABSOLUTE PATH TO JAR FILE>
Icon=<ABSOLUTE PATH TO ICON FILE>
Terminal=false
Categories=Utility;Application;
Comment=Portable JavaFX Application
StartupWMClass=seedu.address.MainApp
:q, and then pressing the 'enter' key.