User Guide
PROperty is a desktop app for property agents managing clients’ contact details and their property listings, 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, PROperty can get your client and property management tasks done faster than traditional GUI apps.
PROperty is useful for property agents because it saves their time by allowing easy tracking of contacts, and easily filtering them according to tailor-made categories relevant to property agents in Singapore. It is much simpler to use while being even more functional than alternatives on the market.
Table of Contents
- User Guide Essentials
- Quick Start
-
Features
- Adding a client:
add - Editing a client:
edit - Deleting a client:
delete - Listing all clients:
list - Sorting all clients:
sort - Showing property listings of a client:
show - Locating clients by name:
find - Locating clients by tag:
findtag - Clearing all entries:
clear - Managing Remarks:
remark - Adding a property listing:
listing add - Deleting a property listing:
listing delete - Exporting your contacts:
export - Exiting the program:
exit - Open help menu:
help
- Adding a client:
- Saving the data
- Editing the data file
- FAQ
- Known Issues
- Command Summary
- Tag Table
- Glossary
User Guide Essentials
Icon Legend
This section helps you understand the icons you’ll encounter in the User Guide
| Icons | Meaning |
|---|---|
| Key details to be aware of. | |
| Helpful tips for better use. | |
| Crucial information! Please read carefully. |
Locating Information Quickly
This section outlines the topics covered in each part of the guide, helping you quickly find the information you need. Feel free to jump to the sections that are most relevant to you.
- Quick start – Learn how to set up PROperty in a few simple steps.
- Features – Understand the full range of capabilities PROperty offers.
- FAQ – Find answers to common questions from other users.
- Command Summary – A quick reference to all commands available for easy access.
- Tag Table – View a comprehensive list of tags and their descriptions to enhance your understanding of PROperty’s categorisation.
- Glossary – Get familiar with key terms and definitions used throughout the guide.
- Back to Top – Easily return to the table of contents with this shortcut.
Quick Start
Step 1: Check if Your Computer is Ready
First, we need to make sure your computer has Java 17 installed. Here’s how to check:
- Open your computer’s terminal:
-
For Windows: Press the Windows key + R, type
cmd, and press Enter. -
For Mac: Press Command + Space, type
terminal, and press Enter.
-
For Windows: Press the Windows key + R, type
- In the black terminal window that appears, type the following command:
java --versionand press Enter.
- What you should see:
- ✅ If you see “java 17” or “openjdk 17” (or any number above 17), you’re ready to go!
- ❌ If you see “command not found” or a java version below 17, visit Java’s download page to install Java 17
Step 2: Install PROperty
- Download PROperty:
- Create a home folder for PROperty:
- Create a new folder on your computer named
PROperty. - Copy the downloaded
PROperty.jarfile into this folder.
- Create a new folder on your computer named
- Start PROperty:
- Open your computer’s terminal in the folder where PROperty is by either:
- For Windows: Shift + Right-Click in the folder where PROperty is and clicking on “Open PowerShell Window Here”.
- For Mac: Control + Left-Click on the folder where PROperty is and clicking on “New Terminal at Folder”.
-
Type
java -jar PROperty.jarinto your computer’s terminal and press “Enter”.
- The image above showcases the various components of PROperty.
- Open your computer’s terminal in the folder where PROperty is by either:
Step 3: Try Your First Commands
Now that PROperty is running, let’s try using the different commands available. All you have to do is to type the command in the command box and press Enter to execute it. Some example commands you can try are:
-
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01: Adds a client namedJohn Doeto PROperty. -
edit 1 n/Mary Jane p/12345678 e/maryj@example.com a/Mary street, block 321, #02-02: Edits the client with index 1 in PROperty. -
listing add 2 t/HDB a/Adam street, block 456, #03-03: Adds a listing for the client with index 2 in PROperty.
Recommended Window Size
For the best experience, use PROperty at full screen on your PC.
Refer to the Features below for details of each command.
Features
Notes about PROperty’s command format:
-
PROperty currently only supports English.
-
Parameters in
UPPER_CASEare the parameters to be supplied by you.
e.g. foradd n/NAME,NAMEis a parameter which you input, such asadd n/John Doe. -
Parameters in square brackets are optional.
e.g. forn/NAME [t/TAG], you can either input the parametersn/John Doe t/sellerorn/John Doe. -
Parameters proceeded by
… can be input any number of times.
e.g.[t/TAG]…can be either have no input, or be input ast/seller, ort/seller t/landlordetc. -
Parameters can be input in any order.
e.g. you can either inputn/NAME p/PHONE_NUMBERorp/PHONE_NUMBER n/NAME. Both are acceptable formats. -
For commands that do not require parameters (e.g.
help,list,exitetc), any additional parameters that are input will be ignored.
e.g. if you inputhelp 123, it will be interpreted ashelp. -
If you are using a PDF version of this document, please exercise caution when copying and pasting commands that span multiple lines, as space characters adjacent to line breaks may be omitted when pasted into PROperty’s CLI.
Adding a client: add
Adds a client to PROperty.
Format: add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/client_TAG] [r/REMARKS]…
-
NAMEandPHONE_NUMBERfields must be provided.-
NAMEcan only contain alphanumeric characters and spaces.
-
- Client tags are added in a case-insensitive manner. e.g
t/buyerort/BUYERwill both add theBuyertag. - Refer to the Tag Table for a complete list of client tags.
- A client is considered the “same” as another client based on matching values in:
NAMEandPHONE_NUMBER.- Note that values are case-sensitive.
Examples:
-
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/looking for HDBadds a client namedJohn Doewith a phone number of98765432, an email ofjohnd@example.com, an address ofJohn street, block 123, #01-01and a remark oflooking for HDB. -
add n/Betsy Crowe t/landlord e/betsycrowe@example.com a/Flatbush Avenue, block 81, #02-02 p/1234567adds a client namedBetsy Crowewith a tag ofLandlord, and email ofbetsycrowe@example.com, an address ofFlatbush Avenue, block 81, #02-02and a phone number of1234567.
Visual example of correct output (Example 1):

