Skip to content

Repository files navigation

Job Application Tracker - Chrome Extension

A Chrome extension that helps you track job applications by extracting job descriptions from web pages, uploading your resume and cover letter to Google Drive, and logging everything to a Google Sheet.

Features

  • Dynamic Sheet Discovery: Automatically finds existing JobTracker sheets or creates new ones with unique IDs
  • Session-Based Operation: No persistent storage - always discovers sheets fresh via API
  • Smart Extraction: Automatically extracts company name, job title, and description from job posting pages
  • Organized File Storage: Files are organized by company in Job Tracker/[Company Name]/ folders
  • File Upload: Upload resume and cover letter files to Google Drive with automatic organization
  • Enhanced Google Sheets: 8-column tracking with status dropdown (applied, waitlist, interview, offer, rejected)
  • Professional Formatting: Text wrapping for descriptions, clipped links, and optimized column widths
  • Trash-Aware: Automatically handles trashed sheets and creates new ones seamlessly
  • Pure Text Extraction: Filters HTML and extracts only clean text content
  • Easy Tracking: Keep track of all your job applications in one place

Setup Instructions

1. Create Google Cloud Project and Enable APIs

  1. Go to Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the following APIs:
    • Google Drive API
    • Google Sheets API
  4. Go to "Credentials" → "Create Credentials" → "OAuth 2.0 Client ID"
  5. Choose "Chrome Extension" as the application type
  6. Copy your Client ID

2. Configure the Extension

  1. Create a .env file in the project root
  2. Add your Client ID: CLIENT_ID=your-client-id.apps.googleusercontent.com
  3. Run: node update-from-env.js (this will create manifest.json from manifest.template.json with your CLIENT_ID)

Note: Make sure your .env file has the format:

CLIENT_ID=xxxxxx-xxxxx.apps.googleusercontent.com

Security Note: The manifest.json file is now generated and ignored by git to prevent committing your CLIENT_ID to version control.

3. Load the Extension in Chrome

  1. Open Chrome and go to chrome://extensions/
  2. Enable "Developer mode" (toggle in top right)
  3. Click "Load unpacked"
  4. Select the folder containing this extension
  5. The extension should now appear in your extensions list

How to Use

Every Time Setup

  1. Click the extension icon in your Chrome toolbar
  2. Click "Authenticate & Setup"
  3. Grant permissions for Google Drive and Google Sheets
  4. The extension will automatically:
    • Search for existing JobTracker sheets via Google Drive API
    • Use the first found JobTracker sheet, or create a new one named "JobTracker-{randomID}"
    • Create a "Job Tracker" folder in your Google Drive (if it doesn't exist)
    • Set up the sheet for current session use

Tracking Job Applications

  1. Navigate to a job posting page
  2. Click the extension icon in your Chrome toolbar
  3. Click "Extract from Page" to automatically fill in:
    • Company Name
    • Job Title
    • Job Description
  4. Upload your resume and/or cover letter files (optional)
  5. Click "Save to Google Sheet"

The extension will:

  • Upload your files to Google Drive in Job Tracker/[Company Name]/ folder
  • Create shareable links for your files
  • Add a new row to your JobTracker sheet with:
    • Date
    • Company Name
    • Job Title
    • Job Description (text wrapped)
    • Resume Link (text clipped)
    • Cover Letter Link (text clipped)
    • Job URL (text clipped)
    • Status (dropdown: applied, waitlist, interview, offer, rejected)

Google Sheet Format

The extension automatically creates a professionally formatted JobTracker sheet with:

Header Row (blue background, white bold text):

  • Date (100px width)
  • Company Name (150px width)
  • Job Title (200px width)
  • Job Description (300px width, text wrapped)
  • Resume Link (200px width, text clipped)
  • Cover Letter Link (200px width, text clipped)
  • Job URL (250px width, text clipped)
  • Status (120px width, dropdown validation)

Status Column Features:

  • Dropdown menu with 5 options: applied, waitlist, interview, offer, rejected
  • Automatically set to "applied" for new entries
  • Users can manually update status to track application progress

Sheet Naming:

  • New sheets are named JobTracker-{randomID} (e.g., JobTracker-A7B3X9)
  • Existing sheets are discovered automatically via Google Drive API

File Organization

Files are automatically organized in Google Drive:

Job Tracker/
  ├── Company A/
  │   ├── Resume.pdf
  │   └── Cover Letter.pdf
  ├── Company B/
  │   ├── Resume.pdf
  │   └── Cover Letter.pdf
  └── ...

Each company gets its own subfolder, making it easy to find files for specific applications.

Permissions

The extension requires the following permissions:

  • activeTab: To access the current page and extract job information
  • identity: To authenticate with Google services
  • Google APIs: To upload files, manage sheets, and search for existing JobTracker sheets

Troubleshooting

Authentication Issues

  • Make sure you've set up the OAuth 2.0 Client ID correctly in Google Cloud Console
  • Ensure the Client ID in manifest.json matches your Google Cloud project

File Upload Fails

  • Check that Google Drive API is enabled in your Google Cloud project
  • Ensure you're authenticated (click "Authenticate with Google")

Sheet Writing Fails

  • Verify your Google Sheet ID is correct
  • Make sure Google Sheets API is enabled
  • Ensure the sheet is accessible (not restricted)

Job Extraction Not Working

  • Some job sites may have unique structures
  • You can always manually enter the job title and description

Development

To modify the extension:

  1. Make your changes to the files
  2. Go to chrome://extensions/
  3. Click the refresh icon on the extension card
  4. Test your changes

Notes

  • Dynamic Discovery: Extension searches for existing JobTracker sheets on every authentication (no persistent storage)
  • Trash Handling: Automatically detects trashed sheets and creates new ones seamlessly
  • Professional Formatting: Job descriptions wrap properly, links are clipped to prevent overflow
  • Status Tracking: Built-in dropdown for tracking application status through the hiring pipeline
  • Company Organization: Files are organized by company name in subfolders
  • File Sharing: Files are made publicly viewable (anyone with the link can view)
  • Smart Extraction: Uses multiple regex patterns to extract company name, job title, and description
  • Pure Text: All extracted content is filtered to remove HTML and return only clean text
  • Works Best With: Standard job posting sites (LinkedIn, Indeed, company career pages, etc.)
  • Manual Entry: You can always manually enter information if extraction doesn't work for a specific site

About

This is a quick job tracker with anyone with basic knowledge of programming nothing fancy just something quick to use

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages