Tinner (Anagram of Intern) is a desktop app for managing internship applications for students, 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, Tinner allows you to easily sort through and retrieve relevant information faster than traditional GUI apps.

Tinner aims to solve the hassle of managing internship applications though 3 aspects.

  1. Tracks essential information such as statuses and deadlines at a glance.
  2. Reminds you of important deadlines so that you will not miss anything about your application.
  3. Allows you to Review the process and take down notes so that you can ace your next application.

The main purpose of this User Guide is to assist the user in learning how to use Tinner. The guide covers everything from what the user sees, how Tinner can help the user, and even its limitations.

Table of Contents


Quick Start

  1. Ensure you have Java 11 or above installed in your computer.
  2. Download the latest tinner.jar.
  3. Copy the file to the folder you want to use as the home folder for your Tinner.

For Windows

  1. Double-click the file to start the app

For Mac

  1. Run the following command in the directory containing tinner.jar:
java -jar tinner.jar

:warning: On Mac devices, the above command java -jar tinner.jar must be invoked rather than double-clicking the file to start the application or else the application will be unable to run as expected.

Ui

  1. 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 companies and internship roles.
    • addCompanyn/Google p/98765432 e/hr_google@gmail.com a/70 Pasir Panjang Rd, #03-71 Mapletree Business City II, Singapore 117371 : Adds a company named Google to Tinner.
    • addRole1 n/Software Engineering Intern s/applying r/30-05-2022 23:59 d/Write mobile applications $/5000 : Adds a software engineering intern role to the company at index 1.
    • deleteCompany1 : Deletes the 1st company shown in the current list.
    • deleteRole1 1 : Deletes the 1st role of the 1st company shown in the current list.
    • exit : Exits the app.
  2. Refer to the Features below for details of each command.

Back to Table of Contents


About

Outline of this Guide

This subsection helps you to understand the Graphical User Interface (GUI), commonly used technical terminologies and general symbols to help you better understand the User Guide.

Following this would be the Features, detailing the capabilities of Tinner and how to use them. This section can be either read from the start to bottom or by nicely divided segments of Tinner’s repertoire in the Table of Contents and learn everything you can do with that specific area.

Back to Table of Contents

The GUI of Tinner can be broken down into different segments with different purposes. This section aims to help users who are confused by the GUI get a better understanding of its use and get more comfortable using the application.

Main Window

Main Window

Component Function
Tab Bar Shortcuts for you to quickly exit Tinner or view help
Command Box Text field for users to key in their commands
Response Box Tinner’s response to user’s commands.
If the command was successful, Tinner would respond with what it did. Else it tells you what went wrong and any tips to fix it
Company Result List List out all the companies tracked by Tinner, or those that you specifically want to find
Role Result List List out all the roles in this company tracked by Tinner, or those that you specifically want to find
Role Tags A quick and easy visual aid to check an application’s progress, more on this below
Status Bar Shows the file path to which your data is being saved at

Back to Table of Contents

Role Tags

The role tags are colour coded in order to make use of the GUI to better inform you how far along the internship application process for each role is at a glance.

Role Tags

Back to Table of Contents

Reminder Pane

Reminder Pane

Component Function
Reminder List List of all reminders within the reminder window (defaults to 7 days) in ascending order
Date Card With the date denoted at the top, all the reminders within this date card have their date of reminder on the same day
Reminder Card Describes the company name and role name to be reminded of as well as its status and full reminder date and time; reminders are sorted in chronological order, from which reminders with the same date and time are sorted in alphabetical order

:information_source: The Reminder Pane cannot be re-opened after it is closed, until the next restart of the application.

:information_source: All changes to Tinner’s company list will not be reflected in the Reminder Pane as the application is still running, and will only be reflected after restarting the application.

Back to Table of Contents

Technical Terminologies

