User Guide
iScam is a desktop app for insurance agents to manage clients and meetings, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, iScam can get your client management tasks done faster than traditional GUI apps.
- Quick start
- Features
- FAQ
- Command summary
Quick start
-
Ensure you have Java
11or above installed in your Computer. -
Download the latest
iScam.jarfrom here. -
Copy the file to the folder you want to use as the home folder for your iScam.
-
Double-click the file to start the app. The 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
helpand pressing Enter will open the help window.
Some example commands you can try:-
list: Lists all clients. -
addn/John Doe p/98765432 e/johnd@example.com l/John street, block 123, #01-01 ip/MediShield Life i/john_doe.png t/friends: Adds a client namedJohn Doeto iScam. -
edit1 p/98765432: Change the phone number of the 1st client shown in the current list to98765432 -
findJohn: Find a client namedJohn -
findplanMediShield Life: Find a client withMediShield Lifeinsurance plan -
show2: Shows the 2nd client shown in the list in the bottom right detail panel -
delete3: Deletes the 3rd client shown in the current list. -
listmeet: Lists all meetings. -
addmeetc/John Doe on/21-10-2021 10:00 l/Starbucks d/Catch up t/friend: Adds a meeting with a client namedJohn Doeto iScam. -
editmeet1 d/Discuss insurance plan: Change the description of the 1st meeting shown in the current list toDiscuss insurance plan -
findmeetJohn: Find a meeting with the keywordJohn -
deletemeet3: Deletes the 3rd meeting shown in the current list. -
clear: Deletes all clients and meetings. -
exit: Exits the app.
-
-
Refer to the Features below for details of each command.
data folder in [JAR file location]/data and delete both the clientbook.json and meetingbook.json files and try launching again.
Features
Notes about the command format:
-
Words in
UPPER_CASEare the parameters to be supplied by the user.
e.g. inadd n/NAME,NAMEis a parameter which can be used asadd n/John Doe. -
Items in square brackets are optional.
e.gn/NAME [t/TAG]can be used asn/John Doe t/friendor asn/John Doe. -
Items with
(s) after them can be used multiple times including zero times.
e.g.[t/TAG(s)]can be used as(i.e. 0 times),t/friend,t/friend t/familyetc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis also acceptable. -
If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/82341234 p/86785678, onlyp/86785678will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help,list,listmeet,exitandclear) will be ignored.
e.g. if the command specifieshelp 123, it will be interpreted ashelp.
Client Management
Adding a client: add
Adds a client to iScam.
Format: add n/NAME p/PHONE e/EMAIL l/LOCATION [ip/INSURANCE_PLAN] [i/IMAGE_FILE] [t/TAG(s)]
Notes about the limit for inputs:
-
NAME in
n/NAMEshould not be than 50 alphanumeric characters.
e.gn/John Doe 123is acceptable -
PHONE in
p/PHONEcan only consist of 8 digits and start with6,8or9. It should not contain spaces between numbers.
e.gp/81234567is acceptable
Additional info: Singapore numbers are only 8 digits long. Should you need to add a foreign number, you can always add it as atag -
EMAIL in
e/EMAILshould not be longer than 254 characters. It should also be of the format local-part@domain
e.ge/someone@email.comis acceptable -
LOCATION in
l/LOCATIONshould not be blank or longer than 100 characters.
e.gl/Starbucks @ Frontieris acceptable -
IMAGE_FILE in
i/IMAGE_FILEshould be a single file name with no whitespaces and must end with a file extension either.jpg, .jpeg or .png.
e.g.john_doe.pngis a acceptable -
INSURANCE_PLAN in
ip/INSURANCE_PLANshould not be longer than 50 alphanumeric characters.
e.gip/Premium Savings Plan 2is acceptable -
Individual TAG(s) in
t/TAG(s)should not be longer than 50 alphanumeric characters and cannot contain spaces.
e.gt/friendis acceptable
Examples:
-
add n/John Doe p/98765432 e/johnd@example.com l/01 Singapore Street, #23-45 ip/MediShield Life i/john_doe.png t/friends t/owesMoneyOutput:
New client added: John Doe; Phone: 98765432; Email: johnd@example.com; Location: 01 Singapore Street, #23-45; Insurance Plan: MediShield Life; Tags: [owesMoney][friends]; Image: john_doe.png -
add n/Betsy Crowe e/betsycrowe@example.com l/Newgate Prison p/12345678 t/criminal i/criminal.jpegOutput:
New client added: Betsy Crowe; Phone: 12345678; Email: betsycrowe@example.com; Location: Newgate Prison; Tags: [criminal]; Image: criminal.jpeg
Listing all clients : list
Displays the list of clients and client details.
Format: list
Showing a particular client : show
Displays client details on the right panel of the Ui.
Format: show INDEX
- Shows the client at the specified
INDEX. The index refers to the index number shown in the displayed client list. The index must be a positive integer 1, 2, 3, …
Example:
-
show 1Shows the details (such as name, phone number, profile picture, insurance, etc) of the first Client on the right panel of the UI

