FinHub is a desktop app for insurance agents to manage clients. It helps them to better organise all information related to each client, optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, FinHub can get your client management tasks done faster than traditional GUI apps.
Tip: In addition to managing standard contact fields, FinHub also allows you to add reminders and meeting notes to each client. You also have the option to star or archive clients for better client organisation.
Tips:
Want to skip straight to the available commands?
Click Here for the Command Summary!
or need some definitions?
Click Here for the Glossary!
Note: FinHub opens active list by default at start/restart.
Our target users are insurance agents who:
Make sure you have Java 17 or above installed in your computer.
Mac users: Make sure you have the precise JDK version
listed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for FinHub.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar FinHub.jar
command to run the application.
A window like the one below will appear after a few seconds. Note how the app contains some sample data.

Type the command in the command box and press Enter to execute it. e.g. typing help and pressing Enter will
open the help window.
Some example commands you can try:
list : Lists all contacts.
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 ip/AIB Premium Plan : Adds a contact named John Doe
to FinHub.
delete 3 : Deletes the 3rd contact shown in the current list.
clear : Deletes all contacts.
exit : Exits the app.
reminder 2 h/Meeting on Friday d/2026-04-24 16:00 : Adds a reminder with header Meeting on Friday to client
index 2.
Refer to the Features below for details of each command.
General remarks about the command formats:
You need to supply the parameters which are in UPPER_CASE.
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/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 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.
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.
Any indices i.e. CLIENT_INDEX, REMINDER_INDEX and MEETING_NOTE_INDEX must be positive integers 1, 2, 3, …
NAME should only contain alphanumeric characters, spaces, periods, apostrophes, hyphens, parentheses,"
slashes, and commas, must not be blank, and must contain at least one letter.
PHONE_NUMBER should only contain numbers, and it should be at least 3 digits long.
EMAIL should be of the format local-part@domain and adhere to the following constraints:
ADDRESS can take any values, and it should not be blank.
INSURANCE_POLICY may only contain letters, digits, spaces, and + / & ( ) ' . , - "
and must include at least one letter or digit.
TAG should be alphanumeric.
The PHONE_NUMBER and EMAIL of a client must be unique. Any duplicate entries during the add or edit client process will be rejected.
helpDisplays a message explaining how to access the help page.
Format: help
listDisplays a complete list of all clients in the FinHub system, including both active and archived clients.
Format: list
Below is an image showing what you should expect to see after running the list command with sample data.

