| Crates.io | fetters |
| lib.rs | fetters |
| version | 3.0.0 |
| created_at | 2025-08-14 01:35:58.20987+00 |
| updated_at | 2025-08-14 01:35:58.20987+00 |
| description | A CLI tool for tracking your job applications |
| homepage | |
| repository | https://github.com/JosephLai241/fetters |
| max_upload_size | |
| id | 1794317 |
| size | 134,847 |
_
.::::::::::. -(_)====u .::::::::::.
.::::''''''::::. .::::''''''::::.
.:::' `::::.... ....::::' `:::.
.::' `:::::::| |:::::::' `::.
.::| |::::::|_ ___ __|::::::| |::.
`--' |::::::|_()__()_|::::::| `--'
::: |::-o::| |::o-::| :::
`::. .|::::::| |::::::|. .::'
`:::. .::\-----' `-----/::. .:::'
`::::......::::' `::::......::::'
`::::::::::' `::::::::::'
fetters
[!IMPORTANT] Requires SQLite v3.35.0+ installed on your system.
fetters is a command-line tool that helps you track your job applications all in one place. The process of adding, updating, searching, or deleting job applications is very simple and fast.
You can create different "job sprints" (phases when you are looking for a new job) with this program and track the number of applications you sent during each period, providing a singular tool and space for you to track them.
This program stores job applications, job titles, and sprints into a local SQLite database. This SQLite database is automatically created for you on the initial run and is stored in the project directory on your machine (see the documentation for directories::ProjectDirs::data_dir() for the exact path on your platform).
This program enables you to:
cargo installYou can run cargo install to install this on your machine:
cargo install fetters
You can compile this program from source with the following commands:
$ git clone https://www.github.com/JosephLai241/fetters
$ cd fetters
$ cargo build --release
To check if it built correctly:
$ ./target/release/fetters -V
You can then move the fetters binary to another directory so you do not have to type that path to run it. Check if the binary was moved correctly:
$ mv target/release/fetters /some/directory/
$ cd /some/directory
$ ./fetters -V
If you do not want to compile fetters, you can also download a binary attached to a release in the Releases section.
Each record stores the following fields:
YYYY-MM-DD HH:MM:SS)The job status is color-coded in the table. Here is a table mapping each status to its color:
| Status | Color |
|---|---|
| GHOSTED | Gray |
| HIRED | Green |
| IN PROGRESS | Yellow |
| NOT HIRING ANYMORE | Dark Gray |
| OFFER RECEIVED | Magenta |
| PENDING | Blue |
| REJECTED | Red |
A job sprint is a period of time when you are actively submitting job applications. fetters allows you to organize your job applications into sprints so that it is easy to tell during which time period an application was submitted.
See the Managing Job Sprints section for more details.
You can configure different job sprints to group job applications based on periods of time in which you are actively submitting job applications.
A new job sprint will be created for you on the initial run. You do not have to worry about managing sprints if you don't plan on grouping your job applications by sprint.
Job sprints are labeled with the date on which they are created (YYYY-MM-DD) by default but can be overridden with a custom name when creating a new sprint.
The default name for a sprint is the current date (YYYY-MM-DD). You can optionally override the name of the sprint by providing the -n/--name flag.
Run the following command to create a new sprint:
fetters sprint new (-n <NAME>)
An error will be raised if you try to create a new sprint but there is already another sprint with an identical name.
Run the following command to show the current job sprint:
fetters sprint current
This will display a table containing the sprint name, start date, end date (if applicable), and the total number of applications in the sprint.
Run the following command to show all job sprints:
fetters sprint show-all
Like the current subcommand, this will display a table containing all sprints, start dates, end dates (if applicable), and the total number of applications tracked in each sprint.
Run the following command to switch to or set a different sprint:
fetters sprint set
A select menu will appear and the selected sprint will be used to track applications until you decide to switch to a different sprint or create a new one.
[!NOTE]
If you are utilizing different sprints, the job application will be added to your current sprint.
Run the following command to track a new job application:
fetters add <COMPANY_NAME>
[!TIP] Use quotes around the company name if it is more than one word or contains special terminal characters. For example,
&is used to run a command asynchronously (running in the background) in a Bash terminal. Runningfetters add H&Mwill cause problems for you if you do not wrapH&Min quotes.
A series of inquire prompts will show to set the job title, application status, link, and any notes.
[!NOTE]
If you are utilizing different sprints, these subcommands will search for jobs within your current sprint that match your query.
Run the following commands to update or delete a tracked job application:
fetters update
fetters delete
These commands support querying all stored attributes. Here is an example using all of the query options:
fetters update [OPTIONS]
fetters delete [OPTIONS]
Options:
-c, --company <COMPANY_NAME> Filter results by company name.
-l, --link <LINK> Filter results by links.
-n, --notes <NOTES> Filter results by notes.
--sprint <SPRINT> Filter results by sprint name.
-s, --status <STATUS> Filter results by application status.
-t, --title <TITLE> Filter results by job title.
[!TIP]
All query options support partial text searching via the SQL
LIKEoperator.
The delete subcommand is very fast. A table of job applications (matching the query parameters or all applications if no query is provided) will be displayed, followed by an inquire prompt to select the job to delete.
The update subcommand will display a MultiSelect inquire prompt to select all the fields you want to update. inquire prompts will only show depending on the fields you have selected.
[!NOTE]
If you are utilizing different sprints, this subcommand will search for jobs within your current sprint that match your query.
Run the following command to list or search job applications:
fetters list
Like the update and delete subcommands, this also supports the same query options:
fetters list [OPTIONS]
Options:
-c, --company <COMPANY_NAME> Filter results by company name.
-l, --link <LINK> Filter results by links.
-n, --notes <NOTES> Filter results by notes.
--sprint <SPRINT> Filter results by sprint name.
-s, --status <STATUS> Filter results by application status.
-t, --title <TITLE> Filter results by job title.
[!TIP]
All query options support partial text searching via the SQL
LIKEoperator.
Jobs matching your query parameters will be displayed in a table.
[!NOTE]
If you are utilizing different sprints, this subcommand will display insights for your current sprint.
Run the following command to show job application insights:
fetters insights
[!NOTE]
If you are utilizing different sprints, this subcommand will search for jobs within your current sprint that match your query.
Each record provides an optional link field. This field can be a URL to the job application (ie. https://linkedin.com/jobs/view/...) or a path to a local file (ie. a PDF or Word document).
Run the following command to open the URL or file:
fetters open
Like the update, delete, and list subcommands, this also supports the same query options:
fetters open [OPTIONS]
Options:
-c, --company <COMPANY_NAME> Filter results by company name.
-l, --link <LINK> Filter results by links.
-n, --notes <NOTES> Filter results by notes.
--sprint <SPRINT> Filter results by sprint name.
-s, --status <STATUS> Filter results by application status.
-t, --title <TITLE> Filter results by job title.
Jobs matching your query parameters will be displayed in a table. Once a job is selected, the link will be opened in your default browser or document viewer based on the file type.
I wish you the best of luck with finding a job. We all know how rough it is out there. I hope this little CLI tool helps you track your applications during the struggle and that you won't have to use this for too long until you find your next opportunity 🤞🏻.