Before You Start
python3 --version
Download JobTracker
~1 minClone the repository to a convenient location on your machine. The ~/tools/ directory works well, but anywhere is fine.
# Clone the repository git clone https://github.com/junjizhi/job-application-tracking-system.git # Move into the project directory cd job-application-tracking-system
No Git? You can also download the ZIP from GitHub and extract it anywhere on your machine.
Start the Local Server
~2 minThe server is a lightweight Python app that runs entirely on your machine at 127.0.0.1:8235. It stores all your data in a SQLite database at ~/data/job-applications.db.
# Navigate to the server directory cd server # Create a virtual environment python3 -m venv venv # Activate the virtual environment source venv/bin/activate # Install dependencies pip install -r requirements.txt # Start the server python app.py
# Navigate to the server directory cd server # Create a virtual environment python -m venv venv # Activate the virtual environment venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Start the server python app.py
INFO: Uvicorn running on http://127.0.0.1:8235 (Press CTRL+C to quit)
The server is running. Keep this terminal window open while you use JobTracker.
Keep the terminal open. The server needs to keep running while you use the Chrome extension. You can minimize the window — just don't close it. See "Run automatically on startup" below to avoid this step in the future.
Load the Chrome Extension
~1 minThe extension adds a badge to your browser that shows whether you've already tracked a job. Here's how to install it in developer mode:
-
1
Open Chrome Extensions
Go to
chrome://extensionsin your Chrome address bar, or click the three-dot menu → More Tools → Extensions. -
2
Enable Developer Mode
Find the "Developer mode" toggle in the top-right corner of the Extensions page and turn it on.
-
3
Click "Load unpacked"
A new button will appear. Click "Load unpacked" — it opens a file picker dialog.
-
4
Select the extension folder
Navigate to where you cloned the repo and select the
extension/folder (not the whole repo — just theextensionsubfolder). -
5
Pin the extension
Click the puzzle icon in Chrome's toolbar and pin JobTracker so the badge is always visible.
You see the JobTracker icon in your Chrome toolbar. When you visit a job listing, the badge will show + (new job), ✓ (already tracked), or ! (server offline).
Track Your First Application
~1 minYou're all set. Here's how to add your first job application:
-
1
Browse to a job posting
Visit any job listing on LinkedIn, Greenhouse, Lever, Workday, Indeed, or any company careers page.
-
2
Click the JobTracker badge
Click the extension icon in your toolbar. It will pre-fill the company name, job title, and URL from the page.
-
3
Confirm and save
Review the pre-filled details, add any notes, and click Save. The application is now in your database.
-
4
Open the dashboard
Click the extension icon again and choose "Open Dashboard", or visit
http://127.0.0.1:8235in your browser to see all your applications.
From now on, when you visit any job page you've already tracked, the badge turns from + to ✓ so you never apply twice by accident.
Optional: Auto-Start on Login
~2 minTired of manually starting the server every time? Set it up to start automatically when you log in.
# Create the LaunchAgent plist (replace /YOUR/PATH/ with actual path) cat > ~/Library/LaunchAgents/co.jobstash.server.plist << 'EOF' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>co.jobstash.server</string> <key>ProgramArguments</key> <array> <string>/YOUR/PATH/server/venv/bin/python</string> <string>/YOUR/PATH/server/app.py</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> </dict> </plist> EOF # Load it launchctl load ~/Library/LaunchAgents/co.jobstash.server.plist
Replace /YOUR/PATH/ with the actual absolute path to the job-application-tracking-system folder (e.g., /Users/yourname/tools/job-application-tracking-system).
# Create a systemd user service mkdir -p ~/.config/systemd/user cat > ~/.config/systemd/user/jobtracker.service << 'EOF' [Unit] Description=JobTracker Local Server After=network.target [Service] Type=simple WorkingDirectory=/YOUR/PATH/server ExecStart=/YOUR/PATH/server/venv/bin/python app.py Restart=on-failure [Install] WantedBy=default.target EOF # Enable and start systemctl --user enable jobtracker systemctl --user start jobtracker
Create a batch file and place it in the Windows Startup folder:
:: Create jobtracker.bat (save this file) @echo off cd C:\YOUR\PATH\server call venv\Scripts\activate start /min python app.py :: Then press Win+R and type: shell:startup :: Drag jobtracker.bat into the Startup folder that opens
Optional: Import Existing Applications
~2 minAlready tracking applications in Excel or Google Sheets? Import them so you have a complete history from day one.
# Make sure your virtual environment is active cd server source venv/bin/activate # macOS/Linux # Run the import script with your CSV file python import_csv.py ~/Desktop/my-applications.csv
Supported columns: The importer handles common column names from Excel and Google Sheets exports — company name, job title, status/stage, date applied, URL, and notes. It maps these automatically and detects duplicates on import.
Installation Checklist
-
Server is running at
http://127.0.0.1:8235 - Chrome extension is loaded and icon is visible in toolbar
- Extension badge shows + when visiting a new job page
-
Dashboard is accessible at
http://127.0.0.1:8235 - (Optional) Server starts automatically on login
Troubleshooting
python app.py). If the terminal window was closed, restart the server and the badge will update automatically.
source venv/bin/activate on macOS/Linux, or venv\Scripts\activate on Windows). Never use sudo pip install — the virtual environment handles isolation correctly.
server/app.py to change the port number (look for port=8235 near the bottom of the file). If you change the port, update the extension's manifest.json to match.
brew install python.
/careers/ or /jobs/. For other job boards, you can manually fill in the company and title after clicking the extension icon. See our supported job boards guide for full details.
chrome://extensions and toggle "Developer mode" on in the top-right corner of the page.
python3 --version and pip list.