Term What it means
Command word Commands are invoked based on the command word, which is the first word in every user command; The command word is indicated by COMMAND_WORD in the guide
Parameter User input supplied to a command
Whitespace Any string of text composed only of spaces, tabs or line breaks
Integer An integer is a number which is not a fraction; a whole number

Back to Table of Contents

General Symbols

Symbol What it means
list Words that have a grey highlighted background are either commands or parameters
:bulb: Useful tip
:warning: Warning
:information_source: Important piece of information

Back to Table of Contents

Command Format

The following points explain the format of a command.

  • Words in UPPER_CASE are the parameters to be supplied by the user.
    e.g. in addCompany n/COMPANY e/EMAIL, COMPANY and EMAIL represent parameters which can be used like addCompany n/Google e/hr@google.com.

  • Items in square brackets are optional.
    e.g n/COMPANY [p/PHONE_NUMBER] can be used as n/Google P/65427981 or as n/Google.

  • Parameters can be in any order.
    e.g. if the command specifies n/COMPANY [p/PHONE_NUMBER], [p/PHONE_NUMBER] n/COMPANY 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 specify p/12341234 p/56785678, only p/56785678 will be taken.

  • Additional non-whitespace parameters for commands that do not take in parameters (such as help, list, exit) will result in an error.
    e.g. if the command specifies help 123, Tinner will throw an error and the command will not be executed.

  • Duplicate company names are not allowed.
    e.g. if there exists a company named meta, adding another company with the name meta is not allowed.

:information_source: Commands are recognised by their command word. As such, if the command word is incorrect, even if it differs slightly from the correct command word, Tinner’s response box will indicate that you have entered an unknown command.

:information_source: Note that the invalid command messages in the response box will not specify the missing parameters in the command.

Back to Table of Contents

Command Restrictions

Company Restrictions

  • The COMPANY_NAME should only contain alphanumeric characters and spaces, and have a character limit of at most 30.
  • The PHONE_NUMBER should only contain numbers, and be at least 3 digits long and at most 14 digits.
  • The EMAIL should be of the format local-part@domain and adhere to the following constraints:
    • The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).
    • The local-part may not start or end with any special characters.
    • This is followed by a ‘@’ and then a domain name. The domain name is made up of domain labels separated by periods.
    • The domain name must:
      • end with a domain label at least 2 characters long
      • have each domain label start and end with alphanumeric characters
      • have each domain label consist of alphanumeric characters, separated only by hyphens, if any
  • The ADDRESS should not be blank.

:information_source: In the ADDRESS field, if the character / is present, the previous character in the user input should be a space to observe the intended output. If the previous character matches any of these characters, ‘a’,’e’,’n’,’p’, excluding the parentheses, the intended output will not be observed.

Back to Table of Contents

Role Restrictions

  • The ROLE_NAME should only contain alphanumeric characters, spaces and ending with an optional pair of round brackets to specify the role type. It has a character limit of at most 30.
  • The REMINDER_DATE should not be in the past and must be a valid date in the following format: dd-MM-yyyy HH:mm.
  • The STATUS is case-sensitive and can only accept the following inputs:
    • applying
    • pending
    • interview and assessments
    • offered
    • rejected
    • complete
  • The DESCRIPTION can contain alphanumeric characters, spaces and special characters.
  • The STIPEND must be a positive integer with input going up to 10 digits long.

Back to Table of Contents


Demo Use Cases

Use case describes an interaction between the user and Tinner for a specific functionality.

:information_source: Note that some of these demos may be outdated, as such do remember to update the reminder date if you follow the demo as reminder dates cannot be in the past.

Use cases

Use Case #1: Applying to a role in a company

Say you found a company with an opening that you are interested in. You did your research and found relevant information pertaining to the company and the role. Here’s how you can input this data in the application:

:information_source: Note the successful command execution message in the response box upon successful adding of the role. This applies for this use case and all other use cases listed.

Back to Table of Contents

Use Case #2: Deleting a company or a role

