User Guide
ClientSquare is a desktop app built for freelance property agents. It helps you track buyers and sellers, manage appointments, and organize appointments with your clients - all in one place!
By typing commands instead of clicking through menus, you’ll be able to complete your tasks faster, allowing you to manage more clients in less time.
- Quick start
-
Features
- Viewing help :
help
- Adding a person:
add
- Listing all persons :
list
- Listing all appointments :
lap
- Editing a person :
edit
- Locating persons by name:
find
- Deleting a person :
delete
- Adding an appointment :
ap
- Deleting an appointment :
dap
- Clearing all entries :
clear
- Toggling UI theme :
toggle
- Exiting the program :
exit
- Saving the data
- Editing the data file
- Viewing help :
- FAQ
- Known issues
- Command summary
Quick start
Set up ClientSquare and start managing your clients within minutes!
-
Install Java 17 or later
ClientSquare runs on Java, so make sure your computer has Java 17 or newer installed. To check if Java is installed, you will have to open a command terminal. You may follow the respective instructions for your operating system to do so.
Windows:
- Press Windows + R to open the Run window.
- Type cmd and press Enter.
macOS:
- Open Spotlight Search by pressing Command + Space.
- Type Terminal and press Enter.
Linux:
- Press Ctrl + Alt + T to open the Terminal.
Now, run
java -version
. If you see a version number lower than 17, download and install the latest version.Mac users: Follow the step-by-step guide here to install the correct JDK version.
-
Download ClientSquare
Go to the releases page and download the latest.jar
file. This file contains everything you need to run the app. -
Choose where to keep the app
Move the downloaded file into any folder where you want ClientSquare to store your data.
This will be your home folder for ClientSquare. -
Open and run the app
Open your command terminal and go to the folder where you saved the file using thecd
command.
Then, start ClientSquare by typing:java -jar clientsquare.jar
. Alternatively, you may double-click the jar file to launch the application.
Within a few seconds, the app window will appear with some sample client data for you to explore.
-
Try a few basic commands
Type a command in the command box and press Enter to see it in action.
Here are a few examples:-
list
: Lists all contacts. -
add n/Jane Smith p/92345768 e/janesmith@example.com r/buyer a/239, Hougang Ave 2, #01-13 pt/HDB_3 t/friends t/Neighbour
: Adds a contact namedJane Smith
to the Address Book. -
delete 3
: Deletes the 3rd contact shown in the current list. -
clear
: Deletes all contacts. -
exit
: Exits the app.
-
-
Explore more features
Once you’re comfortable with the basics, check out the Features section below to learn more about what ClientSquare can do!
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd n/NAME
,NAME
is 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/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
,clear
andtoggle
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
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.
Viewing help : help
Shows a message explaining how to access the help page.
Format: help
Adding a person: add
Adds a client to the client square app. Details to include when adding a client:
(i) Name,
(ii) Phone Number,
(iii) Email,
(iv) Role,
(v) Address,
(vi) Property Type,
(vii) Tags (Optional)
Format: add n/NAME p/PHONE_NUMBER e/EMAIL r/ROLE a/ADDRESS pt/PROPERTY_TYPE [t/TAG]…
Valid inputs for Roles and Property Type:
Valid roles are buyer
and seller
.
Valid property types are
HDB_2
, HDB_3
, HDB_4
, HDB_5
, HDB_J
,
CONDO_2
, CONDO_3
, CONDO_4
, CONDO_5
, CONDO_J
,
EXECUTIVE
, LANDED_LH
, LANDED_FH
, COMMERCIAL_LH
and COMMERCIAL_FH
.

Examples:
-
add n/John Doe p/98765432 e/johnd@example.com r/buyer a/John street, block 123, #01-01 pt/HDB_4
-
add n/Betsy Crowe p/87654321 e/betsycrowe@example.com r/seller a/Clementi Ave 1, Block 442 #19-203 pt/HDB_5
Listing all persons : list
Shows a list of all clients in the client square app.
Format: list
Example:
-
list
Listing all appointments : lap
Shows a list of all appointments in the client square app, sorted by date and time (earliest at the top to latest at the bottom).
Format: lap
- Displays all appointments from all clients
- Each appointment shows the date/time, location (seller client’s address), and the buyer/seller names
- Appointments are sorted chronologically from present to future
- Use
list
to switch back to the person list view
Example:
-
lap
displays all appointments sorted by date and time
Editing a person : edit
Edits an existing person in the client square app.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [r/ROLE] [a/ADDRESS] [pt/TYPE] [t/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.
- When editing address or property type, it is compulsory to provide both address and property type input values i.e address and property type cannot be edited independently
- You can remove all the person’s tags by typing
t/
without specifying any tags after it.
Valid inputs for Roles and Property Type:
Valid roles are buyer
and seller
.
Valid property types are
HDB_2
, HDB_3
, HDB_4
, HDB_5
, HDB_J
,
CONDO_2
, CONDO_3
, CONDO_4
, CONDO_5
, CONDO_J
,
EXECUTIVE
, LANDED_LH
, LANDED_FH
, COMMERCIAL_LH
and COMMERCIAL_FH
.
Examples:
- Before the following
edit
commands
-
edit 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st person to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to beBetsy Crower
and clears all existing tags. -
edit 3 r/seller
Edits the role of the 3rd person toseller
-
edit 4 a/59 Jalan Besar Road pt/COMMERCIAL_FH
Edits the address and property type of the 4th person to59 Jalan Besar Road
andCOMMERCIAL_FH
respectively.
- After the above
edit
commands
Locating persons by name: find
Finds persons whose details contain any of the keywords you provide. Details include (i) name, (ii) role, (iii) email, (iv) address, (v) address type, or (vi) phone number.
Format: find KEYWORD [MORE_KEYWORDS]...
- The search is case-insensitive. e.g
hans
will matchHans
- The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
- Only full words will be matched e.g.
Han
will not matchHans
- Persons matching at least one keyword will be returned
e.g.
Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find Alex
returns all persons named ‘Alex’ (and anyone with ‘Alex’ in other details) -
find Alex John
returns all persons named ‘Alex’ or ‘John’ (and anyone with ‘Alex’ or ‘John’ in other details) -
find buyer
returns all buyers (and anyone with ‘buyer’ in other details)
Tips:
- After using the
find
command, you can use the new index numbers shown on screen for commands that require index as an input, such asedit
orap
.
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 person list. This will be a positive whole number, such as 1, 2, 3, …
- Deleting a person will also delete all their associated appointments.
Examples:
-
list
followed bydelete 2
deletes the 2nd person in the address book. -
find irfan
followed bydelete 1
deletes the 1st person in the results of thefind
command.
Warnings:
- The
INDEX
is the index number shown in the current or most recently displayed person list. This may be different from the index number in the full person list. If you wish to use the index from the full person list, don’t forget to uselist
before usingdelete
.
Tips:
- Use the
find
command to easily locate the contact that you wish to delete.
Adding an appointment : ap
Adds an appointment with a seller and a buyer.
Format: ap SELLER_INDEX d/DATETIME b/BUYER_INDEX
- Adds an appointment with the seller being the person specified by
SELLER_INDEX
and the buyer being the person specified byBUYER_INDEX
. - The indices refer to the index numbers shown in the displayed person list. This will be a positive whole number, such as 1, 2, 3, …
- Datetime should be in an ISO 8601-compliant format (e.g.
yyyy-MM-ddTHH:mm:ss
) and must be provided. - The location will be displayed as the seller’s address.
Examples:
-
ap 4 d/2025-12-01T12:00 b/1
adds an appointment with seller (index 4: David) and buyer (index 1: Alex) on 1 Dec 2025 at 12pm.lap
can be used to view appointments after adding. - Tips:
- Use the
find
command with multiple keywords (such asfind Alex David
) to easily index the contacts you wish to create an appointment for.
Deleting an appointment : dap
Deletes an appointment.
Format: dap INDEX d/DATETIME
- Deletes an appointment with the seller specified by
INDEX
, and the specifiedDATETIME
. - The index refers to the index number shown in the displayed person list. This will be a positive whole number, such as 1, 2, 3, …
- Datetime should match exactly with the appointment’s datetime in an ISO 8601-compliant format (e.g.
yyyy-MM-ddTHH:mm:ss
) and must be provided. - If there are multiple appointments with the same seller at the same datetime, they will all be deleted.
Examples:
-
dap 1 d/2025-01-01T12:00
Deletes an appointment to the 1st person on 1 Jan 2025 at 12pm.
Clearing all entries : clear
Clears all entries from the address book, including both contacts and appointments.
Format: clear
Warnings:
- This action is irreversible. Please be certain before executing this command.
Toggling UI theme : toggle
Switches the user interface theme between light and dark modes.
Format: toggle
- No parameters are required
- Each execution switches to the alternate theme
- Theme preference is persisted across sessions
Examples:
-
toggle
switches from light to dark mode (or vice versa)
Tips:
- Switch to dark mode when working in low-light environments to reduce eye strain
- Use light mode during presentations or when sharing your screen for better visibility
- The theme switches immediately without requiring a restart
Warnings:
- The theme change applies immediately and affects the entire application interface
Exiting the program : exit
Exits the program and closes the application window.
Format: exit
- The application will close immediately without confirmation
- All data is automatically saved before exit
- You can also close the application using the window close button (X)
Examples:
-
exit
closes the application
Saving the data
ClientSquare 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 file
ClientSquare data are saved automatically as a JSON file [JAR file location]/data/ClientSquare.json
. Advanced users are welcome to update data directly by editing that data file.

Furthermore, certain edits can cause the ClientSquare to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
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 ClientSquare home folder.
Q: How do I backup my data?
A: Simply copy the data/ClientSquare.json
file from your data folder to a safe location. This file contains all your client and appointment information.
Q: Can I have multiple appointments with the same client?
A: Yes, you can schedule multiple appointments with the same buyer or seller. Each appointment is tracked separately by date and time.
Known issues
-
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.json
file created by the application before running the application again. -
If you minimize the Help Window and then run the
help
command (or use theHelp
menu, or the keyboard shortcutF1
) 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.
Command summary
Action | Format | Examples | Description |
---|---|---|---|
Add | add n/NAME p/PHONE_NUMBER e/EMAIL r/ROLE a/ADDRESS pt/PROPERTY_TYPE [t/TAG]… |
add n/James Ho p/22224444 e/jamesho@example.com r/buyer a/123, Clementi Rd, 1234665 pt/HDB_3 t/VIP |
Adds a client’s contact details into ClientSquare |
List | list |
- | List all the clients you have |
Find | find KEYWORD [MORE_KEYWORDS] |
find Jake HDB_3 |
Find all clients named ‘Jake’ OR has property type ‘HDB_3’ |
Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [r/ROLE] [a/ADDRESS] [pt/PROPERTY_TYPE] [t/TAG]… |
edit 2 n/James Lee e/jameslee@example.com edit 4 a/59 Jalan Besar Road pt/COMMERCIAL_FH
|
Change the name and email of the second index client. Change the address and property type of the fourth index client. |
Delete | delete INDEX |
delete 3 |
Delete the third indexed client |
Clear | clear |
- | Clears all current clients |
Add Appointment | ap SELLER_INDEX d/DATETIME b/BUYER_INDEX |
ap 1 d/2025-01-01:12:00 b/3 |
Adds a appointment between seller(indexed 1) and buyer(indexed 3) at that specific timing |
List Appointments | lap |
- | List all appointments you have made in chronological order |
Search Appointments | sap KEYWORD [MORE_KEYWORDS] |
sap Jake |
Searches all appointments with ‘Jake’ |
Delete Appointment | dap INDEX d/DATETIME |
dap 1 d/2025-01-01:12:00 |
Deletes appointment with the seller at index 1 at that timing |
Help | help |
- | A popup with the link to the user guide will show up |