Gmail to Slack: AI-Scored Upwork Job Alerts with OpenRouter

Go to Workflow
21 views
Built by James Francis James Francis
Created on June 06, 2026

Description

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Overview
When applying for freelance jobs on Upwork, minutes matter. The first quality application is more often than not the one that's ultimately selected.

Subscribers to Upwork's Freelancer Plus receive email job alerts, but filters are very limited. As a result, it takes a lot of time to manually go through each email and determine if each job fits your criteria.

This workflow scans your Gmail every few minutes, finds all Upwork job alerts, scores them based on your profile/preferences, and sends a Slack channel message for jobs that are strong potential matches.

How it works
Scans Gmail for Upwork job alerts every few minutes
Extracts all available job data from each email
Scores the job based on profile information and criteria you provide
Sends a Slack notification for all jobs that meet a given score threshold

Disclaimers
This workflow polls Gmail for new messages every 10 minutes. A workflow execution will be used each time, regardless of whether the Gmail scan finds anything. You may want to adjust this frequency based on the amount of workflow executions you want to use.
The AI matching process is based only on the information included in the email body (job title, description snippet and metadata). It is against Upwork's Terms of Service to scrape a full job posting. Despite this, the quality of the results in our testing is high for most use cases.

Required Setup
Subscribe to Upwork's Freelancer Plus plan to enable job alerts ($19.99/mo at the time of this posting)
Create Gmail and Open Router (or an LLM provider of your choice) credentials and select them in the Gmail / LLM Model nodes
Create a Slack app that has at least the chat:write.public and channels:read scopes, install it into your workspace, and use your apps OAuth Token to create a Slack API credential in n8n
IMPORTANT: In the "Opportuntity Scorer" node, replace the text in between the <my_profile> tags with your freelancer bio. For best results, include as much detail as possible about your skillset, experience, tool familiarity, and job preferences.
Update the filter with your notification threshold preference(s) and update the Slack channel to send notifications to in the last Slack node

If you have any questions or feedback about this workflow, or would like me to build custom workflows for your business, email me at [email protected].

Nodes Used (4)

Gmail
n8n-nodes-base.gmail
Information Extractor
@n8n/n8n-nodes-langchain.informationExtractor
OpenRouter Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenRouter
Slack
n8n-nodes-base.slack