Perhaps for some reason, you decide not to go through with an application. Maybe you realised the company’s mission and vision were not in line with your values or maybe you realised the role isn’t for you. Here’s how you can delete these entries from the application:

Back to Table of Contents

Use Case #3: Editing a company or a role

Say you received an email for an interview and the point of contact’s email is different. Here’s how you can make changes to the application:

Also, you can change the status of your internship application and set the reminder for the interview date by making this entry:

:information_source: Note the change in color of the role tag.

Back to Table of Contents

Use Case #4: Setting reminder window for reminder list

Assuming that the reminder date from Demo Use Case #3 is within a week from today, upon the next launch of Tinner, you will be able to see a reminder pop-out box like this:

ReminderDemo

If you do not see the intended reminder, it is likely that the reminder date is not within the reminder window.
Thus, you can increase the reminder window by making this entry:

Back to Table of Contents

Use Case #5: Favouriting a company

A scenario where multiple companies have sent you offers and you may want to store these companies in a list of favourites for ease of reference.
You can favourite a company by making this entry:

:information_source: Note that the favourite company will be denoted by the star icon next to the company name.

:information_source: Note that favouriting companies can be utilized in other ways, and not just to keep track of companies which have sent you offers.

You can choose to unfavourite by making this entry:

Finally, you can make a quick reference by listing all favourite companies using the listFavourite command.

Back to Table of Contents

Use Case #6: Finding a role

In the future when you have many applications, finding specific applications can be daunting. The find command allows you to search for applications easily with keywords matching COMPANY_NAME and ROLE_NAME.

Say you are interested in finding out what are the roles you had applied to at Amazon, you can make this entry:

Then after realising that you have an offer for a backend role at Amazon, you want to check out the progress of similar roles. You can search for other backend roles by making this entry:

:bulb: Find a specific role in a specific company by providing both COMPANY_NAME and ROLE_NAME. E.g. find c/amazon r/backend engineer.
:bulb: After performing the find command, the response box will contain role and company keywords which you have previously entered.

Back to Table of Contents


Features

Modifying Companies

This section pertains to modifying the data of a company item as stored by Tinner.

Adding a company: addCompany

The most fundamental command in Tinner. Much like storing contact details in an address book, save details about a company that may come in handy during the internship application process.

Function: Adds a company that does not exist in the list.

Format: addCompany n/COMPANY_NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]

Examples:

  • addCompany n/Google p/98765432 e/hr_google@gmail.com a/70 Pasir Panjang Rd, #03-71 Mapletree Business City II, Singapore 117371
  • addCompany n/Meta p/91234567 e/hr_meta@meta.com a/9 Straits View, Marina One, Singapore 018937
  • Refer to Demo Use Case #1 for an example use case.

:information_source: The EMAIL and PHONE_NUMBER are fields to store the contact details belonging to the Point of Contact (POC) after applying for a role at the company. This POC could be a representative from a job seeking agency.

:warning: If a prefix is specified, even for optional fields, the value after the prefix cannot be blank. e.g. p/ only is not valid but p/94442222 is valid.

Back to Table of Contents

Editing an existing company : editCompany

Added a company with addCompany but made a typo? The company recruitment team changed their email address? Fret not, editCompany has got you covered. Simply edit the parts of the company details that you want updated.

Function: Edits the specified company within the displayed company list.

Format: editCompany COMPANY_INDEX [n/COMPANY_NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]

  • Edits the company at the specified INDEX. The index refers to the index number shown in the displayed company 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.
    • PHONE_NUMBER, EMAIL and ADDRESS fields can be left blank, allowing you to remove previously added information which may be erroneous.
  • More restrictions for command parameters can be found here

Examples:

  • list followed by editCompany 1 p/91234567 e/johndoe@example.com edits the 1st company in the displayed company list.
  • list followed by editCompany 1 p/ e/ removes PHONE_NUMBER and EMAIL from the 1st company in the displayed company list.
  • Refer to Demo Use Case #3 for an example use case.

Back to Table of Contents