Editing a client : edit
Edits an existing client in iScam.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [l/LOCATION] [ip/INSURANCE_PLAN] [i/IMAGE_FILE] [t/TAG(s)]
- Edits the client at the specified
INDEX. The index refers to the index number shown in the displayed client 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 client will be removed i.e adding of tags is not cumulative.
- You can remove all the client’s tags by typing
t/without specifying any tags after it. - You can also remove the client’s existing insurance plan by typing
ip/without specifying any insurance plan after it. - When specifying which
IMAGE_FILEto use, the file extension must be included in theIMAGE_FILEname and must not contain whitespaces.
Examples:
-
edit 1 p/91234567 e/johndoe@example.comEdits the phone number and email location of the 1st client to be91234567andjohndoe@example.comrespectively -
edit 2 n/Betsy Crower t/ ip/Edits the name of the 2nd client to beBetsy Crowerand clears all existing tags and insurance plans
Finding clients by name: find
Finds clients whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
hanswill matchHans - The order of the keywords does not matter. e.g.
Hans Bowill matchBo Hans - Only the name is searched.
- Only full words will be matched e.g.
Hanwill not matchHans - Clients matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Examples:
-
find JohnreturnsjohnandJohn Doe -
find alex davidreturnsAlex Yeoh,David Li
Finding clients by insurance plan: findplan
Finds clients whose insurance plan contains any of the given keywords.
Format: findplan KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
medishieldwill matchMediShield - The order of the keywords does not matter. e.g.
Life MediShieldwill matchMediShield Life - Only the insurance plan is searched.
- Only full words will be matched e.g.
Mediwill not matchMediShield - Clients matching at least one keyword will be returned (i.e.
ORsearch). e.g.MediShield Lifewill returnMediShield Pro,Life Protection
Examples:
-
findplan MediShield LifereturnsmedishieldandMediShield Life -
findplan medishield eldershieldreturnsMediShield Life,ElderShield
Deleting a client : delete
Deletes the specified client from iScam.
Format: delete INDEX
- Deletes the client at the specified
INDEX. - The index refers to the index number shown in the displayed client list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
listfollowed bydelete 2deletes the 2nd client in iScam -
find Betsyfollowed bydelete 1deletes the 1st client in the results of thefindcommand
Meeting Management
Notes about the special fields of a Meeting:
- Any date-time field
DATE_TIMEfollows the format ofdd-MM-yyyy HH:mmwhere:-
ddis the day of the month in double digits. -
MMis the month in double digits. -
yyyyis the year. -
HH:mmis the time in 24:00 format.
-
Adding a meeting: addmeet
Adds a meeting to iScam.
Format: addmeet c/CLIENT_NAME on/DATE_TIME l/LOCATION d/DESCRIPTION [t/TAG(s)]
Notes about the limit for inputs:
-
CLIENT_NAME in
c/CLIENT_NAMEshould not be longer than 50 alphanumeric characters.
e.gc/John Doe 123is acceptable -
DATE_TIME in
on/DATE_TIMEshould be in the format ofdd-MM-yyyy HH:mm
e.gon/25-10-2021 10:00is acceptable
Additional info:DATE_TIMEcannot be in the past as of the moment when this command is called. Additional info: There can only be 1 meeting happening at the date and time specified inDATE_TIME. -
LOCATION in
l/LOCATIONshould not be blank or longer than 100 characters.
e.gl/Starbucks @ Frontieris acceptable -
DESCRIPTION in
d/DESCRIPTIONshould not be blank or longer than 1000 characters.
e.gd/Plan expiring soon.is acceptable -
Individual TAG(s) in
t/TAG(s)should not be longer than 50 alphanumeric characters and cannot contain spaces.
e.gt/friendis acceptable
Example:
-
addmeet c/John Smith on/20-02-2022 15:00 l/Starbucks, Serangoon d/Discuss on insurance plans t/VIPOutput:
New meeting added: Client Name: John Smith; Date & Time: 20-02-2022 15:00; Location: Starbucks, Serangoon; Description: Discuss on insurance plans; Tags: [VIP]; Status: Not completed
Listing all meetings: listmeet
Displays the full meeting list without any filtering applied via findmeet.
Format: listmeet
- The meetings are grouped by its completion status (Incomplete / Complete) with the incomplete meetings at the top of the list.
- Within each group, the meetings are sorted by their chronological order with the most upcoming meeting at the top of the group.
Editing a meeting: editmeet
Edits an existing meeting in iScam.
Format: editmeet INDEX [c/CLIENT_NAME] [on/DATE_TIME] [l/LOCATION] [d/DESCRIPTION] [t/TAG(s)] [s/COMPLETION_STATUS]
-
INDEXrefers to the meeting’s index number shown in the displayed meeting list. The index must be a positive integer 1, 2, 3, …. - At least one of the optional fields must be provided.
- If the field already has an existing value, it will be replaced by the input value.
-
DATE_TIMEcannot be in the past as of the moment when this command is called. -
DATE_TIMEcannot be in conflict with the date and time of any existing meeting. - When
TAGs are given, the existing tags will be removed and replaced with the new given tags. (i.e adding of tags is not cumulative) -
COMPLETION_STATUSonly acceptscompleteorincomplete. - If the meeting’s status is already
complete, no fields can be edited unless the status field is also being set toincomplete.
Example:
editmeet 1 l/Macdonald, Simei d/Client's family will be coming along

