Job Application Status Analyser
Job Application Status Analyser An automated n8n workflow that monitors your Gmail inbox, classifies job application emails using a local AI (Ollama), and logs every application — with company, role, and status — to a Google Sheet in real-time. No cloud AI APIs. No rate limits. Fully local, fully private. How It Works Gmail ➜ Preprocess ➜ Filter Spam ➜ AI Classify (Ollama) ➜ Parse ➜ Merge ➜ Judge ➜ Google Sheets Email Ingestion — Gmail Trigger polls for new emails every minute from Primary/Updates categories. A manual backfill trigger lets you process the last 150 emails on demand. Preprocessing — Extracts subject, sender, body text, date, and application links (ATS portals like Greenhouse, Lever, Workday, etc.) from raw email data. Spam Filter — Drops newsletters, promotional digests, and sale emails via regex before they hit the AI. AI Classification — Sends each email to a local Ollama instance (Llama 3.1 8B) with a structured prompt. The AI extracts: Company name Role / job title Status — applied | rejected | interview | offer Smart Fallbacks — If the AI returns unknown: Status → 100+ keyword normalization map + regex body scan (e.g., "unfortunately" → rejected, "interview scheduled" → interview) Role → Regex extraction from email body (e.g., "apply for the Software Engineer 3, AMP role") Company → Sender display name → domain extraction (with generic domain blocklist) → body scan patterns ("team at X", "your application to X") Override Rules — The word "unfortunately" in any email body forces status to rejected, regardless of AI output. AI Judging Gate — A second Ollama pass validates each result, filtering out any remaining spam or false positives. Google Sheets Upsert — Clean data is written to your Google Sheet with columns: company, role, status, Application Link, Last Update Date, Applied Date. Daily Summary — An hourly scheduled trigger reads the sheet and generates application stats (applied/interview/rejected/offer counts). Setup Steps Prerequisites Docker Desktop installed Gmail account Google Sheets API enabled (Google Cloud Console) 1. Clone & Start Services git clone <repo-url> && cd job-status-analyser docker compose up -d This spins up two containers: | Service | Port | Purpose | |---------|------|---------| | n8n | localhost:5679 | Workflow automation engine | | Ollama | localhost:11434 | Local LLM inference server | 2. Pull the AI Model docker exec -it job-status-analyser-ollama-1 ollama pull llama3.1:8b 3. Import the Workflow Open n8n at http://localhost:5679 Go to Workflows → Import from File Select text.json 4. Connect Credentials | Node | Credential Needed | |------|-------------------| | Gmail Trigger / Backfill | Gmail OAuth2 | | Upsert Row in Sheets | Google Sheets OAuth2 | > Follow the n8n prompts to authorize both accounts. 5. Configure Google Sheet Create a new Google Sheet with these column headers: company | role | status | Application Link | Last Update Date | Applied Date Copy the Sheet URL and update it in the Upsert Row in Sheets and Read All Applications nodes. 6. Activate & Run Click Active toggle to enable the Gmail trigger (polls every minute) Or click Backfill Trigger manually to process your last 150 emails immediately Tech Stack | Component | Technology | |-----------|-----------| | Workflow Engine | n8n (self-hosted) | | AI/LLM | Ollama + Llama 3.1 8B | | Email Source | Gmail API (OAuth2) | | Data Store | Google Sheets | | Infrastructure | Docker Compose | > Tip: If specific company emails are still misclassified, add keywords to the STATUS_NORM map or BODY_PATTERNS array in the Final Merge Logic node. An n8n automation workflow template by Rishi.
Rishi
web
free
Others in the same category, ranked by how often they are opened.