User Guide
Yellow Pages (YP) is a desktop app for managing contacts, optimised for use via a Graphical User Interface (GUI). If you can type fast, YP can get your contacts and scheduling done faster than traditional GUI apps.
- Quick Start
-
Features
- Viewing help
- Adding a contact
- Listing all contacts
- Editing a contact
- Locating contact by name
- Locating contact by tag
- Deleting a contact
- Clearing all data
- Creating a meeting
- Deleting a meeting
- Add contact to meeting
- Delete contact from meeting
- Edit meeting details
- Listing all meetings
- Finding meetings
- Filtering meetings
- Sorting meetings
- Exiting the program
- Saving the data
- FAQ
- Command Summary
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
.jar
from here. -
Copy the file to the folder you want to use as the home folder for your AddressBook.
-
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
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
: Adds a contact namedJohn Doe
to the Address Book. -
delete 3
: Deletes the 3rd **contact shown in the current list. -
clear
: Deletes all contacts. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
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. -
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/12341234 p/56785678
, onlyp/56785678
will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
.
Viewing help: help
Shows a message explaining how to access the help page.
Format: help
Adding a person: add
Adds a person to the address book.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…
- A Persons
NAME
must be unique. - A Persons
PHONE_NUMBER
must be at least three digits long

Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal
Listing all persons : list
Shows a list of all persons in the address book.
Format: list
Editing a person : edit
Edits an existing person in the address book.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [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.
- 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 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.
Locating persons by name: find
Finds persons whose names contain any of the given keywords.
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 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
returnsjohn
andJohn Doe
-
find alex david
returnsAlex Yeoh
,David Li
Locating contact by tag: findtag
Find persons whose tags contain the corresponding tag.
Format: findtag [MORE_TAG]
- The search is case-insensitive. e.g
Friend
will matchfriend
- Only the Tag is searched.
- Only full words will be matched e.g.
Friend
will not matchFriends
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.
- The index must be a positive integer 1, 2, 3, …
- A person cannot be deleted if they are the last person in a meeting, delete the corresponding meeting first.
Examples:
-
list
followed bydelete 2
deletes the 2nd person in the address book. -
find Betsy
followed bydelete 1
deletes the 1st person in the results of thefind
command.
Clearing all entries : clear
Clears all entries from the address book.
Format: clear
Creating a meeting : meet
Creates a meeting and adds it to the meeting list.
Format: meet [NAMES_OF_PERSONS_TO_MEET (separated by }})] ;;; MEETING_DESCRIPTION ;;; MEETING_DATE_AND_TIME (in dd-MM-yyyy HHmm format) ;;; MEETING_LOCATION
Example: meet Alex }} Bernice ;;; Project Meeting ;;; 29-01-2022 1530 ;;; UTown
Note: Separating names by }
or }}}
(or any other variation of }}
) will likely result in errors
Note: Separating each component of information by ;
or ;;
(or any other variation of ;;;
) will likely result in errors
- The names of the people to meet must correspond to the names of actual contacts, otherwise an error message will be displayed
- You can choose to type in part of the contact’s name (but must be in full word) and the software will match it to the closest contact
- i.e. There is only one contact called
Alex Yeoh
and inputtingmeet Alex ...
will identify theAlex Yeoh
as the person to meet - However, inputting
meet Al ...
will not identifyAlex Yeoh
asAl
is not a full word in the name - NOTE: if there are multiple contacts sharing the same word(s) in their names, the ambiguity will result in an error message and you will be prompted to re-enter a more precise name
- e.g. if there are two contacts called
Alex Yeoh
andAlex Lee
, then inputtingmeet Alex ...
will result in error - However, if there are three contacts named
Alex
,Alex Yeoh
andAlex Lee
, then inputtingmeet Alex ...
will fetch the contact namedAlex
since it is the contact with an exact name match.
- i.e. There is only one contact called
- For the date and time of the meeting:
- Both the month and day have to be in double digits, e.g.
1-1-2000
,01-9-2000
,9-18-2000
will not be accepted, but01-01-2000
,01-09-2000
,09-18-2000
will be - Years smaller than 1000 or greater than 10000 will not be accepted as well
- Time of the meeting has to be in 24h format
- Dates in the past are allowed, if you would like to archive/ track past meetings
- Both the month and day have to be in double digits, e.g.
- For duplicate meetings:
- A meeting is considered duplicate (and an error will be thrown) when you are meeting the same people at the same time.
- We allow concurrent meetings with different groups of people, as some people might want to arrange both a physical and a virtual meeting at the same time (this is not a feature bug, we have encountered such people before)
Deleting a meeting : deletemeeting
Deletes the selected meeting from the meeting list and UI.
Format: deletemeeting INDEX_OF_MEETING_DISPLAYED_IN_MEETING_CARDS
Example: deletemeeting 1
- The index refers to the index number of the meeting displayed in the meeting list.
- The index must be a positive integer 1, 2, 3, …
Add contacts to meeting: addpersontomeeting
Adds the list of contacts to the specified meeting.
Format: addpersontomeeting MEETING_INDEX; [NAMES]
- The index refers to the index number shown in the displayed meeting list.
- The index must be a positive integer 1, 2, 3, …
Examples:
addpersontomeeting 1; John Doe, Jane Doe
addpersontomeeting 2; Alex
Delete contacts from meeting: deletepersonfrommeeting
Deletes the list of contacts from the specified meeting.
Format: deletepersonfrommeeting MEETING_INDEX; [NAMES]
- Will not be able to delete person from meeting if only 1 person left in the meeting.
- The index refers to the index number shown in the displayed meeting list.
- The index must be a positive integer 1, 2, 3, …
Examples:
deletepersonfrommeeting 1; John Doe, Jane Doe
deletepersonfrommeeting 2; Alex
Editing a meeting : editmeeting
Edits an existing meeting in the address book.
Format: editmeeting INDEX [d/DESCRIPTION] [dd/DATE] [l/LOCATION]
- Edits the meeting 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.
Examples:
-
editmeeting 1 d/test 1 l/nus
Edits the description and location of the 1st meeting to betest 1
andnus
respectively. -
editmeeting 2 dd/23-09-2022 2359
Edits the date of the 2nd meeting to be23-09-2022 2359
.
Listing all meetings : listmeeting
Shows a list of all meetings in the address book and console.
Finding a meeting: findmeeting
Finds a meeting by the meeting’s description, location or people
Three Formats:
- Find by description:
findmeeting /named MEETING_TITLE
- Find by people:
findmeeting /with PERSON_NAME
- Find by location:
findmeeting /at LOCATION
For all three formats:
- Only one format can be used at a time e.g. they cannot be chained like:
findmeeting /named abc /at abc
- The search is case-insensitive. e.g.
project
will matchProject
- Only full words will be matched e.g.
Project
will not matchProjects
- The order of the keywords does not matter. e.g.
Project CS2103
will matchCS2103 Project
- Only the field specified by the format (description/people/location) is searched.
- Meeting fields matching at least one keyword will be returned (i.e.
OR
search). e.g.CS2100 CS2103
will return meetings withCS2100 Project
,CS2103 Project
andProject
will also return meetings withCS2100 Project
,CS2103 Project
- Keywords are split with a whitespace. e.g.
CS2100 Project
counts as two keywords
Examples:
findmeeting /at UTown Com1
findmeeting /with Jane John Simon
findmeeting /named CS2103
Filtering Meetings: filtermeetingsbetween
Format: filtermeetingsbetween AFTER_DATE ;;; BEFORE_DATE
Note - all date formats must follow the dd-MM-yyyy HHmm
format
Can be split into three cases:
-
AFTER_DATE
<BEFORE_DATE
- Lists out all meetings with dates betweenAFTER_DATE
andBEFORE_DATE
not inclusive -
AFTER_DATE
=BEFORE_DATE
- Lists out all meetings with dates matchingAFTER_DATE
which equals toBEFORE_DATE
-
AFTER_DATE
>BEFORE_DATE
- Error
Examples:
filtermeetingsbetween 10-10-2022 1050 ;;; 12-10-2022 1200
filtermeetingsbetween 10-11-2022 0000 ;;; 12-11-2022 0000
filtermeetingsbetween 10-11-2022 1000 ;;; 10-11-2022 1000
Sort Meetings: sortmeetings
Format: sortmeetings asc
or sortmeetings desc

