tp

InternSprint User Guide

Introduction

InternSprint is your Ultimate Internship Application Assistant!

WelcomeToInternsprintSS

Navigating internship applications can be overwhelming - multiple platforms, countless CV versions, and keeping track of application stages can quickly become chaotic. InternSprint is here to streamline the entire process, acting as your personal assistant for managing and organizing internship applications efficiently.

Designed for Command Line Interface (CLI) users, InternSprint is optimized for speed, flexibility, and simplicity. Whether you’re applying through countless online jop application portals, or personal connections, our tool ensures you stay on top of your applications.

Key features include, logging, monitoring and updating your applications across multiple platforms in one place and easily tracking status of your applications.

With InternSprint, you’ll never lose track of an application again!

Table of Contents

Quick Start

  1. Ensure you have Java 17 or above installed in your Computer, and it is compatible with your device operating system (Mac or Windows).

  2. Download the latest .jar file from here under latest release.

  3. Copy the file to the folder you want to use as the home folder for InternSprint.

  4. Open a command terminal, cd into the folder you put the jar file in, and use the java -jar InternSprint.jar command to run the application. InternSprint should appear in your terminal window as shown below.

    If you are a Mac user, do note that due to Mac Gatekeeper, this .jar file and its home folder cannot be in the Downloads directory, and will have to be relocated to another directory such as Desktop to bypass Mac’s additional security check, hence if you see Error: unable to access jarfile InternSprint.jar simply relocate the directory. (You may bypass this quarantine on your Mac but this will require admin privileges and could be potentially be a security risk since anyone can now access this file, thus the relocation method is best).

    • Note the app will generate a data.txt file in this home folder which will be empty when the app is first launched.
  5. Type the command in the terminal window and press Enter to execute it. e.g. typing list and pressing Enter will list all stored tasks. Some example commands you can try:

    list : Lists all internships.

    add general /c Google /r Human Resource /dept HR : Adds a general type of internship at Google, of Human resources role, under HR department.

    edit /index 1 /eli Year 2 students : Adds description of eligibility to internship indexed at 1 in your list.

    bye : Exits the app.

Features

Notes about the command format:

Internship Commands

Help: help

Allows users to view the usage of all the available commands, or the usage of a specific command.

Format: help OR help COMMAND

Example of usage:


> help add general
------------------------------------------------------------------------------------------------------------------------
    -> add general: Adds a general internship to the internship list.
    Parameters: /c COMPANY_NAME /r ROLE /dept DEPARTMENT
    Example: add general /c Google /r Human Resource /dept HR
------------------------------------------------------------------------------------------------------------------------

Listing all internships: list

Adds a new item to the list of todo items.

Format: list

Example of usage:


> list
------------------------------------------------------------------------------------------------------------------------
  Here is your internship list!
    Software Internships:
      1. Company: google, Role: intern, Tech: c++
    Hardware Internships:
    General Internships:
      2. Company: UBS, Role: IT Intern, Dept: IT
------------------------------------------------------------------------------------------------------------------------

Adding a new internship: add [TYPE]

Internships are categorized into 3 types: general, software and hardware.

They have multiple parameters that can be set, and some of them are optional.

Examples of usage for each type of internship can be found below.


Adding a general category of internship: add general

Allows users to add a new general internship to their list of internship applications.

Basic Format: add general /c COMPANY_NAME /r ROLE /dept DEPARTMENT

Extended Format (with optional parameters): add general /c COMPANY_NAME /r ROLE /ex EXPECTATIONS /eli ELIGIBILITY /dept DEPARTMENT /desc DESCRIPTION /status STATUS

Examples of usage:


> add general /c Google /r Human Resource /dept HR
------------------------------------------------------------------------------------------------------------------------
    New internship added
    Company: Google, Role: Human Resource, Dept: HR
    Now you have 1 internships in the list
------------------------------------------------------------------------------------------------------------------------

> add general /c Lazada /r Adviser /dept HR /ex Good Communication /eli Year 2 student
------------------------------------------------------------------------------------------------------------------------
    New internship added
    Company: Lazada, Role: Adviser, Dept: HR
    Now you have 2 internships in the list
------------------------------------------------------------------------------------------------------------------------

Adding a software category of internship: add software

Allows users to add a new software internship to their list of internship applications.

Basic Format: add software /c COMPANY_NAME /r ROLE /tech TECHNOLOGIES

Extended Format (with optional parameters): add software /c COMPANY_NAME /r ROLE /ex EXPECTATIONS /eli ELIGIBILITY /tech TECHNOLOGIES /desc DESCRIPTION /status STATUS

