A Google Apps Script pipeline that monitors Gmail job alert digests, filters and scores every listing, routes them into a two-tab Google Sheet by priority, and generates tailored resumes and cover letters through the Claude API — entirely hands-off until you decide to apply.
Parses LinkedIn, Indeed, and Glassdoor job alert digests directly from Gmail using a label-based trigger.
Company blocklist, repost detection, automation title flagging, and location / remote eligibility checks.
Scores each listing P1–P15 by recency and remote eligibility, then routes to the correct sheet tab automatically.
Generates a tailored resume and cover letter for each role via Claude Sonnet, using your base resume as source material.
Alternating daily row text color so you can see posting age at a glance in portrait mode without horizontal scrolling.
Paste any Greenhouse, LinkedIn, or job board URL directly into the sheet to process a listing on demand.
| Priority | Criteria | Tab |
|---|---|---|
| P1 | Remote USA · posted under 2 hours ago | Job Tracker |
| P2 | Remote USA · posted under 24 hours ago | Job Tracker |
| P3 | Remote USA · any age | Other |
| P5 | Remote USA · state restriction flag | Other |
| P10 | On-site within 50 miles | Other |
| P15 | On-site · distance unresolved | Other |
| — | India-origin remote · on-site over 50 miles | Ignored |
// Priority routing const config = { SHEET_NAME: 'Job Tracker', // P1 + P2 SHEET_NAME_OTHER: 'Other', // P3 and below AUTO_GENERATE: false, // manual-only mode // Layer-0 blocklist (case-insensitive, partial match) BLOCKED_COMPANIES: ['ExampleCorp'], // API keys — store in Script Properties, not here CLAUDE_API_KEY: getScriptProperty('CLAUDE_API_KEY'), GEMINI_API_KEY: getScriptProperty('GEMINI_API_KEY'), // Your Google Drive folder and source doc IDs DRIVE_FOLDER_ID: 'your-folder-id', BASE_RESUME_ID: 'your-doc-id', };