Editing a client : edit
Edits an existing client in the PROperty.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/client_TAG] [dt/client_TAG] [r/REMARK]…
- 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, … -
client_TAGcan beBuyer,Seller,Landlord,Tenant - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing tags, the tags specified using
t/will be added to the contact (cumulatively). - Tags can also be removed using the delete tag
dt/prefix, followed by the tag name.- The overall change of all tags is computed together. However, any
dt/arguments will take priority over anyt/options, sot/seller dt/sellerwill delete thesellertag. - If you specify a tag that does not exist, it will do nothing (e.g
dt/missing_tag).
- The overall change of all tags is computed together. However, any
- You can remove all the client’s tags by typing
t/without specifying any tags after it.- This option can not be used with any other tag options (i.e
t/seller dt/buyer).
- This option can not be used with any other tag options (i.e
-
NAMEcan only contain alphanumeric characters and spaces.
t/ to add new tags and dt/ to delete specific tags from a client.
Examples:
-
edit 1 p/87438807 e/alexyeoh@example.comedits the phone number and email address of the1stclient to be87438807andalexyeoh@example.comrespectively. -
edit 2 n/Betsy Crower t/edits the name of the client at index2to beBetsy Crowerand clears all existing tags. -
edit 2 t/condoedits the tag of the client at index2to becondo.
Visual example of correct output (Example 1):

Deleting a client : delete
Deletes the specified client from the PROperty.
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, …
list or find command to determine the INDEX of the client you want to delete.
Examples:
-
listfollowed bydelete 2deletes the client at index2listed in PROperty. -
find Betsyfollowed bydelete 1deletes the client at index1in the results of thefindcommand.
Visual example of correct output (Example 1):

Listing all clients : list
Shows a list of all clients in the PROperty.
Format: list
-
listshows the clients in the order they were added into PROperty.
list for a quick overview of all your contacts.
Example:
-
listshows your full client listing in the order they were added in PROperty.
Visual example of correct output:

Sorting all clients : sort
Sorts the list of all clients in PROperty by name in alphabetical order.
Format: sort
Example:
-
sortsorts all your client list in PROperty in alphabetical order.
Visual example of correct output [Example 1.]:

Showing property listings of a client : show
Shows the full details of the specified client, including their property listings.
Format: show INDEX
- Shows the client at the specified
INDEX - The
INDEXrefers to the index number shown in the displayed client list. - The
INDEXmust be a positive integer 1, 2, 3, …
show to view a client in-depth.
Examples:
-
show 2shows the name, client information, tags, and property listings of the client at index2in the PROperty. -
show 7shows the name, client information, tags, and property listings of the client at index7in the PROperty.
Visual example of correct output (Example 1):

Locating 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. - By default, the find command conduct a general search for the individual. Hence,
the order of the keywords does not matter. e.g.
Hans Bowill matchBo Hans. - A client’s name, phone number, address, email and tag can be 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 - If a more specific search is required, utilise the
s/.- Format:
find s/KEYWORD [s/MORE_KEYWORDS] - Only individuals who match the keyword(s) one-to-one will be returned. e.g.
find s/Hans Bowill not matchBo Hans.find s/Hans Bowill only matchHans Bo. - Especially useful if there are multiple clients with the same name in PROperty and you require a more specific search.
- Format:
find s/KEYWORD if you have contacts with very similar names.
Examples:
-
find Davidis a general find which returnsDavid LowandDavid Li. -
find s/David Lowis a specific find which only returnsDavid Low. -
find alex davidis a general find which returnsAlex Yeoh,David Li. -
find s/Alex Yeoh s/23 Smith Streetis a specific find which only returnsAlex Yeohwho has23 Smith Streetas his address.
Visual example of correct output (General Find) (Example 1):

Visual example of correct output (Specific Find) (Example 2):

Locating clients by tag: findtag
Finds clients whose tags contain any of the given words.
Format: findtag TAG [MORE_TAGS]
- The search is case-insensitive. e.g.
HDBwill matchhdb. - The order of the tags does not matter.
- clients with at least one matching tag will be returned (i.e., an
ORsearch). - List of possible tags you can search for are found in the Tag Table
Examples:
-
findtag HDBreturns clients tagged withHDB. -
findtag HDB buyerreturns clients tagged with eitherHDBorbuyer.
Visual example of correct output (Example 1):

Clearing all entries : clear
Clears all entries from the PROperty.
Format: clear
clear cannot be undone!
Example:
-
clearclears all clients and their data from PROperty.
Managing Remarks : remark
Adds/removes a remark from a client in PROperty.
Format: remark INDEX r/[REMARKS]
- Adds a remark
REMARKSto the client atINDEX - The index refers to the index number shown in the displayed client list.
- The index must be a positive integer 1, 2, 3, …
- If there are multiple remark inputs, only the last remark will be added. See example 3 below for a better illustration.
[REMARKS] of r/ is left blank (e.g remark 1 r/), the remark will be deleted entirely
Examples:
-
remark 1 r/Prefers a higher floor apartmentadds a remark “Prefers a higher floor apartment” to the client at index1. -
remark 1 r/deletes the remark of client at index1. -
remark 1 r/Prefers Bukit Timah area r/Prefers Jurong areaonly adds remark “Prefers Jurong area” to the client at index1.
Visual example of correct output (Example 1):

Visual example of correct output (Example 2):

Visual example of correct output (Example 3):

Adding a property listing : listing add
Adds a property listing to the client specified by INDEX
Format: listing add INDEX t/PROPERTY_TAG a/LISTING_ADDRESS
- Adds a property listing to the client specified by
INDEX - The
INDEXrefers to the index number shown in the displayed client list. - The
INDEXmust be a positive integer 1, 2, 3, … - Property tags are added in a case-insensitive manner. e.g
t/condoort/CONDOwill both add theCONDOtag. - Refer to the Tag Table for a complete list of property tags.
- If there are multiple tag inputs, the last tag will be used. See example 3 below for a better illustration.
Examples:
-
listing add 1 t/condo a/NUS street 123adds a property listing to the client at index1with a listing type ofcondoand address ofNUS street 123. -
listing add 2 t/HDB a/Clementi Road 321adds a property listing to the client at index2with a listing type ofHDBand address ofClementi Road 321. -
listing add 1 t/HDB t/condo a/NTU Road 321adds a property listing to the client at index1with a listing type ofcondoand address ofNTU Road 321.
Visual example of correct output (Example 1):

Visual example of correct output (Example 3):

Deleting a property listing : listing delete
Deletes the property listing with index LISTING_INDEX from the client specified by INDEX
Format: listing delete INDEX LISTING_INDEX
- Adds the property listing with index
LISTING_INDEXto the client specified byINDEX - The
INDEXrefers to the index number shown in the displayed client list. - The
LISTING_INDEXrefers to the index number shown in the property listing displayed by theshowcommand - The
INDEX/LISTING_INDEXmust be a positive integer 1, 2, 3, …
Examples:
-
listing delete 1 1deletes the 1st property listing from the client with index1. -
listing delete 2 3deletes the 3rd property listing from the client with index2.
Visual example of correct output (Example 1):

Exporting your contacts : export
Exports your contacts and their relevant data to a Comma-Separated Value (CSV) file format.
Format: export
- Headings of the CSV file will be the attributes of a client (ie Name, Address, Phone number etc).
- If an individual listings and/or tags attributed to them, the listings and/or tags are separated by a semicolon.
- By default, the exported CSV file is at
[JAR file location]/data/property.csv. - Ensure that you do not have any other programmes utilising the
property.csvfile while you run theexportcommand. Otherwise, PROperty may not correctly export your client data.
export is useful if you want to view your contacts in Excel.
Example:
-
exportexports your current client data in PROperty into a CSV file.
Exiting the program : exit
Exits the program.
Format: exit
- You should only utilise the
exitcommand to close the application. Unintended issues or bugs may occur if you utilize other methods to close the application. - There is no visual example as the programme will close after inputting the
exitcommand.
Example:
-
exitexits PROperty.
Open help menu: help
Shows commands in a help menu for quick reference during use of PROperty.
Format: help
Example:
-
helpresults in a popup window which contains all the commands in PROperty for easy reference during use.
Saving the data
PROperty 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
PROperty data are saved automatically as a JSON file [JAR file location]/data/property.json. Advanced users are welcome to update data directly by editing that data file with valid inputs only.
property.json file after you exit the application. Hence, it is recommended to make a backup of the file before editing it.Furthermore, certain edits can cause the PROperty to behave in unexpected ways (e.g. if a value entered is outside of the acceptable range, or manually add tags not stated in the glossary etc). 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: To transfer your data to another computer, follow these steps:
-
Install PROperty: Place the
PROperty.jarfile in your preferred location on the new computer. -
Set Up the Data Folder: If you have already run the application, skip to step 3. Otherwise, manually create a
datafolder in the same directory asPROperty.jar. -
Transfer Your Data: If the application has been run previously, simply replace the existing
property.jsonfile in thedatafolder with your data-containingproperty.jsonfile from the original computer. Otherwise, add yourproperty.jsonfile directly into thedatafolder you just created. - Launch PROperty: Run the app to load your transferred data, giving you access to all your previous clients and property listings.
Q: Can I customise the tags or categories for clients and properties?
A: Customising tags is not currently supported. Users can only use the predefined tags listed in the table provided in this guide.
Q: Is there a way to restore a deleted client?
A: Unfortunately, it is not possible to restore a deleted client. We strongly recommend that you regularly save a backup of your clients to prevent accidental data loss.
Known Issues
- In a multi-screen setup, should you move PROperty to a secondary screen and subsequently revert to using only the primary screen, the PROperty GUI may open off-screen. To resolve this issue, you should delete the
preferences.jsonfile created by the PROperty before launching it again. - If you minimise the Help Window and subsequently execute the
helpcommand, the original Help Window will remain minimised, and no new Help Window will appear. To resolve this issue, you should manually restore the minimised Help Window.
Command Summary
| Action | Format, Examples |
|---|---|
| Add |
add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/client_TAG] [r/REMARKS]… e.g. add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/buyer
|
| List | list |
| Edit |
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/client_TAG] [dt/client_TAG] [r/REMARK]…e.g. edit 2 n/James Lee e/jameslee@example.com
|
| Find |
find KEYWORD [MORE_KEYWORDS]find s/KEYWORD [s/MORE_KEYWORDS]e.g. find James Jake, find s/James Jake s/23 Philip Street
|
| Findtag |
findtag TAG [MORE_TAGS]e.g. findtag hdb buyer
|
| Delete |
delete INDEXe.g. delete 3
|
| Clear | clear |
| Exit | exit |
| Help | help |
| Remark |
remark INDEX r/[REMARKS]e.g. remark 1 r/Prefers a higher floor apartment, remark 1 r/ (to delete the remark) |
| Show |
show INDEXe.g. show 2
|
| Add Listing |
listing add INDEX t/PROPERTY_TAG a/LISTING_ADDRESSe.g. listing add 1 t/condo a/123 NUS Street
|
| Delete Listing |
listing delete INDEX LISTING_INDEX e.g. listing delete 1 1
|
| Export | export |
| Sort | sort |
Tag Table
| Tag Type | Tags |
|---|---|
| Property | HDB, CONDO, RESIDENTIAL, LANDED, EC, COMMERCIAL, RETAIL, INDUSTRIAL, OFFICE, WAREHOUSE, SHOPHOUSE, TERRACE, SEMIDET, BUNGALOW, DETACHED, GCB, PENTHOUSE, MIXED, SERVAPT, DORM |
| Client | BUYER, SELLER, LANDLORD, TENANT, DEVELOPER, INVESTOR, MANAGER, CONTRACTOR |
Glossary
Technical Terms
- CLI: Command-Line Interface, a text-based interface used to interact with software by typing commands.
- CSV: Comma-Separated Values, a simple file format used to store tabular data, where each line of the file is a data record with fields separated by commas.
- GUI: Graphical User Interface, a user interface that allows users to interact with the application through graphical elements such as buttons, text fields, and menus.
- JAR: Java ARchive, a package file format that aggregates many Java class files and associated resources (text, images) into one file to distribute application software or libraries on the Java platform.
- Java: A high-level, object-oriented programming language used for building cross-platform applications.
- JSON: JavaScript Object Notation, a lightweight data-interchange format that is easy for humans to read and write, and easy for machines to parse and generate. JSON is commonly used for transmitting data in web applications.
Property Tags
- HDB: Public housing flats governed by the Housing & Development Board.
- CONDO: Private residential units with shared amenities.
- RESIDENTIAL: Properties intended for residential use.
- LANDED: Homes built on their own land, without shared walls (e.g. bungalows, terraces).
- EC: Executive Condominium – a subsidised option bridging public and private property.
- COMMERCIAL: Properties zoned for business operations.
- RETAIL: Space designated for shops and consumer-facing businesses.
- INDUSTRIAL: Sites for manufacturing, logistics, and heavy industry activities.
- OFFICE: Office spaces designed for corporate or business use.
- WAREHOUSE: Dedicated to storage and logistical operations.
- SHOPHOUSE: Multi-use buildings with commercial space on the ground floor, residential above.
- TERRACE: Row houses sharing side walls, commonly in clusters.
- SEMIDET: Semi-detached houses sharing one side wall.
- BUNGALOW: Single-story, standalone homes, often with private land.
- DETACHED: Fully standalone houses, no shared walls.
- GCB: Good Class Bungalows – high-end, exclusive bungalows with strict land requirements.
- PENTHOUSE: Premium top-floor units, typically in condos, with added privacy and amenities.
- MIXED: Properties combining multiple zoning uses, like residential and commercial.
- SERVAPT: Furnished serviced apartments, typically with extended-stay services.
- DORM: Dormitories, often used as shared housing for students or workers.
Client Tags
- BUYER: Prospective property purchasers.
- SELLER: Property owners seeking to sell.
- LANDLORD: Property owners leasing to tenants.
- TENANT: Individuals or entities renting properties.
- DEVELOPER: Companies or individuals creating or renovating properties.
- INVESTOR: Individuals or groups acquiring property for financial gain.
- MANAGER: Those managing property operations, tenant relations, or maintenance.
- CONTRACTOR: Professionals providing construction, renovation, or repair services.