Examples of usage:


> add software /c Google /r Software Engineer /tech Java, Python
------------------------------------------------------------------------------------------------------------------------
    New internship added
    Company: Google, Role: Software Engineer, Tech: Java, Python
    Now you have 3 internships in the list
------------------------------------------------------------------------------------------------------------------------

> add software /c IBM /r Data Analytics /tech Python, PowerBI /ex Good project showcase
------------------------------------------------------------------------------------------------------------------------
    New internship added
    Company: IBM, Role: Data Analytics, Tech: Python, PowerBI
    Now you have 4 internships in the list
------------------------------------------------------------------------------------------------------------------------

Adding a hardware category of internship: add hardware

Allows users to add a new hardware internship to their list of internship applications.

Basic Format: add hardware /c COMPANY_NAME /r ROLE /hardtech HARDWARE_TECHNOLOGIES

Extended Format (with optional parameters): add hardware /c COMPANY_NAME /r ROLE /ex EXPECTATIONS /eli ELIGIBILITY /hardtech HARDWARE_TECHNOLOGIES /desc DESCRIPTION /status STATUS

Examples of usage:


> add hardware /c Google /r Hardware Engineer /hardtech Arduino, Raspberry Pi
------------------------------------------------------------------------------------------------------------------------
    New internship added
    Company: Google, Role: Hardware Engineer, Tech: Arduino, Raspberry Pi
    Now you have 5 internships in the list
------------------------------------------------------------------------------------------------------------------------

> add hardware /c AMD /r FPGA analyser /hardtech FPGA, Verilog /desc Low latency high throughput machine learning inference
------------------------------------------------------------------------------------------------------------------------
    New internship added
    Company: AMD, Role: FPGA analyser, Tech: FPGA, Verilog
    Now you have 6 internships in the list
------------------------------------------------------------------------------------------------------------------------

Editing an internship: edit

Allows users to add (job description, eligibility, and expectations) or modify (company name, role,tech and status) details for a specific internship application.

Basic Format: edit /index INDEX_NUMBER /c COMPANY_NAME /r ROLE

Extended Format (with optional parameters): edit /index INDEX_NUMBER /c COMPANY_NAME /r ROLE /ex EXPECTATIONS /eli ELIGIBILITY /dept DEPARTMENT /hardtech HARDWARE_TECHNOLOGIES /desc DESCRIPTION /tech TECHNOLOGIES /status STATUS

This format shows you all the possible flags or parameters you can set for an internship, however they are optional (as-needed basis) - i.e. you do not need to utilize all flags when using this command, only those relevant to you.

Example of usage:


> edit /index 1 /c IBM /tech C, C++ /eli Y3 student /ex Fast Learner
------------------------------------------------------------------------------------------------------------------------
    Internships saved successfully
    You can view the list of internships at data/internships.txt
    Internship edited successfully.
    [Company: IBM, Role: Software Engineer, Eligibility: Y3 student, Expectations: Fast Learner, Tech Stack: C, C++]
------------------------------------------------------------------------------------------------------------------------

> edit /index 2 /desc Some extended description for our users
------------------------------------------------------------------------------------------------------------------------
    Internships saved successfully
    You can view the list of internships at data/internships.txt
    Internship edited successfully.
    [Company: IBM, Role: Data Analytics, Description: Some extended description for our users, Expectations: Good project showcase, Tech Stack: Python, PowerBI]
------------------------------------------------------------------------------------------------------------------------

Deleting an internship: delete

Allows users to delete an internship from the list of internship applications.

Format: delete /index INDEX_OF_INTERNSHIP

Example of usage:


> delete /index 1
------------------------------------------------------------------------------------------------------------------------
    Internships saved successfully
    You can view the list of internships at data/internships.txt
    Successfully deleted internship: Company: Mavericks, Role: Consultant, Dept: Technical Consultation
------------------------------------------------------------------------------------------------------------------------

Finding internships: find

Allows users to find internships based on the internship type, company name or role.

Format: find [TYPE] [/c COMPANY_NAME] [/r ROLE]

Example of usage:


> find software /c Google
------------------------------------------------------------------------------------------------------------------------
    Here are the matching internships in your list:
    1. Company: Google, Role: Software Engineer, Eligibility: Y3 student, Expectations: Fast Learner, Tech Stack: C, C++
------------------------------------------------------------------------------------------------------------------------

Viewing extended description of a specific internship: desc

Allows users to view the description of an internship from the list of internship applications.

Format: desc /index INDEX_OF_INTERNSHIP

Example of usage:


> desc /index 1
------------------------------------------------------------------------------------------------------------------------
    Here is your internship description!
    Company: google
    Role: intern
    Interview details:
    ┌───────┬────────────┬──────────┬──────────┬──────────┬─────────────────────────┬──────────────────────────────┐
    │Round  │Interview   │Start Time│End Time  │Interview │Interviewer Email        │Notes                         │
    │No.    │Date        │          │          │Type      │                         │                              │
    ├───────┼────────────┼──────────┼──────────┼──────────┼─────────────────────────┼──────────────────────────────┤
    │1      │2025-01-01  │10:00     │14:00     │technical │N/A                      │N/A                           │
    │       │            │          │          │round     │                         │                              │
    ├───────┼────────────┼──────────┼──────────┼──────────┼─────────────────────────┼──────────────────────────────┤
    │2      │2025-01-01  │15:00     │16:00     │f2f round │N/A                      │N/A                           │
    └───────┴────────────┴──────────┴──────────┴──────────┴─────────────────────────┴──────────────────────────────┘
    Tech Stack: c++
------------------------------------------------------------------------------------------------------------------------

Adding interviews for internships: interview for

Allows users to add multiple rounds of interviews for each internship added.

Basic Format: interview for /index INDEX_OF_INTERNSHIP /date DATE /start START_TIME /end END_TIME /type TYPE

Extended Format (With optional parameters): interview for /index INDEX_OF_INTERNSHIP /date DATE /start START_TIME /end END_TIME /type TYPE /email INTERVIEWER_EMAIL /notes NOTES

Example of usage:


> interview for /index 1 /date 2025-01-01 /start 10:00 /end 14:00 /type technical round
------------------------------------------------------------------------------------------------------------------------
    Internships saved successfully
    You can view the list of internships at data/internships.txt
    New interview added
    Interview Date: 2025-01-01, Start Time: 10:00, End Time: 14:00, Round Name: technical round
------------------------------------------------------------------------------------------------------------------------

Sorting all interviews added by date: sort interviews

Allows users to sort all rounds of interviews added across multiple internships by date.

Format: sort interviews

Example of usage:


> sort interviews
------------------------------------------------------------------------------------------------------------------------
   Here are your interviews sorted by date and time.
┌────────────┬────────────┬────────────┬──────────┬──────────┬──────────┬────────────────────┬───────────────────────────────────┐
│Company Name│Role        │Interview   │Start Time│End Time  │Interview │Interviewer Email   │Notes                              │
│            │            │Date        │          │          │Type      │                    │                                   │
├────────────┼────────────┼────────────┼──────────┼──────────┼──────────┼────────────────────┼───────────────────────────────────┤
│Google      │Software    │2021-10-10  │10:00     │11:00     │Coding    │N/A                 │N/A                                │
│            │Engineer    │            │          │          │          │                    │                                   │
├────────────┼────────────┼────────────┼──────────┼──────────┼──────────┼────────────────────┼───────────────────────────────────┤
│facebook    │intern      │2021-10-11  │10:00     │11:00     │Coding    │N/A                 │N/A                                │
└────────────┴────────────┴────────────┴──────────┴──────────┴──────────┴────────────────────┴───────────────────────────────────┘
------------------------------------------------------------------------------------------------------------------------

Note: sort interviews command serves the dual function to list all interviews as well. To view the list of all interviews, users can simply use the sort interviews command.


User Commands

Updating user profile information: my

Allows users to update user profile information with details such as name, or preferrred industries, roles or companies. Basic Format: my /c COMPANIES_YOU_PREFER /r ROLES_YOU_PREFER /ygoals YEARLY_GOALS /mgoals MONTHLY_GOALS /pay MIN_PAY-MAX_PAY /ind INDUSTRIES_YOU_PREFER /time TIME_RANGE /name YOUR_NAME

NOTE: When entering pay range /pay MIN_PAY - MAX_PAY, ensure minimum and maximum are both numerical values with minimum less than maximum, and separate the two with a hyphen “-“. Otherwise, you will be prompted again to re-enter these details.

Do note there is no date-time format mandatory for your preferred /time TIME_RANGE, so that you may enter any string such as “Semester 1” or even “Next year” as per your convenience.

This format shows you all the possible flags or parameters you can set for an internship, however they are ALL optional (as-needed basis) - i.e. you do not need to utilize all flags when using this command, only those relevant to you.

Example of usage:


> my /name John Doe /ind Software /c Google /r Developer /mgoals 100 applications /ygoals 2 internships
------------------------------------------------------------------------------------------------------------------------
    Successfully updated your user profile as shown below:
 
    Name: John Doe
    Preferred Industries: [Software]
    Preferred Companies: [Google]
    Preferred Roles: [Developer]
    Monthly Goals: 100 applications
    Yearly Goals: 2 internships
 
------------------------------------------------------------------------------------------------------------------------

Viewing user profile information: view user

Allows users to view user profile information with details such as name, or preferrred industries, roles or companies. Basic Format: view user

Example of usage:


> view user
------------------------------------------------------------------------------------------------------------------------
    Your personalized profile information as shown below:
 
┌───────────────────────────────────────┬──────────────────────────────────────┐
│Name                                   │John Doe                              │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Preferred Industries                   │Software                              │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Preferred Companies                    │Google                                │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Preferred Roles                        │Developer                             │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Target Stipend Range                   │N/A                                   │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Internship Date Range                  │N/A                                   │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Monthly Goals                          │100 applications                      │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Yearly Goals                           │2 internships                         │
└───────────────────────────────────────┴──────────────────────────────────────┘
------------------------------------------------------------------------------------------------------------------------

Adding a general category of project: project general

Allows users to add a new general project to their list of projects stored in their user profile. This is useful for CV formatted project lists, and job applications.

Basic Format: project general /n PROJECT_NAME /r ROLE /dept DEPARTMENT /obj OBJECTIVES /desc DESCRIPTION /dur DURATION

Examples of usage:


>  project general /n Team Project for CS2113 /r Unit Tester /dept Software Engineering /obj To get an A+ /desc Worked at identifying feature flaws in app /dur May-August
------------------------------------------------------------------------------------------------------------------------
    Project successfully added to user profile. Below are the details for the same: 
 
    Project: Team Project for CS2113, Role: Unit Tester, Dept: Software Engineering
    Objectives: To get an A+, Duration: May-August, Description: Worked at identifying feature flaws in app
    Now you have 3 projects in your user profile.
------------------------------------------------------------------------------------------------------------------------

Adding a software category of project: project software

Allows users to add a new software project to their list of projects stored in their user profile. This

Basic Format: project software /n PROJECT_NAME /r ROLE /dept DEPARTMENT /pro PROGRAMMING_LANGUAGES /obj OBJECTIVES /desc DESCRIPTION /dur DURATION

Examples of usage:


>  project software /n Team Project for CS2113 /r Unit Tester /pro Java, C++ /obj To get an A+ /desc Worked at identifying feature flaws in app /dur May-August
------------------------------------------------------------------------------------------------------------------------
    Project successfully added to user profile. Below are the details for the same: 
 
    Project: Team Project for CS2113, Role: Unit Tester, Programming Languages: Java, C++
    Objectives: To get an A+, Duration: May-August, Description: Worked at identifying feature flaws in app
    Now you have 1 projects in your user profile.
------------------------------------------------------------------------------------------------------------------------

Adding a hardware category of project: project hardware

Allows users to add a new hardware project to their list of projects stored in their user profile. This

Basic Format: project hardware /n PROJECT_NAME /r ROLE /dept DEPARTMENT /hcomp HARDWARE_COMPONENTS /obj OBJECTIVES /desc DESCRIPTION /dur DURATION

Examples of usage:


> project hardware /n Team Project for EE2026 /r Ui Developer /hcomp Basys Board/obj To get an A+ /desc Worked at creating pixel art for the UI /dur May-August
------------------------------------------------------------------------------------------------------------------------
    Project successfully added to user profile. Below are the details for the same: 
 
    Project: Team Project for EE2026, Role: Ui Developer, Hardware Components: Basys Board
    Objectives: To get an A+, Duration: May-August, Description: Worked at creating pixel art for the UI
    Now you have 2 projects in your user profile.
------------------------------------------------------------------------------------------------------------------------

Viewing a general category of project: view general

Allows users to view list of saved general projects. Basic Format: view general

Examples of usage:


> view general
------------------------------------------------------------------------------------------------------------------------
    Your personalized projects information as shown below:
 
┌───────────────────────────────────────┬──────────────────────────────────────┐
│Project:                               │Team Project for CS2113               │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Role:                                  │Unit Tester                           │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Objectives:                            │To get an A+                          │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Description:                           │Worked at identifying feature flaws in│
│                                       │app                                   │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Duration:                              │May-August                            │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Department:                            │Software Engineering                  │
└───────────────────────────────────────┴──────────────────────────────────────┘
------------------------------------------------------------------------------------------------------------------------

Viewing a software category of project: view software

Allows users to view list of saved software projects. Basic Format: view software