Relocating a meeting: relocate
Modifies the location of an existing meeting in iScam.
Format: relocate INDEX l/LOCATION
-
INDEXrefer to the meeting’s index number shown in the displayed meeting list. The index must be a positive integer 1, 2, 3, …. - If the meeting specified by
INDEXis alreadycomplete, this meeting cannot be relocated. -
LOCATIONcannot be blank and can have at most 100 characters.
Example:
relocate 1 l/KFC, Block 556 Bugis
Rescheduling a meeting: reschedule
Modifies the date and time of an existing meeting in iScam.
Format: reschedule INDEX on/DATE_TIME
-
INDEXrefer to the meeting’s index number shown in the displayed meeting list. The index must be a positive integer 1, 2, 3, …. - If the meeting specified by
INDEXis alreadycomplete, this meeting cannot be rescheduled. -
DATE_TIMEcannot be in the past as of the moment when this command is called. -
DATE_TIMEcannot be in conflict with the date and time of any existing meeting.
Example:
reschedule 3 on/08-10-2021 20:00
Finding meetings by keywords: findmeet
Displays the meetings which has its fields matched by any given keywords.
Format: findmeet KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
johnwill matchJohn - The order of the keywords does not matter. e.g.
plans discussionwill matchdiscuss plans - Both full and partial keywords can match. e.g.
insuranceandsurwill both matchinsurance - The keywords will be match against all parameters of a meeting.
- To find by the status of a meeting, use keyword
completeto find completed meetings and keywordincompleteto find incomplete meetings. - To find by the date and time of a meeting, the keyword can be a partial date, a full date or a day of the week
(e.g.
10-02,10-02-2022,satorsaturday) .
- To find by the status of a meeting, use keyword
- Meeting matching all keywords will be returned (i.e.
ANDsearch). e.g.Johnson Smithwill not returnSam SmithandJohnson Drakebut will returnJohnson Shawn Smith. -
findmeet johnson 2020can return a meeting with Johnson on 2020 -
findmeet completereturns completed meetings - Both
findmeet tueandfindmeet tuesdayreturns meetings that take place on Tuesday -
findmeet 05-2022returns meetings that take place on May 2022 -
findmeet 01-05-2022 Samcan return a meeting with Sam on 1 May 2022
Completing a meeting: donemeet
Marks a specified existing meeting from iScam as completed.
Format: donemeet INDEX
-
INDEXrefer to the meeting’s index number shown in the displayed meeting list. The index must be a positive integer 1, 2, 3, ….
Deleting a meeting: deletemeet
Deletes a specified existing meeting from iScam.
Format: deletemeet INDEX
-
INDEXrefer to the meeting’s index number shown in the displayed meeting list. The index must be a positive integer 1, 2, 3, ….
General
Viewing help : help
Shows a message explaining how to access the help page.