Deleting a Company : deleteCompany

Delete a company when you’re not interested in them anymore with deleteCompany. This will help you keep your list of companies less clustered and thus more organised.

Function: Deletes the specified company within the displayed company list.

Format: deleteCompany COMPANY_INDEX

  • Deletes the company at the specified COMPANY_INDEX.
  • The index refers to the index number shown in the displayed company list.
  • The index must be a positive integer like 1, 2, 3, …
  • Refer to Demo Use Case #2 for an example use case.

Examples:

  • list followed by deleteCompany 2 deletes the 2nd company in the displayed company list.

:warning: Deleting a company would also delete all roles and information belonging to it. Since there is no undo feature, please double check before using this command.

Back to Table of Contents

Favouriting a specific company: favourite

We all have those few companies that we’re particularly interested in. Use favourite to visually tag a company with a star to let it stand out from the rest.

Function: Favourite a specific company from the list of companies.

Format: favourite COMPANY_INDEX

  • Favourites the company at the specified COMPANY_INDEX.
  • The index refers to the index number shown in the displayed company list.
  • The indexes must be a positive integer like 1, 2, 3, …

Examples:

  • list followed by, favourite 1 favourites the 1st company in Tinner.
  • Refer to Demo Use Case #5 for an example use case.
:bulb: Easily track and view your favourite companies by using the listFavourite command.

Back to Table of Contents

Unfavouriting a specific company: unfavourite

Perhaps you fell through with an ex-favourite company. Use unfavourite to peel that star off.

Function: Unfavourite a specific company from the list of companies.

Format: unfavourite COMPANY_INDEX

  • Unfavourites the company at the specified COMPANY_INDEX.
  • The index refer to the index number shown in the displayed company list.
  • The indexes must be a positive integer like 1, 2, 3, …

Examples:

  • list followed by, unfavourite 1 unfavourites the 1st company in Tinner.
  • Refer to Demo Use Case #5 for an example use case.

Back to Table of Contents

Modifying Roles

This section discusses features that modify the data of a role item that is (or is to be) associated with a company in Tinner.

Adding an internship role to an existing company: addRole

What’s Tinner without the ability to track internships? Use addRole create a new internship role under an existing company.

Function: Adds an internship role to a company that already exists in the list.

Format: addRole COMPANY_INDEX n/ROLE_NAME [(TYPE)] s/STATUS [r/REMINDER_DATE] [d/DESCRIPTION] [$/STIPEND]

  • Add internship role at the specified COMPANY_INDEX.
  • The COMPANY_INDEX must be a positive integer like 1, 2, 3, …
  • More restrictions for command parameters can be found here.

Examples:

  • addRole 1 n/Data Analyst s/applying r/30-05-2022 23:59 d/Analyse data $/4800
  • addRole 3 n/Software Engineer (Front end) s/applying r/30-05-2022 01:20 d/web deveploment with react js $/2400
  • list followed by deleteCompany 2 deletes the 2nd company in the displayed company list.
  • Refer to Demo Use Case #1 for an example use case.
:bulb: If there are too many companies and you do not know what is the company index, try searching for keywords to that company and use the new index shown instead.

:information_source: Roles in a Company are listed based on the order in which they are added to the Company.

:information_source: Role name is special as it does not just accept alphanumeric symbols, but also round brackets too.

:warning: When round brackets are used, they must be in pairs and at the end of the role name.

Back to Table of Contents

Editing an existing role from company : editRole

Just got invited to an interview? Keep your internship role status and other details up to date with editRole.

Function: Edits the specified role in the specified company within the displayed company list.

Format: editRole COMPANY_INDEX ROLE_INDEX [n/ROLE_NAME [(TYPE)]] [s/STATUS] [r/REMINDER_DATE] [d/DESCRIPTION] [$/STIPEND]

  • Edits the role at the specified ROLE_INDEX of the company at the specified COMPANY_INDEX. The indexes refers to the index number shown in the displayed company list. The indexes 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.
    • REMINDER_DATE, DESCRIPTION and STIPEND fields can be left blank, allowing you to remove previously added information which may be erroneous.
  • More restrictions for command parameters can be found here.