Examples of usage:


> view software
------------------------------------------------------------------------------------------------------------------------
    Your personalized projects information as shown below:
 
┌───────────────────────────────────────┬──────────────────────────────────────┐
│Project:                               │Team Project for CS2113               │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Role:                                  │Unit Tester                           │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Objectives:                            │To get an A+                          │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Description:                           │Worked at identifying feature flaws in│
│                                       │app                                   │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Duration:                              │May-August                            │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Programming Languages:                 │Java, C++                             │
└───────────────────────────────────────┴──────────────────────────────────────┘
------------------------------------------------------------------------------------------------------------------------

Viewing a hardware category of project: view hardware

Allows users to view list of saved hardware projects. Basic Format: view hardware

Examples of usage:


> view hardware
------------------------------------------------------------------------------------------------------------------------
    Your personalized projects information as shown below:
 
┌───────────────────────────────────────┬──────────────────────────────────────┐
│Project:                               │Team Project for EE2026               │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Role:                                  │Ui Developer                          │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Objectives:                            │To get an A+                          │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Description:                           │Worked at creating pixel art  for  the│
│                                       │UI                                    │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Duration:                              │May-August                            │
├───────────────────────────────────────┼──────────────────────────────────────┤
│Hardware Components:                   │Basys Board                           │
└───────────────────────────────────────┴──────────────────────────────────────┘
------------------------------------------------------------------------------------------------------------------------

Exit bye

Exits the program. A user can exit the program at any time by typing bye in the command line. If the first word of user input is bye, the program will terminate automatically without checking the rest of the inputs.


Saving the data

InternSprint’s internship, project, interview and user profile data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.


Editing the data file

InternSprint’s internship data is saved automatically in .json format at [JAR file location]/data/internships.txt, while the project data and interview data are stored in .json format at [JAR file location]/data/projects.txt and [JAR file location]/data/interviews.txt respectively. The user profile data is stored in a structured plain text format at [JAR file location]/data/user.txt.

Advanced users are welcome to update data directly by editing the data files.

CAUTION!: The data file follows a strict .json format. Any modification that violates this format, such as altering brackets, commas, colons, or quotes, can corrupt the data and prevent the application from running correctly. If this happens, you will see an error message and must fix the file or delete it to restart the application.

NOTE:


Date and Time Formats

InternSprint uses Natty library to parse dates and times. Acceptable formats include but is not limited to the following:

Relative dates are also accepted:

Provide only valid dates in the command line. Natty cannot read years after 10000, which is not valid in this era.


FAQ

Q: How do I transfer my data to another computer?

A: Simply copy the file [JAR file location]/data/internships.txt and transfer it to the secondary device in the same subdirectory of [JAR file location]/data. This will ensure your data is transferred, but keep in mind there should be only one internships.txt in the location.


Command Summary

Command Format
Internship Commands  
add general add general /c COMPANY_NAME /r ROLE /dept DEPARTMENT
add software add software /c COMPANY_NAME /r ROLE /tech TECHNOLOGIES
add hardware add hardware /c COMPANY_NAME /r ROLE /hardtech HARDWARE_TECHNOLOGIES
edit edit /index INDEX_OF_INTERNSHIP
delete delete /index INDEX_OF_INTERNSHIP
find find [TYPE] [/c COMPANY_NAME] [\r ROLE]
desc desc /index INDEX_OF_INTERNSHIP
interview for interview for /index INDEX_OF_INTERNSHIP /date DATE /start START_TIME /end END_TIME /type TYPE [/email INTERVIEWER_EMAIL] [/notes NOTES]
sort interviews sort interviews
User Commands  
my my /c COMPANIES_YOU_PREFER /r ROLES_YOU_PREFER /ygoals YEARLY_GOALS /mgoals MONTHLY_GOALS /pay PAY_RANGE /ind INDUSTRIES_YOU_PREFER /time TIME_RANGE /name YOUR_NAME
view user view user
project general project general /n PROJECT_NAME /r ROLE /dept DEPARTMENT /obj OBJECTIVES /desc DESCRIPTION /dur DURATION
project software project software /n PROJECT_NAME /r ROLE /dept DEPARTMENT /pro PROGRAMMING_LANGUAGES /obj OBJECTIVES /desc DESCRIPTION /dur DURATION
project hardware project hardware /n PROJECT_NAME /r ROLE /dept DEPARTMENT /hcomp HARDWARE_COMPONENTS /obj OBJECTIVES /desc DESCRIPTION /dur DURATION
view general view general
view software view software
view hardware view hardware
bye bye