- Sorts the list of meetings by ascending or descending date order
- Has two parameter types
asc
anddesc
which sorts the list by ascending order or descending order - Is case-insensitive, parameters can be
ASC
oraSc
etc…
Examples:
sortmeetings ASC
sortmeetings DESC
sortmeetings asc
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
AddressBook 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
AddressBook data are saved as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.

Archiving data files [coming in v2.0]
Details coming soon …
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 AddressBook home folder.
Command summary
Action | Format, Examples |
---|---|
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague
|
Clear | clear |
Delete |
delete INDEX e.g., delete 3
|
Edit |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]… e.g., edit 2 n/James Lee e/jameslee@example.com
|
Find |
find KEYWORD [MORE_KEYWORDS] e.g., find James Jake
|
Find Tag |
findtag TAG [MORE_TAGS] e.g., findtag friend CS2100
|
Create Meeting |
meet [NAMES_OF_PERSONS_TO_MEET (separated by }})] ;;; MEETING_DESCRIPTION ;;; MEETING_DATE_AND_TIME (in dd-MM-yyyy HHmm format) ;;; MEETING_LOCATION e.g., meet Alex }} Bernice ;;; Project Meeting ;;; 29-01-2022 1530 ;;; UTown
|
Delete Meeting |
deletemeeting INDEX_OF_MEETING_DISPLAYED_IN_MEETING_CARDS e.g., deletemeeting 1
|
Add Contact To Meeting |
addpersontomeeting MEETING_INDEX; [NAMES] e.g., addpersontomeeting 1; John Doe, Jane Doe
|
Delete Contact From Meeting |
deletepersonfrommeeting MEETING_INDEX; [NAMES] e.g., deletepersonfrommeeting 1; John Doe, Jane Doe
|
Edit Meeting |
editmeeting INDEX [d/DESCRIPTION] [dd/DATE] [l/LOCATION] e.g., editmeeting 1; d/cs2103 dd/10-10-2022 1010 l/UTown
|
List Meetings | listmeeting |
Find Meeting |
findmeeting /named MEETING_TITLE e.g., findmeeting /named CS2103 |
Filter Meeting |
filtermeetingsbetween AFTER_DATE ;;; BEFORE_DATE e.g., filtermeetingsbetween 10-10-2022 1010 ;;; 11-10-2022 1010 |
Sort Meetings |
sortmeetings asc or sortmeetings desc
|
List | list |
Help | help |