Welcome to Tuto—your all-in-one solution designed to help freelance tutors focus on what truly matters: teaching.
Tuto is a desktop application designed for freelance secondary school tutors in Singapore who teach small classes, usually between one and a few students. It provides an efficient and centralised way to manage student records, track attendance and performance, and handle tuition fee payments.
As a freelance tutor, you often juggle multiple students across different subjects or levels, track lessons, and manage payments using a mix of spreadsheets, WhatsApp chats, and paper notes. These administrative tasks can be time-consuming and take your focus away from teaching.
Tuto was created to simplify this process. It combines the speed and precision of a Command Line Interface (CLI) with the clarity of a Graphical User Interface (GUI), allowing tutors to type quick commands while visualising key information easily. The design assumes users are comfortable typing and prefer fast, keyboard-based interactions instead of navigating complex menus.
With Tuto, tutors can keep all their teaching and administrative information in one place. It is built to reduce workload, improve organisation, and help freelance tutors dedicate more time and attention to their students’ success.
Tuto offers comprehensive features tailored to the needs of freelance tutors:
Student Management
0234, 5832) upon creationClass Tag Management
Math_Sec3, JC1_Physics)Attendance Management
Performance Management
Fee Management
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 Tuto.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar tuto.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 students.
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 : Adds a student named John Doe to Tuto.
clear : Deletes all data.
exit : Exits the app.
Refer to the Command section below for details of all commands supported by Tuto.
Tuto operates primarily through text-based commands. Before we explore the specific commands in detail in the Commands section, let's familiarize ourselves with the basic components and format of a command.
Important: All command words, parameter prefixes and flags are case-sensitive!
add is different from ADD or Addpn/ is different from PN/ or Pn/-a is different from -AIn Tuto, a parameter prefix acts as a delimiter for specifying different types of parameters in commands. Here's a reference table for common parameter prefixes and their corresponding parameters:
| Parameter Prefix | Corresponding Parameter |
|---|---|
n/ | NAME |
s/ | STUDENT_ID |
p/ | PHONE |
e/ | |
a/ | ADDRESS |
m/ | ENROLLED_MONTH or MMYY (month/year) |
t/ | CLASS_TAG |
d/ | DATE (DDMMYYYY format) |
pn/ | PERFORMANCE_NOTE |
In Tuto, a parameter represents a placeholder where users input data. Parameters typically follow immediately after their corresponding Parameter Prefixes. Essentially, they are to be supplied by the user.
Note:
Parameter Details:
| Parameter | Prefix | Description |
|---|---|---|
NAME | n/ | Specifies the name of a student. Requirements: • Names must contain only alphabetic characters, apostrophes ('), hyphens (-), and whitespace. • Names with only whitespace are not allowed. • Must start with a letter. • Maximum length: 100 characters. |
STUDENT_ID | s/ | Specifies the Student ID of a student. Requirements: • IDs are automatically assigned in 4-digit format (e.g., 0234, 5832).• Cannot be blank. |
PHONE | p/ | Specifies the phone number of a student. Requirements: • Phone numbers must contain only numeric digits. • Must be exactly 8 digits long. • Must start with 6, 8, or 9 (Singapore mobile/landline format). |
EMAIL | e/ | Specifies the email address of a student. Requirements: • Format: local-part@domain.• Local part can contain alphanumeric characters and special characters +, _, ., -.• Local part cannot start or end with special characters. • Domain must end with a label at least 2 characters long. • Each domain label must start and end with alphanumeric characters. |
ADDRESS | a/ | Specifies the residential address of a student. Requirements: • Can contain letters, digits, spaces, and the symbols #, ,, -, '.• Cannot be blank. • First character cannot be a whitespace. |
MMYY and ENROLLED_MONTH | m/ | Specifies a month and year for enrollment or payment tracking. Requirements: • Format: Exactly 4 digits in MMYY (e.g., 0825 for August 2025).• MM must be 01-12 (January - December). Leading zero is required (e.g., 08 for August). • YY must be 00–99, interpreted as years 2000–2099. |
CLASS_TAG | t/ | Specifies a class tag to categorize students. Requirements: • Must be 1-30 characters long. • Can only contain alphanumeric characters and underscores ( _).• Tags must exist in the system before assignment to students. |
DATE | d/ | Specifies a date for attendance or performance tracking. Requirements: • Format: DDMMYYYY (e.g., 15092025 for 15 September 2025). |
PERFORMANCE_NOTE | pn/ | Specifies a performance note for a student. Requirements: • Can be any text under 200 characters. |
To understand how a full command is interpreted, let's examine the following example.
Example: add n/NAME p/PHONE e/EMAIL a/ADDRESS [m/ENROLLED_MONTH] [t/CLASS_TAG]...
Tip:
Adding class tags before enrolling students makes the process more efficient! Create your class tags first using tag -a t/CLASS_TAG, then you can assign them to students when adding them.
Key Points:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.
Items in square brackets are optional.
e.g n/NAME [t/CLASS_TAG] can be used as n/John Doe t/Math or as n/John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [t/CLASS_TAG]… can be used as (i.e. 0 times), t/Math, t/Math t/Science 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 and flags (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.
If you type an extra or unrecognised parameter (or forget to put a space), the app will append it to the previous field’s value instead of treating it as a separate parameter.
General Notes about Tuto Commands:
A command can be categorized into four formats:
COMMAND + FLAG + PARAMETER_PREFIX + PARAMETER
tag -a t/Math_Sec3, fee -p s/0001 m/0925, att -p s/0001 d/15092025 t/Math_Sec3-a (add for class tag/ mark as absent), -d (delete), -l (list), -e (edit), -v (view)-p (paid/mark as present), -up (unpaid)-t (tag filter)COMMAND + PARAMETER_PREFIX + PARAMETER
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01COMMAND + PARAMETER
find John DavidCOMMAND
list, help, exit, cleardelete, clear, tag -d, att -d, perf -d) are irreversible and will permanently delete data. Make sure you have backed up any important information before using any deletion command in this application.
The Student Management commands allow you to add, edit, find, delete, and list students in the address book.
Each student added is automatically assigned a unique Student ID (in 4-digit format, e.g. 0234, 5832), which is used in other commands such as fees, attendance, and performance tracking.
Overview of Student Management Commands
| Command | Description |
|---|---|
add n/NAME p/PHONE e/EMAIL a/ADDRESS [m/ENROLLED_MONTH] [t/CLASS_TAG]... | Add a new student to the address book |
edit s/STUDENT_ID [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/CLASS_TAG]... | Edit details of an existing student |
find KEYWORD [MORE_KEYWORDS] | Find students by name |
delete s/STUDENT_ID | Delete a student using their Student ID |
list | List all students |
clear | Clear all student entries and class tags |
addAdds a new student to the address book.
Format: add n/NAME p/PHONE e/EMAIL a/ADDRESS [m/ENROLLED_MONTH] [t/CLASS_TAG]...
Command Details and Constraints:
ENROLLED_MONTH and CLASS_TAG fields are optional.ENROLLED_MONTH is not provided, it automatically defaults to the current month, and the student is assumed to be enrolled on the first day of that month.ENROLLED_MONTH cannot be edited after creation.STUDENT_ID upon creation.You can add multiple tags by specifying t/CLASS_TAG1 t/CLASS_TAG2 ....
A student can also be added without any tags.
Examples:
add n/John Doe p/98765432 m/0825 e/johnd@example.com a/John street, block 123, #01-01 — adds a student with no tags.
Expected output:
New student added: John Doe; Phone: 98765432; Email: johnd@example.com; Address: John street, block 123, #01-01; Tags: -
add n/Betsy Crowe t/Math_Sec3 e/betsycrowe@example.com a/Clementi p/87654321 t/English_J1 — adds a student with two tags: Math_Sec3 and English_J1.
Expected output:
New student added: Betsy Crowe; Phone: 87654321; Email: betsycrowe@example.com; Address: Clementi; Tags: [Math_Sec3][English_J1]
editEdits the details of an existing student in the address book using their Student ID.
Format: edit s/STUDENT_ID [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/CLASS_TAG]...
Command Details and Constraints:
STUDENT_ID.t/CLASS_TAG1 t/CLASS_TAG2 ... (existing tags replaced with new tags).t/ with no tags provided.Examples:
edit s/0006 p/91234567 e/johndoe@example.com — edits the phone number and email of the student with ID 2042.
Expected output:
Edited student: John Doe; Phone: 91234567; Email: johndoe@example.com; Address: John street, block 123, #01-01; Tags: -
edit s/0006 n/Betsy Crower t/Math_Sec3 t/English_J1 — changes the name of student 2042 and updates the student’s tags to Math_Sec3 and English_J1.
Expected output:
Edited student: Betsy Crower; Phone: 91234567; Email: johndoe@example.com; Address: John street, block 123, #01-01; Tags: [Math_Sec3][English_J1]
edit s/0006 t/ — clears all tags.
Expected output:
Edited student: Betsy Crower; Phone: 91234567; Email: johndoe@example.com; Address: John street, block 123, #01-01; Tags: -
findFinds students whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
Command Details and Constraints:
hans matches Hans).Hans Bo matches Bo Hans).Han will not match Hans).Examples:
find alex david — displays all students with names containing “Alex” or “David”.
deleteDeletes a specified student from the address book using their Student ID.
Format: delete s/STUDENT_ID
Command Details and Constraints:
Examples:
delete s/0007 — deletes the student with ID 0007.
Expected output:
Deleted student: Betsy Crowe; Phone: 1234567; Email: betsycrowe@example.com; Address: Newgate Prison; Tags: [Math_Sec3][English_J1]
listDisplays all students currently stored in the address book.
Format: list
Command Details and Constraints:
Expected output:
Listed all students
clearClears all student records and class tags from the address book.
Format: clear
Command Details and Constraints:
Expected output:
All students and class tags have been cleared!
The Class Tag commands allow you to create, delete, and list class tags in the system.
Class tags are useful for organizing students by the classes they attend (e.g. Math_Sec3, JC1_Physics).
Overview of Class Tag Management Commands
| Command | Description |
|---|---|
tag -a t/CLASS_TAG | Add a new class tag |
tag -d t/CLASS_TAG | Delete an existing class tag |
tag -l | List all existing class tags |
tag -aAdds a new class tag to the system. This allows you to categorize students by the classes they attend.
Format: tag -a t/CLASS_TAG
Command Details and Constraints:
CLASS_TAG._). Spaces or other special characters are not allowed.MathSec3 and Math_Sec3 are considered different tags).Examples:
tag -a t/Math_Sec3 — Adds a class tag named Math_Sec3.
Expected output:
New class tag added: Math_Sec3
tag -a t/JC1_Physics — Adds a class tag named JC1_Physics.
Expected output:
New class tag added: JC1_Physics
tag -dDeletes an existing class tag from the system.
Format: tag -d t/CLASS_TAG
Command Details and Constraints:
CLASS_TAG from the system.Examples:
tag -d t/Math_Sec3 — Deletes the class tag named Math_Sec3Expected output:
Tag deleted: Math_Sec3
tag -d t/jc1_physics — Deletes the class tag named JC1_Physics, regardless of case (if JC1_Physics exists in this casing).Expected output:
Tag deleted: JC1_Physics
tag -lShows a list of all class tags currently created in the address book.
Format: tag -l
Examples:
tag -l: If class tags JC1_Physics and Math_Sec3 exist in the system.Expected output:
Listed all class tags:
1. JC1_Physics
2. Math_Sec3
tag -l: If no class tags exist in the system.Expected output:
No class tags found. You can add one using the 'tag -a' command.
The Fee Management Commands allows you to record, update, and view student payment statuses.
This helps tutors and administrators track monthly tuition fee payments efficiently and keep student records up to date.
Overview of fee commands
| Command | Description |
|---|---|
fee -p s/STUDENT_ID m/MMYY | Marks a student as PAID for a specified month |
fee -up s/STUDENT_ID m/MMYY | Marks a student as UNPAID for a specified month |
fee -v s/STUDENT_ID [m/MMYY] | Views a student’s payment history |
The fee tag shows PAID only if every month from the student’s enrolled month to the current month has been paid. Otherwise, it shows UNPAID indicates the student has outstanding fees.
fee -pMarks a student’s payment status as PAID for a specific month.
Format: fee -p s/STUDENT_ID m/MMYY
Command Details and Constraints:
Examples:
fee -p s/0001 m/0925 — marks student 0001 (Bernice Yu) as PAID for September 2025.
Expected output:
Bernice Yu has been successfully marked as Paid for September 2025.
fee -upMarks a student’s payment status as UNPAID for a specific month.
Use this command for corrections or when a payment was mistakenly marked as PAID.
Format:
fee -up s/STUDENT_ID m/MMYY
Command Details and Constraints:
Examples:
fee -up s/0001 m/0925 — marks student 0001 (Bernice Yu) as UNPAID for September 2025.
Expected output:
Bernice Yu has been successfully marked as Unpaid for September 2025.
fee -vDisplays a student’s payment history from a specified starting month up to the current month, with records shown from newest to oldest.
Format:
fee -v s/STUDENT_ID [m/MMYY]
Command Details and Constraints:
fee -p or fee -up) and default UNPAID months that were not manually recorded.Examples:
fee -v s/0001 — shows payment history for student 0001 from their enrollment month to the current month.
fee -v s/0001 m/0725 — shows payment history starting July 2025 to the current month.Interpreting the results:
marked — the payment was explicitly set via fee -p or fee -up.default — the month had no explicit record and is assumed UNPAID.The att command family allows you to record, update, and view student attendance.
Each attendance record is tied to both a date and a class tag, allowing tutors to manage students who attend multiple classes efficiently.
Overview of Attendance Management Commands
| Command | Description |
|---|---|
att -p s/STUDENT_ID d/DATE t/CLASS_TAG | Mark a student as present for a given date and class tag |
att -a s/STUDENT_ID d/DATE t/CLASS_TAG | Mark a student as absent for a given date and class tag or undoes a marked attendance |
att -d s/STUDENT_ID d/DATE t/CLASS_TAG | Delete an attendance record for a student on a specific date and class |
att -v s/STUDENT_ID | View a student's attendance records |
att -pMarks a student's attendance as PRESENT for a specific date and class.
Format: att -p s/STUDENT_ID d/DATE t/CLASS_TAG
Command Details and Constraints:
DDMMYYYY format (e.g., 15092025 for 15 September 2025).Examples:
att -p s/0001 d/15092025 t/Math — Marks student 0001 (Bernice Yu) as present for 15 September 2025 in Math class.
Expected output:
Marked Bernice Yu as present on 15-09-2025 for class Math.
att -aMarks a student's attendance as ABSENT for a specific date and class. Use this to record absences or to undo a previously marked PRESENT attendance by changing it to ABSENT.
Format: att -a s/STUDENT_ID d/DATE t/CLASS_TAG
Command Details and Constraints:
DDMMYYYY format (e.g., 15092025 for 15 September 2025).Examples:
att -a s/0001 d/15092025 t/Math — Marks student 0001 (Bernice Yu) as absent for 15 September 2025 in Math class.
Expected output:
Marked Bernice Yu as absent on 15-09-2025 for class Math.
att -dDeletes an attendance record for a student on a specific date and class. Use this to remove attendance records that were marked by mistake or are no longer needed.
Format: att -d s/STUDENT_ID d/DATE t/CLASS_TAG
Command Details and Constraints:
DDMMYYYY format (e.g., 15092025 for 15 September 2025).Examples:
att -d s/0001 d/15092025 t/Math — Deletes the attendance record for student 0001 (Bernice Yu) on 15 September 2025 in Math class.
Expected output:
Deleted attendance for: Bernice Yu on 15-09-2025 for class Math
att -d s/0003 d/25082025 t/Science — Attempts to delete an attendance record that doesn't exist.
Expected output:
No attendance record found for David Li on 25-08-2025 for class Science
att -vDisplays all attendance records for a specific student across all their classes.
Format: att -v s/STUDENT_ID
Command Details and Constraints:
Examples:
att -v s/0001 — Shows all attendance records for student 0001 (Bernice Yu).
att -v s/0003 — If no attendance record for student 0003 (David Li).
Expected output:
No attendance record found for: David Li
The perf command family allows you to track students' performance in class by adding performance notes.
Each performance note is tied to both a date and a class tag, allowing tutors to document specific achievements or areas for improvement for each student.
Overview of perf commands
| Command | Description |
|---|---|
perf -a s/STUDENT_ID d/DATE t/CLASS_TAG pn/PERFORMANCE_NOTE | Add performance data for a student |
perf -v s/STUDENT_ID | View performance data for a student |
perf -e s/STUDENT_ID d/DATE t/CLASS_TAG pn/PERFORMANCE_NOTE | Edit existing performance data for a student |
perf -d s/STUDENT_ID d/DATE t/CLASS_TAG | Delete performance data for a student |
perf -aAdds a performance note for a student in a specific class on a specific date.
Format: perf -a s/STUDENT_ID d/DATE t/CLASS_TAG pn/PERFORMANCE_NOTE
Command Details and Constraints:
STUDENT_ID.DATE must not be before the student's enrollment date and cannot be a future date.CLASS_TAG must correspond to an existing class tag assigned to the student.PERFORMANCE_NOTE can be any text under 200 characters.Examples:
perf -a s/0001 d/18092025 t/Math_Sec3 pn/Scored 85% on mock test Expected output:
Performance note successfully added for John Tan in Math_Sec3 on 18-09-2025.
perf -eEdits an existing performance note for a student.
Format: perf -e s/STUDENT_ID d/DATE t/CLASS_TAG pn/PERFORMANCE_NOTE
Command Details and Constraints:
STUDENT_ID, DATE, and CLASS_TAG.PERFORMANCE_NOTE can be any text under 200 characters.Examples:
perf -e s/0001 d/18092025 t/Math_Sec3 pn/Scored 90% on mock test after re-evaluation Expected output:
Performance note for John Tan in Math_Sec3 on 18-09-2025 successfully edited.
perf -dDeletes a performance note for a student.
Format: perf -d s/STUDENT_ID d/DATE t/CLASS_TAG
Command Details and Constraints:
STUDENT_ID, DATE, and CLASS_TAG.Examples:
perf -d s/0001 d/18092025 t/Math_Sec3 Expected output:
Performance note for John Tan in Math_Sec3 on 18-09-2025 successfully deleted.
perf -vDisplays all performance notes for a student.
Format: perf -v s/STUDENT_ID
Command Details and Constraints:
STUDENT_ID.Examples:
filterThe filter command allows you to quickly find students based on specific criteria such as payment status or class tags.
This is useful for tutors and administrators who want to check which students
have paid or are unpaid for a given month, or to focus on a specific class group.
Overview of Filter Commands
Filtering supports three main types of criteria:
| Command | Description |
|---|---|
filter -p m/MMYY | Show students marked as PAID for a specific month |
filter -up m/MMYY | Show students marked (or defaulted) as UNPAID for a specific month |
filter -t t/CLASS_TAG | Show students belonging to a particular CLASS_TAG |
You can only use one flag per command. Each filter updates the main student list view to display only matching entries.
filter -pShows all students whose payment status is PAID for a given month. You can only filter up to the current month (future months are not allowed).
Format: filter -p m/MMYY
Examples:
filter -upShows all students whose payment status is UNPAID for a given month. You can only filter up to the current month (future months are not allowed).
Format: filter -up m/MMYY
Examples:
filter -tFilters the main list to show only persons who are assigned the specified class tag.
Format: filter -t t/CLASS_TAG
Command Details and Constraints:
Examples:
filter -t t/Math_Sec3 — Shows only students who have the Math_Sec3 tag.helpShows a message explaining how to access the help page.
Format: help
exitExits the program.
Format: exit
AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
AddressBook data are saved automatically as a JSON file [JAR file location]/data/addressbook.json. Advanced users are welcome to update data directly by editing that data file.
Notes:
classTags list in the JSON file).Caution:
If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
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.
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.| Action | Format, Examples |
|---|---|
| Add | add n/NAME p/PHONE e/EMAIL a/ADDRESS [m/ENROLLED_MONTH] [t/CLASS_TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 m/0825 t/Math t/Science |
| Clear | clear |
| Delete | delete s/STUDENT_IDe.g., delete s/0230 |
| Edit | edit s/STUDENT_ID [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…e.g., edit s/1234 n/James Lee e/jameslee@example.com |
| Find | find KEYWORD [MORE_KEYWORDS]e.g., find James Jake |
| List | list |
| Help | help |
| Class Tag (ADD) | tag -a t/CLASS_TAGe.g., tag -a t/Math_Sec3 |
| Class Tag (DELETE) | tag -d t/CLASS_TAGe.g., tag -d t/Math_Sec3 |
| Class Tag (LIST) | tag -le.g., tag -l |
| Mark as PAID | fee -p s/STUDENT_ID m/MMYY e.g., fee -p s/0001 m/0925 |
| Mark as UNPAID | fee -up s/STUDENT_ID m/MMYY e.g., fee -up s/0001 m/0925 |
| View payment history | fee -v s/STUDENT_ID [m/MMYY] e.g., fee -v s/0001 m/0525 |
| Mark as PRESENT | att -p s/STUDENT_ID d/DDMMYYYY t/CLASS_TAG e.g., att -p s/0001 d/15092025 t/Math |
| Mark as ABSENT | att -a s/STUDENT_ID d/DDMMYYYY t/CLASS_TAG e.g., att -a s/0001 d/15092025 t/Math |
| Delete attendance | att -d s/STUDENT_ID d/DDMMYYYY t/CLASS_TAG e.g., att -d s/0001 d/15092025 t/Math |
| View attendance | att -v s/STUDENT_ID e.g., att -v s/0001 |
| Filter by PAID status | filter -p m/MMYY e.g., filter -p m/1025 |
| Filter by UNPAID status | filter -up m/MMYY e.g., filter -up m/1025 |
| Filter by class tag | filter -t t/CLASS_TAG e.g., filter -t t/Math_Sec3 |
| Add performance note | perf -a s/STUDENT_ID d/DATE t/CLASS_TAG pn/PERFORMANCE_NOTE e.g., perf -a s/0001 d/18092025 t/Math_Sec3 pn/Scored 85% on mock test |
| View performance notes | perf -v s/STUDENT_ID e.g., perf -v s/0001 |
| Edit performance note | perf -e s/STUDENT_ID d/DATE t/CLASS_TAG pn/PERFORMANCE_NOTE e.g., perf -e s/0001 d/18092025 t/Math_Sec3 pn/Scored 90% on mock test after re-evaluation |
| Delete performance note | perf -d s/STUDENT_ID d/DATE t/CLASS_TAG e.g., perf -d s/0001 d/18092025 t/Math_Sec3 |