Format: help
Clearing all entries : clear
Clears all clients and meeting entries from iScam.
Format: clear
Exiting the program : exit
Exits the program.
Format: exit
Customisation
Adding images for clients
Images for clients can be added by placing an image in the /data folder, with the
clientbook.json and meetingbook.json files. Any IMAGE_FILE used must be of file
type .jpg, .jpeg or .png and the name of the file must not contain whitespaces.
Managing Data Files
Saving the data
iScam data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data files
iScam data are saved as JSON files. Advanced users are welcome to update data directly by editing those data files.
Client data are saved in [JAR file location]/data/clientbook.json.
Meeting data are saved in [JAR file location]/data/meetingbook.json.
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 iScam home folder.
Command summary
| Action | Format, Examples |
|---|---|
| Help | help |
| Add Client |
add n/NAME p/PHONE e/EMAIL l/LOCATION [ip/INSURANCE_PLAN] [i/IMAGE_FILE] [t/TAG(s)] e.g., add n/John Doe p/98765432 e/johnd@example.com l/01 Singapore Street, #23-45 ip/MediShield Life i/john_doe.png t/friends t/owesMoney
|
| List Clients | list |
| Show Client |
show INDEX e.g., show 1
|
| Edit Client |
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [l/LOCATION] [ip/INSURANCE_PLAN] [i/IMAGE_FILE] [t/TAG(s)]e.g., edit 2 n/James Lee e/jameslee@example.com
|
| Find Client by Name |
find KEYWORD [MORE_KEYWORDS]e.g., find James Jake
|
| Find Client by Insurance Plan |
findplan KEYWORD [MORE_KEYWORDS] e.g., findplan MediShield
|
| Delete Client |
delete INDEXe.g., delete 3
|
| Add Meeting |
addmeet c/CLIENT_NAME on/DATE_TIME l/LOCATION d/DESCRIPTION [t/TAG(s)] e.g., addmeet c/John Doe on/21-10-2021 10:00 l/Starbucks, Tampines Hub d/Discuss insurance policy t/Urgent t/Premium
|
| List Meetings | listmeet |
| Edit Meeting |
editmeet INDEX [c/CLIENT_NAME] [on/DATE_TIME] [l/LOCATION] [d/DESCRIPTION] [t/TAG(s)] [s/COMPLETION_STATUS]e.g., editmeet 2 c/James Lee s/complete
|
| Relocate Meeting |
relocate INDEX l/LOCATION e.g., relocate 1 l/KFC, Blk 556 Bugis
|
| Reschedule Meeting |
reschedule INDEX on/DATE_TIME e.g., reschedule 2 on/20-10-2021 10:00
|
| Find Meeting |
findmeet KEYWORD [MORE_KEYWORDS]e.g., findmeet 05-2022 Sam
|
| Delete Meeting |
deletemeet INDEXe.g., deletemeet 3
|
| Complete Meeting |
donemeet INDEX e.g., donemeet 3
|
| Clear All | clear |
| Exit | exit |