Examples:

  • list followed by editRole 1 1 s/offered $/3000 edits the 1st role from the 1st company in the displayed company list.
  • list followed by editRole 1 1 r/ d/ $/ removes REMINDER_DATE, DESCRIPTION and STIPEND from the 1st role from the 1st company in the displayed company list.
  • Refer to Demo Use Case #3 for an example use case.

Back to Table of Contents

Deleting an internship role from company : deleteRole

Perhaps you revoked an internship application, or never got word back from a company. Whatever your reason, keep reundant roles off your mind and Tinner with deleteRole.

Function: Deletes the specified role in the specified company within the displayed company list.

Format: deleteRole COMPANY_INDEX ROLE_INDEX

  • Deletes the role at the specified ROLE_INDEX of the company at the specified COMPANY_INDEX. The indexes refer to the index numbers shown in the displayed company list.
  • The indexes must be a positive integer like 1, 2, 3, …

Examples:

  • list followed by, deleteRole 1 1 deletes the 1st role from the 1st company in the displayed company list.
  • Refer to Demo Use Case #2 for an example use case.

Back to Table of Contents

Retrieving Companies

Refer to this section for features that retrieve the data of company items.

Listing all companies : list

After adding the companies and internship roles, view them all at a glance with list.

Function: Shows a list of all companies and internship roles in Tinner.

Format: list

Back to Table of Contents

Listing all favourited companies : listFavourite

Keep your priorities straight with listFavourite. It’s list but for your favourite companies!

Function: Shows a list of all favourited companies and internship roles within these companies in Tinner.

Format: listFavourite

Examples:

Back to Table of Contents

Finding internship roles by name: find

If you’re having trouble locating an internship role, consider find. Save time by using keywords to readily identify and track down items!

Function: Find specific roles depending on the format given.

  • If only company keywords are entered, companies whose names match any of the given keywords will be displayed with all their roles.
  • If only role keywords are entered, roles across all companies whose role names match any of the given keywords will be displayed.
  • If both keywords are entered, only companies whose names match any of the company keywords, while containing one or more roles whose names match any of the role keywords, are displayed. In this scenario, only the matched roles within these companies are displayed.

Format: find c/COMPANY_KEYWORD [MORE_COMPANY_KEYWORDS] r/ROLE_KEYWORD [MORE_ROLE_KEYWORDS]

  • The search is case-insensitive. e.g. meta will match Meta.
  • The order of the keywords does not matter. e.g. software engineer will match engineer software.
  • Only the company name, and the role name are searched.
  • Only full words would be matched e.g. mobile will not match mobiles.
  • Companies and roles matching at least one keyword will be returned e.g. software engineer will match mobile engineer and software developer.
  • At least one role keyword or one company keyword must be provided in the user input.
  • The prefixes c/ and r/ can be omitted or included if no corresponding keywords are meant to be entered.

Examples:

  • find c/meta amazon r/engineer
  • Refer to Demo Use Case #6 for an example use case.

:information_source: Note that if you are trying to find ‘book’ within company names, Tinner would return records named Face Book but not Facebook.

Back to Table of Contents

General

Below are miscellaneous features that enhance the general user experience.

Changing the reminder window: setWindow

Is the default reminder window of 7 days not to your liking? Update the window size with setWindow so that you can keep better track of upcoming tasks.

  • The parameter REMINDER_WINDOW specifies the period (in days) in which you will receive reminders before a role’s reminder date.
  • Sets the reminder window to the specified REMINDER_WINDOW.
  • The REMINDER_WINDOW is capped at 30 (in days) because Tinner aims to highlight only imminent deadlines.
  • All roles with reminder dates that are within the specified REMINDER_WINDOW days away from today will show up in the reminders window.