activelistDisplays only the active clients currently in the FinHub system.
Format: activelist
The image below displays the list of active clients after Bernice and Charlotte were archived from the sample data.
archivelistDisplays all clients who have been archived in the FinHub system, meaning they are no longer active.
Format: archivelist
The clients shown in the image below are those you have archived. This example shows Bernice and Charlotte from the sample data.
clearClears all entries in FinHub, including client data, records, and any stored information.
Format: clear
Warning: This action will permanently erase all data in FinHub and cannot be undone. Make sure to back up any important information before proceeding.
Expected Output Message: FinHub has been cleared!
exitExits FinHub.
Format: exit
addAdds a client to FinHub.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS ip/INSURANCE_POLICY [t/TAG]…
Tip: A client can have any number of tags (including 0)
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 ip/AIB Premium PlanAssumptions:
Expected Output Message: New client added: John Doe; Phone: 98765432; Email: johnd@example.com; Address: John street, block 123, #01-01; Insurance Policy: AIB Premium Plan; Tags:
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Palace street, block 456, #03-03 p/1234567 t/classmate ip/AIB LifePlandeleteDeletes a specified client from FinHub.
Format: delete CLIENT_INDEX
CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.Examples:
activelist followed by delete 2 deletes the 2nd client in the currently displayed clients list.Assumptions:
Expected Output Message: Deleted Client: Alex Yeoh; Phone: 87438807; Email: alexyeoh@example.com; Address: Blk 30 Geylang Street 29, #06-40; Insurance Policy: AIB HealthShield Gold Max; Tags: [friends]
find alex followed by delete 1 deletes the 1st client in the results of the find command.editEdits an existing client in FinHub.
Format: edit CLIENT_INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [ip/INSURANCE_POLICY]
CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the displayed clients list.t/ without specifying any tags after it.Examples:
activelist followed by edit 1 p/91234567 ip/Health policy changes the 1st client’s PHONE to 91234567
and INSURANCE_POLICY to Health policy respectively in the currently displayed client list.Assumptions:
Expected Output Message: Edited Client: Bernice Yu; Phone: 91234567; Email: berniceyu@example.com; Address: Blk 30 Lorong 3 Serangoon Gardens, #07-18; Insurance Policy: Health policy; Tags: [colleagues][friends]
find alex yeoh followed by edit 1 n/Alex Tan t/ changes the name of the first client in the results of the find command to Alex Tan and clears all his existing tags.findFinds clients whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
OR search).Examples:
find ale returns Alex Yeoh.Assumptions:
**Expected Output Message: 2 persons listed!
starStars the specified client in FinHub. Starred clients will have a star displayed next to their name, and will be bumped to the top of the displayed clients lists along with other starred clients.
Format: star CLIENT_INDEX
CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.Examples:
activelist followed by star 1 stars the 1st client in the currently displayed clients list.activelist followed by star 2 stars the 2nd client in the currently displayed clients list.find Alex followed by star 1 stars the 1st client in the results of the find command.Tip: You can use this feature to mark important clients as favourites!
unstarRemoves the starred status of a specified client in FinHub.
Format: unstar CLIENT_INDEX
CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.Examples:
activelist followed by unstar 1 removes star status from the 1st client in the currently displayed clients list.activelist followed by unstar 2 removes star status from the 2nd client in the currently displayed clients list.find Alex followed by unstar 1 removes star status from the 1st client in the results of the find command.Assumption:
Expected Output Message: Starred status removed from Client: Alex Yeoh; Phone: 87438807; Email: alexyeoh@example.com; Address: Blk 30 Geylang Street 29, #06-40; Insurance Policy: AIB HealthShield Gold Max; Tags: [friends]
archiveArchives the specified client in FinHub.
Format: archive CLIENT_INDEX
CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the displayed clients list.Examples:
activelist followed by archive 1 archives the 1st client in the displayed clients list.find Alex followed by archive 1 archives the 1st client in the results of the find command if he is not archived.Assumption:
Expected Output Message: Client archived: Alex Yeoh; Phone: 87438807; Email: alexyeoh@example.com; Address: Blk 30 Geylang Street 29, #06-40; Insurance Policy: AIB HealthShield Gold Max; Tags: [friends]
Tip: Temporarily archive inactive clients to de-clutter your active clients list!
Note:: Edits made to any archived client will automatically unarchive them.
unarchiveUnarchives the specified client in FinHub.
Format: unarchive CLIENT_INDEX
CLIENT_INDEXCLIENT_INDEX refers to the index number of the client shown in the archived clients list.Examples:
archivelist followed by unarchive 1 unarchives the 1st client in the displayed clients listfind Alex followed by unarchive 1 unarchives the 1st client in the results of the find command if he is archived.Assumption:
Expected Output Message: Client unarchived: Alex Yeoh; Phone: 87438807; Email: alexyeoh@example.com; Address: Blk 30 Geylang Street 29, #06-40; Insurance Policy: AIB HealthShield Gold Max; Tags: [friends]
Note: You have to be in archivelist to unarchive clients.
reminderAdds a reminder to a specified client in FinHub.
Format: reminder CLIENT_INDEX h/HEADER d/DEADLINE
CLIENT_INDEX.HEADER which describes the task or event, and a DEADLINE which indicates when it's due.HEADER cannot be empty.DEADLINE should be in the format: yyyy-MM-dd HH:mmCLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.HEADER and DEADLINE must be provided.Examples:
activelist followed by reminder 2 h/Meeting on Friday d/2026-04-24 16:00 adds the reminder "Meeting on Friday, due by
2026-04-24 16:00" to the 2nd client in the currently displayed clients list.Assumption: Bernice Yu is the 2nd client in the currently displayed clients list.
Expected Output Message: Reminder added to Bernice Yu: Meeting on Friday, due by 2026-04-24 16:00
find alex followed by reminder 1 h/Meeting on Saturday d/2026-06-24 18:00 adds the reminder "Meeting on Saturday,
due by 2026-06-24 18:00" to the 1st client in the results of the find command.Tip: You can use reminders to stay on top of important client events, renewals, or follow-ups — never miss a key date again!
rDeleteDeletes a reminder from a specified client in FinHub.
Format: rDelete CLIENT_INDEX REMINDER_INDEX
REMINDER_INDEX of the specified client at CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.REMINDER_INDEX refers to the index number of the reminder shown in the specified client's currently displayed reminders list.CLIENT_INDEX and REMINDER_INDEX must be provided.Examples:
activelist followed by rDelete 2 1 deletes the 1st reminder in the currently displayed reminders list of the 2nd client in the currently displayed clients list.Assumptions:
Expected Output Message: Deleted Client Bernice Yu's Reminder 1: Meeting on Friday, due by 2026-04-24 16:00
find alex followed by rDelete 1 1 deletes the 1st reminder in the currently displayed reminders list of the 1st client in the results of the find
command.Tip: Regularly delete overdue reminders to maintain a clean and organised workspace!
rEditEdits a specified reminder from a specified client in FinHub.
Format: rEdit CLIENT_INDEX REMINDER_INDEX h/HEADER d/DEADLINE
REMINDER_INDEX of the specified client at CLIENT_INDEX.h/HEADER refers to the header of the edited reminder.d/DEADLINE refers to the deadline of the edited reminder.CLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.REMINDER_INDEX refers to the index number of the reminder shown in the specified client's currently displayed reminders list.CLIENT_INDEX and REMINDER_INDEX must be provided.Examples:
activelist followed by rEdit 2 1 h/Meeting on Friday d/2026-04-24 16:00 edits the 1st reminder in the currently displayed
reminders list of the 2nd client in the currently displayed clients list to "Meeting on Friday, due by 2026-04-24 16:00".Assumptions:
Expected Output Message: Edited Client Bernice Yu's Reminder 1: from Call to confirm appointment, due by 2027-11-03 14:00 to Meeting on Friday, due by 2026-04-24 16:00
find alex followed by rEdit 1 1 h/Meeting on Friday d/2026-04-24 16:00 edits the 1st reminder in the currently displayed
reminders list of the 1st client in the results of the find command to "Meeting on Friday, due by 2026-04-24 16:00".noteAdds a meeting note to a specified client in FinHub.
Format: note CLIENT_INDEX TEXT
CLIENT_INDEXCLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.TEXT refers to the content of the meeting note that you want to add to the specified client.TEXT cannot be empty.Examples:
activelist followed by note 2 Client wants to renew policy adds the meeting note "Client wants to renew policy" to the
2nd client in the currently displayed clients list.Assumptions:
Expected Output Message: Meeting note added to Bernice Yu: [timestamp] Client wants to renew policy
find alex followed by note 1 Client wants to know about policy 2 adds the meeting note "Client wants to
know more about policy 2" to the 1st client in the result of the find command.Tip: Regularly add meeting notes to keep track of discussions, decisions and follow-ups!
nDeleteDeletes a meeting note from a specified client in FinHub.
Format: nDelete CLIENT_INDEX MEETING_NOTE_INDEX
MEETING_NOTE_INDEX of the specified clients listed at CLIENT_INDEX.CLIENT_INDEX refers to the index number of the client shown in the currently displayed clients list.MEETING_NOTE_INDEX refers to the index number of the meeting note shown in the specified client's
displayed meeting notes list.CLIENT_INDEX and MEETING_NOTE_INDEX must be provided.Examples:
activelist followed by nDelete 2 1 deletes the 1st meeting note in the displayed meeting notes list of the 2nd client in the currently displayed clients list.Assumptions:
Expected Output Message: Deleted Client Bernice Yu's Meeting note 1: [2025-09-30 09:30] Planned to introduce new product line next quarter.
find alex followed by nDelete 1 1 deletes the 1st meeting note in the displayed meeting notes list of the 1st client in the results of the find
command.FinHub data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
FinHub data are saved automatically as a JSON file [JAR file location]/data/finhub.json. Advanced users are
welcome to update data directly by editing that data file.
Warning:
If your changes to the data file makes its format invalid, FinHub 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.
Furthermore, certain edits can cause FinHub to behave in unexpected ways (e.g., if a value entered is outside
the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
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 FinHub home folder.
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 by
copying the entire previous data/finhub.json file to the same location
Q: What happens if I make a mistake when entering client information?
A: No worries! You can use edit or rEdit to update the wrong field.
Q: Why are there already random people in my FinHub when I launch the application?
A: These pre-existing clients are sample data. You may simply use clear to remove them.
Q: I mistyped a client’s details. How do I update just one or two fields?
A: Use edit with only the fields you want to change, e.g.
edit 2 p/91234567 e/new@example.com.
Existing values not mention will be kept.
Q: How do I remove all tags from a client?
A: Type t/ with nothing after it in the edit command, e.g. edit 3 t/. This clears all tags.
Q: Can I search by more than just name?
A: Right now, find searches names only. It’s case-insensitive and matches full words.
Q: FinHub won’t load; did I break the data file?
A: If the data/finhub.json file is edited manually and becomes invalid, FinHub starts empty.
Restore a backup of that file or delete it to regenerate sample data. Try to avoid hand-editing it.
Q: Do commands accept parameters in any order?
A: Yes. For example, both of these are valid:
add n/Amy p/9123 e/amy@x.com a/Bishan ip/AIB Premium Plan
add p/9123 a/Bishan ip/AIB Premium Plan e/amy@x.com n/Amy
preferences.json file created by the
application, then restart the app.help command (or use the Help menu, or the keyboard shortcut
F1) again, the original Help Window will remain minimised, and no new Help Window will appear. To fix this, manually restore the minimised Help Window.| Action | Format, Examples |
|---|---|
| Help | help |
| List | list |
| activelist | activelist |
| archivelist | archivelist |
| Clear | clear |
| Add | add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS ip/INSURANCE_POLICY [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague |
| Delete | delete CLIENT_INDEXe.g., delete 3 |
| Edit | edit CLIENT_INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [ip/INSURANCE_POLICY] [t/TAG]…e.g., edit 2 n/James Lee e/jameslee@example.com |
| Find | find KEYWORD [MORE_KEYWORDS]e.g., find James Jake |
| Star | star CLIENT_INDEXe.g., star 1 |
| Unstar | unstar CLIENT_INDEXe.g., unstar 1 |
| Archive | archive CLIENT_INDEXe.g., archive 1 |
| Unarchive | unarchive CLIENT_INDEXe.g., unarchive 1 |
| Reminder | reminder CLIENT_INDEX h/HEADER d/DEADLINEe.g., reminder 1 h/Meeting on Friday d/2026-04-24 16:00 |
| rDelete | rDelete CLIENT_INDEX REMINDER_INDEXe.g., rDelete 2 1 |
| rEdit | rEdit CLIENT_INDEX REMINDER_INDEX h/HEADER d/DEADLINEe.g., rEdit 1 1 h/Meeting on Friday d/2026-04-24 16:00 |
| Note | note CLIENT_INDEX TEXTe.g., note 1 Client wants to know about policy abc |
| nDelete | nDelete CLIENT_INDEX MEETING_NOTE_INDEXe.g., nDelete 1 1 |
| Term / Command | Meaning |
|---|---|
Active List (activelist) | The list of all clients who are currently active (not archived). |
| Address | The residential or business location of a client, provided during add or edit commands. |
Archive (archive) | Command to move a client into the archived clients list, removing them from the active list. Useful for decluttering inactive clients. |
Archived List (archivelist) | The list of clients who have been archived. |
Clear (clear) | Command that deletes all clients and related data from FinHub. |
| Client Index | The number representing a client’s position in the currently displayed list. Must be a positive integer (1, 2, 3…). |
Delete (delete) | Command to remove a client from FinHub permanently. |
Edit (edit) | Command to update client details such as name, phone, email, address, tags, or insurance policies. |
| The email address stored for a client. | |
Find (find) | Command to search for clients by name using case-insensitive keywords. |
| GUI (Graphical User Interface) | The visual component of FinHub that displays clients lists, reminders, and other information alongside the CLI. |
Help (help) | Command to show the help window with guidance on how to use FinHub. |
| Home Folder | The folder where the .jar file and saved data files for FinHub are stored. |
Insurance Policy (ip/INSURANCE_POLICY) | A client field to record insurance policies they hold. |
Jar File (.jar) | The Java Archive file that runs the FinHub application. |
List (list) | Command to show all clients (both active and archived). |
Meeting Note (note) | A short record of discussions with a client, stored along with the date and time it was added. |
nDelete (nDelete) | Command to delete a specific meeting note from a client. |
| Phone Number | The client’s contact number, added or updated with the add or edit commands. |
Reminder (reminder) | A task or deadline linked to a client with a header and a due date. |
rDelete (rDelete) | Command to delete a specific reminder from a client. |
rEdit (rEdit) | Command to edit or update a specific reminder for a client. |
Star (star) | Command to mark a client as important. Starred clients are shown at the top of lists. |
Unarchive (unarchive) | Command to restore an archived client back into the active list. |
Unstar (unstar) | Command to remove the starred status from a client. |
Tags (t/TAG) | Labels added to clients for easier categorization (e.g., friend, colleague). |
| JSON File | The file format used by FinHub to store client data on disk (addressbook.json). |
| CLI (Command Line Interface) | The text-based interface where you type commands to control FinHub. |