playbook.io is a platform that helps sports agents efficiently manage athletes, organizations, and contracts. It combines the speed of a Command Line Interface with the ease of a Graphical Interface, enabling agents to stay organized, build stronger relationships, and focus on closing deals.
This guide is designed for sports agents and talent managers operating in Singapore who:
⚠️ Important: playbook.io follows Singapore conventions: phone numbers are 8-digit, contract amounts are in SGD, and dates use DDMMYYYY format.
Prior Knowledge:
Technical Requirements:
Check Java Version
Ensure you have Java 17 or above installed on your computer.
java -version
Mac users: Follow the setup guide here to install the correct JDK version.
Windows users: Follow the setup guide here to install the correct JDK version.
Linux users: Follow the setup guide here to install the correct JDK version.
Download playbook.io
Download the latest .jar file from the playbook.io Releases page.
Set Up Home Folder
Copy the .jar file to the folder you want to use as the home folder for playbook.io. This is where your data files will be stored.
Launch the Application
Open a terminal, navigate (cd) to that folder, and run:
java -jar playbook.jar
For example, if your .jar file is in the Downloads folder:
cd Downloads
java -jar playbook.jar
First Look
The playbook.io interface should appear in a few seconds.
The playbook.io interface consists of five main areas:
Navigation Tips:
help commandLet's try some basic operations to get you started:
Add an Athlete
add-a n/LeBron James s/Basketball a/40 p/98765432 e/james@example.com
Add an Organization
add-o o/Nike p/98765432 e/john.doe@nike.com
Search for Athletes
find -an LeBron
Clear the Search
refresh
💡 Tip: All commands in playbook.io are designed to be fast to type, simple, and case-insensitive. Use short flags like -an (athlete name) and -on (organization name) to quickly find what you need.
Athletes are the heart of your business. playbook.io makes it easy to track their information and see their contract relationships at a glance.
Command: add-a n/NAME s/SPORT a/AGE p/PHONE e/EMAIL
Parameters:
n/NAME: Full name of the athlete (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)s/SPORT: Sport of the athlete (spaces allowed, case-insensitive; alphabetic characters only; maximum of 50 characters)a/AGE: Age of the athlete (positive integers only, ranging from 1 to 99)p/PHONE: Phone number of the athlete (8-digit Singapore phone number only; maximum of 50 characters)e/EMAIL: Email address of the athlete (case-insensitive; must follow standard email format)Examples:
add-a n/Lebron James s/Basketball a/40 p/99876543 e/James@example.com
add-a n/Cristiano Ronaldo s/Football a/39 p/87654321 e/cr7@example.com
add-a n/Michael Jordan s/Basketball a/61 p/95551234 e/mj@example.com
Expected Output:
New athlete added: Lebron James; Sport: Basketball; Age: 40; Phone: 99876543; Email: James@example.com
⚠️ Important:
Command: delete-a n/NAME s/SPORT
Parameters:
n/NAME: Full name of the athlete to delete (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)s/SPORT: Sport of the athlete to delete (spaces allowed, case-insensitive; alphabetic characters only; maximum of 50 characters)Examples:
delete-a n/Lebron James s/Basketball
delete-a n/Cristiano Ronaldo s/Football
delete-a n/Michael Jordan s/Basketball
Expected Output:
Deleted Athlete: Lebron James; Sport: Basketball; Age: 40; Phone: 99876543; Email: James@example.com
⚠️ Important:
Organizations include teams, sponsors, agencies, and any entity that contracts with athletes.
Command: add-o o/ORG_NAME p/PHONE e/EMAIL
Parameters:
o/ORG_NAME: Name of the organization (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)p/PHONE: Phone number of the organization (8-digit Singapore phone number only)e/EMAIL: Email address of the organization (case-insensitive; must follow standard email format; maximum of 50 characters)Examples:
add-o o/Nike p/98765432 e/partnerships@nike.com
add-o o/Manchester United p/99998888 e/contracts@manutd.com
add-o o/IMG Academy p/88889999 e/talent@img.com
Expected Output:
New organization added: Nike; Phone: 98765432; Email: partnerships@nike.com
⚠️ Important:
💡 Tip: Use descriptive names for organizations to easily distinguish between different types (teams, sponsors, agencies, etc.).
Command: delete-o o/ORG_NAME
Parameters:
o/ORG_NAME: Name of the organization to delete (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)Examples:
delete-o o/Nike
delete-o o/Manchester United
delete-o o/IMG Academy
Deleted Organization: Nike; Phone: 98765432; Email: partnerships@nike.com
⚠️ Important:
Contracts link athletes with organizations and track the business relationships that matter most.
Command: add-c n/NAME s/SPORT o/ORG sd/DDMMYYYY ed/DDMMYYYY am/AMOUNT
Parameters:
n/NAME: Athlete's full name (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)s/SPORT: Athlete's sport (spaces allowed, case-insensitive; alphabetic characters only; maximum of 50 characters)o/ORG_NAME: Organization's name (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters)sd/DDMMYYYY: Start date (must be in the DDMMYYYY format)ed/DDMMYYYY: End date (must be in the DDMMYYYY format)am/AMOUNT: Contract amount (positive integers only; supports large values up to 9,223,372,036,854,775,807; no currency symbols or commas)Examples:
add-c n/LeBron James s/Basketball o/Nike sd/01012024 ed/01012025 am/50000000
add-c n/Cristiano Ronaldo s/Football o/Manchester United sd/01072023 ed/31122025 am/50000000
add-c n/Michael Jordan s/Basketball o/IMG Academy sd/01012020 ed/31122024 am/5000000
Expected Output:
Contract created: Athlete: Lebron James; Sport: Basketball; Organization: Nike; Start: 01/01/2024; End: 01/01/2025; Amount: 50000000
⚠️ Important:
Command: delete-c n/NAME s/SPORT o/ORG sd/DDMMYYYY ed/DDMMYYYY am/AMOUNT
Parameters:
n/NAME: Athlete's full name (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)
s/SPORT: Athlete's sport (spaces allowed, case-insensitive; alphabetic characters only; maximum of 50 characters)
o/ORG_NAME: Organization's name (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters)
sd/DDMMYYYY: Start date (must be in the DDMMYYYY format)
ed/DDMMYYYY: End date (must be in the DDMMYYYY format)
am/AMOUNT: Contract amount (positive integers only; supports large values up to 9,223,372,036,854,775,807; no currency symbols or commas)
Examples:
delete-c n/LeBron James s/Basketball o/Nike sd/01012024 ed/01012025 am/50000000
delete-c n/Cristiano Ronaldo s/Football o/Manchester United sd/01072023 ed/31122025 am/50000000
delete-c n/Michael Jordan s/Basketball o/IMG Academy sd/01012020 ed/31122024 am/5000000
Expected Output:
Deleted contract: Athlete: Lebron James; Sport: Basketball; Organization: Nike; Start: 01/01/2024; End: 01/01/2025; Amount: 50000000
⚠️ Important: For athlete names, sports, and organization names, spaces do not matter, so multiple consecutive spaces are treated as a single space.
The search functionality uses fuzzy matching to help you find what you're looking for, even with typos or partial names.
Command: find -[FLAG] KEYWORD
Available Search Types:
| Flag | Searches | Example |
|---|---|---|
-an | Athlete names | find -an LeBron |
-as | Athlete sports | find -as Basketball |
-on | Organization names | find -on Nike |
-ca | Contracts by athlete name | find -ca LeBron |
-cs | Contracts by sport | find -cs Basketball |
-co | Contracts by organization | find -co Nike |
Examples:
find -an James # Find athletes with names like "James"
find -as Basketball # Find athletes with sports like "Basketball"
find -on Nike # Find organizations with names like "Nike"
find -ca LeBron # Find contracts with athletes named like "LeBron"
find -cs Basketball # Find all contracts athletes' sports named like "Basketball"
find -co Nike # Find contracts with organizations like "Nike"
Expected Output for find -an James:
Showing 1 athlete closely matching "James".
You can refresh the display anytime using Cmd+R (macOS) or Ctrl+R (Windows/Linux) to show all data again.
⚠️ Important:
After executing the find command, if you add, or delete an athlete, organization, or contract,
the list will not refresh automatically.
It will continue to display the previously filtered results until a refresh command is executed.
💡 Fuzzy Search Features:
Command: refresh
Use this command to clear any active search filters and return to viewing all data.
Keyboard Shortcut: Cmd+R (macOS) or Ctrl+R (Windows/Linux)
Expected Output:
All filters cleared. Showing all athletes, organizations, and contracts.
💡 Tip: You can refresh the display anytime using Cmd+R (macOS) or Ctrl+R (Windows/Linux).
Command: help
Opens the help window with quick reference information and links to documentation.
Keyboard Shortcut: F1
Expected Output:
Opened help window.
Command: exit
Safely closes playbook.io and saves all your data.
Expected Output:
Exiting Address Book as requested ...
💡 Tip: Your data is automatically saved after every command, so you never have to worry about losing information.
| Command | Syntax | Description |
|---|---|---|
add-a | add-a n/NAME s/SPORT a/AGE p/PHONE e/EMAIL | Add new athlete |
delete-a | delete-a n/NAME s/SPORT | Delete athlete |
add-o | add-o o/ORG_NAME p/PHONE e/EMAIL | Add new organization |
delete-o | delete-o o/ORG_NAME | Delete organization |
add-c | add-c n/NAME s/SPORT o/ORG sd/DATE ed/DATE am/AMOUNT | Add new contract |
delete-c | delete-c n/NAME s/SPORT o/ORG sd/DATE ed/DATE am/AMOUNT | Delete contract |
find | find -[an|as|on|ca|co|cs] KEYWORD | Search/filter data |
refresh | refresh | Clear all filters |
help | help | Open help window |
exit | exit | Close application |
💡 Tip: All commands and flags (like add, delete-a, or n/) are case-insensitive, so you can type ADD, Add, or add and it will work the same.
Common Parameters:
NAME: Full Name (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters, including spaces)
SPORT: Sport (spaces allowed, case-insensitive; alphabetic characters only; maximum of 50 characters)
AGE: Age (positive integers only, ranging from 1 to 99)
ORG_NAME: Organization name (spaces allowed, case-insensitive; accepts alphabetic characters, hyphens, and apostrophes; must start with a letter; maximum of 50 characters)
PHONE: Phone number (8-digit Singapore phone number only)
EMAIL: Email address (case-insensitive; must follow standard email format; maximum of 50 characters)
DATE: Date (must be in the DDMMYYYY format)
AMOUNT: Amount (positive integers only; supports large values up to 9,223,372,036,854,775,807; no currency symbols or commas)
| Shortcut | Action | Description |
|---|---|---|
| F1 | Help | Open help window |
| Cmd+R / Ctrl+R | Refresh | Clear all active filters |
| Cmd+1 / Ctrl+1 | Athletes Tab | Switch to Athletes view |
| Cmd+2 / Ctrl+2 | Organizations Tab | Switch to Organizations view |
| Cmd+3 / Ctrl+3 | Contracts Tab | Switch to Contracts view |
Daily Management:
refresh to see all your datafind -an [name] to quickly locate specific athletesfind -cs [sport]Contract Negotiation Season:
find -ca [athlete] to see all contracts for an athletefind -co [organization] to see organization's other dealsData Organization:
Problem: "Error: Athlete not found" when adding contracts
Solution: Use find -an [name] first to verify the exact name spelling
Problem: Too many search results Solution: Use more specific keywords or combine with tab switching
Problem: Slow performance with large datasets Solution: Use search filters regularly instead of browsing all data
Problem: App behaves unexpectedly after deleting files
Solution: Never delete individual JSON files in the data folder.
If you need to reset your data, delete the entire folder instead.
"Error: Unknown command"
-an not -name)"Error: Athlete/Organization/Contract not found"
find commands to locate the exact name"Error: This Athlete/Organization/Contract already exists in playbook.io"
"Error: Amount should be a numeric integer between 1 and 9,223,372,036,854,775,807(inclusive). Do not include currency symbols or commas.
Large datasets (1000+ entries):
Slow startup:
Why can't I use my international phone numbers?
playbook.io is designed for agents operating in Singapore and currently supports only 8-digit Singapore phone numbers. This ensures data consistency and simplifies local operations.
Can I track contracts in different currencies?
All contract amounts are in Singapore Dollars (SGD). If you need to track international contracts, we recommend converting amounts to SGD at the time of entry.
Why does the system say "duplicate athlete" when I'm adding someone with a different phone number?
Athletes are identified by their name and sport combination, not by contact details. This is because athletes often share managers or have contact details managed by agencies. If you need to add an athlete with the same name, they must be in a different sport. We intentionally avoid using more specific identifiers like NRIC numbers, as doing so would improve duplicate detection but require collecting sensitive personal data, increasing privacy risks and regulatory compliance obligations.
Can an athlete and an organization have the same phone number or email?
Yes, this is allowed and intentional. Athletes and organizations are separate entities in the system, and it's common in practice for them to share contact details. This flexibility reflects real-world scenarios where contact information overlaps between different entities you manage.
Can I edit athlete, organization, or contract information after adding them?
No, editing is not allowed for athletes, organizations, or contracts once they've been added to the system. If you need to make changes or entered incorrect information, please delete the entry and create a new one with the correct details.
This is the maximum value for a 64-bit integer (Long.MAX_VALUE) in Java, which is the largest whole number the system can handle. Realistically, this number (over 9 quintillion) far exceeds the total amount of money in the world, so it's highly unlikely you'll ever encounter this limit in practice. This constraint exists purely as a technical limitation of the programming language used.
Additional Resources:
Reporting Bugs:
Athlete: An individual sports performer managed by the agent, with contact details and sport specialization.
Contract: A business agreement between an athlete and organization, including financial terms and duration.
Fuzzy Search: A search method that finds results even with typos or partial matches, using intelligent algorithms.
Organization: Any business entity that contracts with athletes - teams, sponsors, agencies, brands, etc.
Sports Agent: A professional who represents athletes in contract negotiations and career management.
System Requirements:
Supported Platforms:
Data Storage:
Development Team:
Support:
Version Information:
Thank you for using playbook.io! We're committed to helping sports agents succeed in managing their athletes and growing their business.