A fully automated system to parse job application emails from Gmail and update your Notion job tracker — using GPT or Gemini and Go.
Runs daily via GitHub Actions, or manually from your terminal.
-
Connects to your Gmail inbox via IMAP
-
Reads recent job-related emails
-
Uses OpenAI (GPT-4o) or Gemini Pro to extract:
- Company
- Position
- Stage (Applied, Interview, Rejected)
- Referral status
- Job URL
-
Pushes structured results to your Notion database
-
Logs unparseable emails privately for manual review
You can either fork + run via GitHub Actions, or run locally via CLI.
Go to your repo → Settings → Secrets → Actions → Add the following:
| Name | Value |
|---|---|
GMAIL_USER |
Your Gmail address |
GMAIL_APP_PASSWORD |
Gmail App Password (not your password) |
NOTION_TOKEN |
Integration token from Notion |
NOTION_DB_ID |
Your Notion database ID |
OPENAI_API_KEY |
Your OpenAI API key (sk-...) |
GEMINI_API_KEY |
Your Gemini API Key (optional) |
USE_GEMINI |
true to use Gemini, false for GPT |
🧠 Gemini is free to use — no billing required. Just add
GEMINI_API_KEYand setUSE_GEMINI=trueto switch.
✅ Your Gmail must have IMAP enabled, and you must use an App Password.
Or trigger it manually from the Actions tab.
By default, forks are public. This means:
- Your GitHub Actions logs can expose sensitive metadata
- If not handled properly, files like
unparsed_emails.csvcould leak job info
To keep your data safe:
🔒 Go to your repo → Settings → Change visibility → Make private
This ensures your job applications, emails, and logs stay confidential.
git clone https://github.com/your-username/auto-job-tracker.git
cd auto-job-tracker[email protected]
GMAIL_APP_PASSWORD=your_app_password
NOTION_TOKEN=your_notion_secret
NOTION_DB_ID=your_notion_database_id
OPENAI_API_KEY=your_openai_key
GEMINI_API_KEY=your_gemini_key
USE_GEMINI=true
go run main.goUse this in your .env file or GitHub Secrets:
USE_GEMINI=true # to use Gemini
USE_GEMINI=false # to use GPT (default)Your Notion database must have these columns:
| Column Name | Type |
|---|---|
Company |
Title |
Position |
Text |
Stage |
Status |
Referral? |
Select |
JobURL |
URL |
Apply date |
Date |
Response date |
Date |
- Go 🐹
- OpenAI GPT-4o
- Notion API
- IMAP (via Gmail)
- GitHub Actions (for scheduling)
Tired of tracking job apps manually? This automates your grind so you can focus on prepping, not updating spreadsheets.
Any job-related email that fails parsing or cannot be added to Notion is automatically saved in a CSV file (unparsed_emails.csv) for review.
Yes — prompt.txt controls what’s sent to GPT.
Yes. Nothing is logged or stored beyond what's pushed to Notion.
- Fork it
- Open a PR
- Drop issues if something breaks