Automate job application tracking by parsing Gmail emails and logging them to Google Sheets by using Gmail API, Google Sheets API, OAuth 2.0, Gemini LLM and Python.
Project has mainly two modes:
- Backfilling mode (one time) - Backfill all the previous applications data from emails into google sheet
- Sync mode (daily/weekly) - Manually run sync pipeline on daily/weekly basis or automate syncing via Task Scheduler for windows or via Cron Job for linux.
-
Clone the repository
git clone https://github.com/Devashish-Pisal/job-application-tracker.git -
Create
credentials.json,token.jsonfiles indata\folder. -
Google cloud project setup
- Create project in google cloud console.
- Setup OAuth for the project.
- Paste OAuth credentials into
credentials.jsonfile.- It should look like following:
{"installed": {"client_id":xyz.apps.googleusercontent.com, "project_id":xyz_id, "auth_uri": uri_1 , "token_uri": uri_2, "auth_provider_x509_cert_url": uri_3, "client_secret": xyz_secret, "redirect_uris":[uri_4]} } - Grant project access to gmail and google sheets.
- Paste access token into
token.jsonfile.- It should look like following:
{ "token": token_1, "refresh_token": token_2, "token_uri": uri_1, "client_id": xyz.apps.googleusercontent.com, "client_secret": xyz_secret, "scopes": [uri_2, uri_3], "universe_domain": "googleapis.com", "account": "", "expiry": "2026-05-05T12:12:44.978826Z" }
- It should look like following:
-
Create a Google sheet on Google cloud
- Name the sheet job_applications (If custom name is used then edit the SHEET_NAME variable in
src\config.pyfile) - To name the columns of sheet refer SHEET_COLUMN_NAME_INDEX_MAPPING variable from
src\config.pyfile. - Format the sheet as per your taste (e.g font styles, font size, conditional color formatting, text alignment, etc.)
- Name the sheet job_applications (If custom name is used then edit the SHEET_NAME variable in
-
Create
.envfile in project root- Paste following text into
.envfile by replacing it with your own id's and keys
SHEET_ID="your-google-sheet-id" GEMINI_API_KEY="your-gemini-api-key" GOOGLE_PROJECT_ID="your-google-cloud-project-id"
- Paste following text into
-
Open console in project root directory and install all necessary packages with following command
pip install -r requirements.txt -
Edit
src\config.pyfile- If Backfilling: If required, edit the GMAIL_BACKFILL_QUERY (e.g adjust time frame, exclude specific senders, adjust application matching keywords, etc.)
- If Syncing: If required, edit the GMAIL_SYNC_QUERY (e.g add specific labels, adjust time frame, etc.)
- If you want to use different gemini model/setting, then edit GEMINI_CONFIG
-
Run the appropriate file
- If backfilling, then run
src\backfill.py - If syncing, then run
src\sync.py
- If backfilling, then run