Format: setWindow REMINDER_WINDOW

Examples:

  • setWindow 14 would make Tinner remind you of all upcoming reminders from up to two weeks prior to the associated role’s reminder date.
  • Refer to Demo Use Case #4 for an example use case.

:information_source: Changes to the reminder window can only be observed after restarting Tinner.

Back to Table of Contents

Clearing the company list: clear

Start off the internship application period fresh with clear. Reset the list of companies and internship roles with a single command.

Function: Clears the entire company list, including roles within each company.

Format: clear

Back to Table of Contents

Viewing help : help

If you’re not too familiar with the CLI, help can help! It provides a link to this user guide as well as a table of commands to assist you.

Function: Shows a message explaining how to access the user guide and a table of commands.

help message

Format: help

Back to Table of Contents

Exiting the program : exit

Use exit if you’re too lazy to click out of the application.

Function: Exits the Tinner application.

Format: exit

Back to Table of Contents

Saving the data

Tinner data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.

:warning: Editing the saved json file directly might result in undesirable results if the proper formatting is not maintained. Avoid doing so at all cost if you are unsure of the format.

Back to Table of Contents

Coming soon

Review feature that allows you to add reviews to roles.

Back to Table of Contents


Frequently Asked Questions (FAQs)

Q: Do I need to save my data manually?
A: No, you don’t. Your list of companies is saved automatically after each user command.

Q: Why is there already data in Tinner when I first launch the application?
A: When you use Tinner for the first time, Tinner creates a list of companies with sample data containing a set of default companies and roles. You may use the command clear if you wish to erase all the sample data.

Q: Where is my data saved?
A: When you use Tinner for the first time, a folder named data is created in the application’s home directory containing a file named “companyList.json”. The list of companies is stored within this file.

Q: How do I transfer my data to another computer?
A: Install the app in the other computer. Overwrite the empty data file it creates with the data file from your previous Tinner home folder.

Q: What happens if I clear the company list accidentally using clear?
A: Please ensure that you only use the command clear when you are certain that you want to erase the company list. There are currently no features to revert the clear command.

Back to Table of Contents


Command Summary

Action Format, Examples
Add company addCompany n/COMPANY_NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]

e.g., addCompany n/Google p/98765432 e/hr_google@gmail.com a/70 Pasir Panjang Rd, #03-71 Mapletree Business City II, Singapore 117371
Edit company editCompany COMPANY_INDEX [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]

e.g., editCompany 1 n/Google p/98765432 e/hr_google@gmail.com
Delete company deleteCompany COMPANY_INDEX

e.g., deleteCompany 3
Favourite company favourite COMPANY_INDEX

e.g., favourite 1
Unfavourite company unfavourite COMPANY_INDEX

e.g., unfavourite 1
Add role addRole COMPANY_INDEX n/ROLE_NAME [(TYPE)] s/STATUS r/REMINDER_DATE [d/DESCRIPTION] [$/STIPEND]

e.g., addRole 1 n/Data Analyst s/applying r/30-05-2022 23:59 d/Analyse marketing data $/5000
Edit role editRole COMPANY_INDEX ROLE_INDEX [n/ROLE_NAME [(TYPE)]] [s/STATUS] [r/REMINDER_DATE] [d/DESCRIPTION] [$/STIPEND]

e.g., editRole 1 1 s/pending r/30-05-2022 23:59 $/5000
Delete role deleteRole COMPANY_INDEX ROLE_INDEX

e.g., deleteRole 3 1
List companies list
List favourited companies listFavourite
Find company or role find c/COMPANY_KEYWORD [MORE_COMPANY_KEYWORDS] r/ROLE_KEYWORD [MORE_ROLE_KEYWORDS]

e.g., find c/google r/mobile software
Set reminder window setWindow REMINDER_WINDOW

e.g., setWindow 14
Clear clear
Help help
Exit Tinner exit

Back to Table of Contents