Get Set Up in 5 Minutes

Install the Chrome extension and local server. Your job application data stays on your machine — always.

⏱ Estimated time: 5 minutes
1 Download
2 Start Server
3 Load Extension
4 Start Tracking

Before You Start

🐍
Python 3.11+ Check: python3 --version
🔧
Git To clone the repository
🌐
Chrome or Chromium Any Chromium-based browser
💻
macOS, Windows, or Linux Works on all platforms
1

Download JobTracker

~1 min

Clone the repository to a convenient location on your machine. The ~/tools/ directory works well, but anywhere is fine.

Terminal
# 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.


2

Start the Local Server

~2 min

The 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
You should see:

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.


3

Load the Chrome Extension

~1 min

The 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://extensions in 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 the extension subfolder).

  • 5
    Pin the extension

    Click the puzzle icon in Chrome's toolbar and pin JobTracker so the badge is always visible.

Extension is working when:

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).


4

Track Your First Application

~1 min

You'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:8235 in your browser to see all your applications.

🎉
That's it — you're tracking!

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 min

Tired 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 min

Already tracking applications in Excel or Google Sheets? Import them so you have a complete history from day one.

Terminal
# 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

Extension shows "!" badge — what does that mean?
The "!" badge means the extension can't reach the local server. Check that the server is still running in your terminal (python app.py). If the terminal window was closed, restart the server and the badge will update automatically.
"pip install" fails with a permissions error
Make sure you've activated the virtual environment first (source venv/bin/activate on macOS/Linux, or venv\Scripts\activate on Windows). Never use sudo pip install — the virtual environment handles isolation correctly.
Port 8235 is already in use
Another process is using port 8235. You can either stop that process, or edit 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.
"python3: command not found"
Python is not installed or not in your PATH. Download Python 3.11+ from python.org/downloads. On macOS you can also install it via Homebrew: brew install python.
The extension doesn't auto-detect job info on a job board
Auto-detection works on Greenhouse, Lever, LinkedIn, Workday, Indeed, Ashby, BambooHR, and any URL containing /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.
"Load unpacked" button isn't showing in Chrome
The "Load unpacked" button only appears when Developer Mode is enabled. Go to chrome://extensions and toggle "Developer mode" on in the top-right corner of the page.
Still stuck? How do I get help?
Open an issue on GitHub with your OS, Python version, and the error message you're seeing. Include the output of python3 --version and pip list.

You're All Set

Here are a few things to explore once you're up and running.

📊

Open the Dashboard

Visit 127.0.0.1:8235 to see your full application pipeline.

📥

Import Existing Data

Already have a spreadsheet? Import it with one command to start with a complete history.

📝

Add Notes & Contacts

Click any application in the dashboard to add interview notes, recruiter contacts, and salary details.

📖

Read the Blog

Job search tips, comparison guides, and tracking strategies on our blog.

Questions? Open an issue on GitHub