EstateMate (EM) is a desktop application for managing contacts, designed to be fast and efficient using keyboard shortcuts, while still offering the convenience of a click-based interface. If you can type fast, EstateMate can get your contact management tasks done faster than traditional mouse-only apps.
EstateMate is a comprehensive application and management tool designed specifically for property managers and its executive firms.
This guide is designed to help property managers make the most out of EstateMate's features. Managing tenant contacts and tracking maintenance tasks efficiently is essential for smooth property operations. Inside, you will find step-by-step instructions, examples, and helpful tips to streamline your workflow so that you can keep your properties running smoothly.
Ensure you have Java 17
or above installed in your computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar
file from here.
Copy the file to the folder you want to use as the home folder for your application.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar estatemate.jar
command to run the application.
A 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 help
and pressing Enter
will open the help window.
Some example commands you can try:
list
: Lists all contacts.
tenant n/John Tan p/91234567 e/jtan@example.com a/Blk 123 #12-34, Bedok lease/2025-01-01 2026-12-31 r/2800.00 paydate/2025-01-01
:
Adds a contact named John Tan
to the application.
dtenant 3
: Deletes the 3rd tenant contact shown in the current list.
clear
: Deletes all contacts.
exit
: Exits the application.
Refer to the Features below for details of each command.
In EstateMate, commands use prefixes to identify each parameter.
Each prefix must be followed by a /
and its corresponding value.
Prefix | Meaning | Example Usage |
---|---|---|
n/ | Name | n/John Tan |
p/ | Phone Number | p/91234567 |
e/ | Email Address | e/jtan@example.com |
a/ | Address | a/Blk 123 #12-34 |
lease/ | Lease Start-End | lease/2025-01-01 2026-12-31 |
r/ | Amount | r/2800.00 |
paydate/ | PayDate | paydate/2025-01-01 |
t/ | Tag | t/friend |
j/ | Job Number | j/2 |
d/ | Description | d/Broken pipe |
💡 You can combine multiple prefixes in one command, such as:
tenant n/John Tan p/91234567 e/jtan@example.com a/Blk 123 #12-34, Bedok lease/2025-01-01 2026-12-31 r/2800.00 paydate/2025-01-01
This section provides a comprehensive overview of the features available in EstateMate.
It is designed to help property managers understand how to efficiently manage tenant information and maintenance jobs
through various commands.
Each feature is grouped by functionality:
📌Important Notes about Command Format:
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.
Extraneous 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.
Action | Format, Examples |
---|---|
Add Tenant | tenant n/NAME p/PHONE e/EMAIL a/ADDRESS lease/START END r/AMOUNT paydate/PAYDATE e.g., tenant n/John Tan p/91234567 e/jtan@example.com a/Blk 123 #12-34, Bedok lease/2025-01-01 2026-12-31 r/2800.00 paydate/2025-01-01 |
Add Job | job d/DESCRIPTION e.g., job d/Water leakage in ceiling |
Clear | clear |
Delete Tenant | dtenant TENANT_INDEX e.g., dtenant 3 |
Delete Job | djob JOB_NUMBER e.g., djob 3 |
Edit Tenant | edit TENANT_INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] e.g., edit 2 n/James Lee e/jameslee@example.com |
Edit Job | ejob JOB_NUMBER d/DESCRIPTION e.g., ejob 3 d/fix faucet |
Exit | exit |
Find Tenant | find KEYWORD [MORE_KEYWORDS] e.g., find James Jake |
Find Job | fjob KEYWORD [MORE_KEYWORDS] e.g., fjob electrical plumbing renovation |
Help | help |
Link Job to Tenant | link TENANT_INDEX j/JOB_NUMBER e.g., link 1 j/2 |
List Tenants | list |
List Jobs | ljob |
Mark Job | mark JOB_NUMBER e.g., mark 1 |
Unmark Job | unmark JOB_NUMBER e.g., unmark 1 |
tenant
Adds a tenant to the application.
Format: tenant n/NAME p/PHONE e/EMAIL a/ADDRESS lease/START END r/AMOUNT paydate/PAYDATE [t/TAG]…
💡Note: A tenant can have any number of tags or requests (including 0).
Examples:
tenant n/John Tan p/91234567 e/jtan@example.com a/Blk 123 #12-34, Bedok lease/2025-01-01 2026-12-31 r/2800.00 paydate/2025-01-01
tenant n/Sarah Kim p/12398653 e/sarahk@example.com a/Blk 234 #56-78, Clementi lease/2025-02-02 2027-02-02 r/4000.00 paydate/2025-02-02
dtenant
Deletes the specified tenant from the application.
Format: dtenant TENANT_INDEX
💡Note: Index refers to the number shown when tenant list is displayed, and it must be a positive whole number.
⚠️ Warning:
Examples:
list
followed by dtenant 2
deletes the second tenant listed in the application.find John
followed by dtenant 1
deletes the 1st person in the results of the find
command.edit
Edits an existing tenant in the application.
Format: edit TENANT_INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [lease/LEASE] [r/AMOUNT] [paydate/PAYDATE] [t/TAG]...[j/JOB]...[t/TAG]…
💡Note:
- Edits the person at the specified
TENANT_INDEX
. The tenant index refers to the index number shown in the displayed tenant list. The index must be a positive whole number 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.
- You can remove all the person’s tags by typing
t/
without specifying any tags after it.
Examples:
edit 1 p/91234567 e/johndoe@example.com
edits the phone number and email address of the 1st person to be 91234567
and johndoe@example.com
respectively.edit 2 n/Betsy Crower t/
edits the name of the 2nd person to be Betsy Crower
and clears all existing tags.find
Find tenants whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
💡Note:
- 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 the name is searched.
- Only full words will be matched e.g.
Han
will not matchHans
- Persons matching at least one keyword will be returned (i.e.
OR
search). e.g.Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
find John
returns john
and John Doe
.find alex david
returns Alex Yeoh
, David Li
.list
Displays a list of all tenants currently stored in the application, ordered from the earliest added to the most recent.
Format: list
💡Note:
- Any additional text after
list
command will be ignored.list
without any tenants will show you empty list, hence recommend you to add some tenants to the application.
job
Adds a maintenance job to the job list in the application.
Format: job d/DESCRIPTION
💡Note:
- Replace
DESCRIPTION
with a clear description of the maintenance issue.- Each job added will be tracked in the system and can be linked to the respective tenant/unit.
Examples:
job d/Water leakage in ceiling
job d/Pipe leakage
djob
Deletes a maintenance job from the application.
Format: djob JOB_NUMBER
💡Note:
- Job number refers to the number shown when job list is displayed, and it must be a positive whole number.
⚠️ Warning:
Examples:
djob 2
deletes the job with job number 2 if it exists.ejob
Edits a maintenance job from the application.
Format: ejob JOB_NUMBER d/DESCRIPTION
💡Note:
- Job number refers to the number shown when job list is displayed, and it must be a positive whole number.
- Replace
DESCRIPTION
with a clear description of the maintenance issue.
Examples:
ejob 3 d/fix faucet
changes the description of the job with job number 3 to "fix faucet".fjob
Find maintenance jobs whose descriptions contain any of the given keyword.
Format: fjob KEYWORD [MORE KEYWORDS]
💡Note:
- The search is case-insensitive. e.g
pipe
will matchPipe
- The order of the keywords does not matter. e.g.
Pipe leak
will matchleak pipe
- Only the description is searched.
- Only full words will be matched e.g.
Pipe
will not matchPipes
- Maintenance jobs matching at least one keyword will be returned (i.e.
OR
search). e.g.Broken window
will returnBroken pipe
,Window repair
Examples:
fjob pipe
returns pipe
and Pipe Leakage
.fjob aircon repair
returns Aircon Leakage
and Repair Pipe
.link
Link a maintenance job to a specific tenant
Format: link TENANT_INDEX j/JOB_NUMBER
💡Note:
JOB_NUMBER
is the index number of the job in the job list that you want to mark as completed.- You can only link jobs and tenants that already exist in the system.
- Once linked, the job will appear under the tenant’s assigned jobs in the display.
- Deleting a linked job will also remove it from the tenant’s assigned job list.
- Marking and unmarking linked job will change the status of completion under tenant's assigned job list.
Examples:
link 2 j/5
links the 5th maintenance job in the job list to the 2nd tenant in the tenant list.ljob
Displays a list of all jobs currently stored in the application, ordered from the earliest added to the most recent.
Format: ljob
💡Note:
- Any additional text after
ljob
command will be ignored.list
without any jobs will show you empty list, hence recommend you to add some maintenance jobs to the application.
mark
Updates the status of a maintenance job so that completed tasks can be tracked easily.
Format: mark JOB_NUMBER
💡Note:
JOB_NUMBER
is the index number of the job in the job list that you want to mark as completed.- Once marked, the job status will be updated in the display under any linked tenant.
- If a job is marked by mistake, you can use the
unmark
command to revert it as not completed.
Examples:
mark 3
updates the completion status of job number 3 of the job list to completed.unmark
Revert a maintenance job's status to not completed in case it was marked as complete by mistake.
Format: unmark JOB_NUMBER
💡Note:
JOB_NUMBER
is the index number of the job in the job list that you want to mark as completed.- Once unmarked, the job will no longer appear as completed under any linked tenant.
Examples:
unmark 3
updates the status of job number 3 of the job list back to not completed.clear
Remove all tenants from the application.
Format: clear
⚠️ Warning: This action is irreversible, all data will be permanently deleted. Make sure you have backed up any important tenant or job information before using this command.
exit
Closes the program/application.
Format: exit
💡Note: All data entered will be automatically saved to storage.
help
Opens the help window which provides link accessing the user guide and get assistance with commands. This command is useful if you need a quick reminder on how to use the available commands.
Format: help
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 EstateMate home folder.
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.Terms | Meanings |
---|---|
Command Prefix | A short identifier followed by a / used in commands to specify parameters |
Optional Parameter | A parameter enclosed in square brackets [ ] in a command that can be included or omitted. |
Upper-Case Parameter | A placeholder in commands (e.g., NAME , PHONE ) that must be replaced with actual values. |