{
  "name": "Gmail to Slack: AI-scored Upwork job alerts with OpenRouter",
  "nodes": [
    {
      "id": "0dc258f0-4d50-4bbf-9063-b252f597c245",
      "name": "Convert To Markdown",
      "type": "n8n-nodes-base.markdown",
      "position": [
        440,
        -20
      ]
    },
    {
      "id": "fced2dd2-720f-4534-a459-94f6cd13314b",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        748,
        200
      ]
    },
    {
      "id": "4b04a2bf-29a6-42f6-8e72-c264f092780e",
      "name": "Mark as Read",
      "type": "n8n-nodes-base.gmail",
      "position": [
        220,
        -20
      ]
    },
    {
      "id": "5c208e16-c987-4bf0-b3f6-27d560b3ce5e",
      "name": "Get Filtered Messages",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        0,
        -20
      ]
    },
    {
      "id": "6674d03e-91ca-4c6b-8091-b956920e7d9a",
      "name": "Send Slack Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        1860,
        -20
      ]
    },
    {
      "id": "0b9a8a79-3639-4a83-ac4d-9bbd22adef5e",
      "name": "OpenRouter Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1124,
        200
      ]
    },
    {
      "id": "e282e1a2-70c7-40ca-a394-33e33976f855",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1440,
        -20
      ]
    },
    {
      "id": "37767da3-90bc-42c5-8fe4-a8d45be89cf3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -240
      ],
      "parameters": {
        "width": 660,
        "height": 460,
        "content": "## Fetch and format emails\n\nHere we use a Gmail search query to find all Upwork job alerts, and format the message body for LLM analysis. An Upwork Freelancer Plus subscription is required in order to"
      }
    },
    {
      "id": "96107c5a-8311-4836-a51e-09ce43994892",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -240
      ],
      "parameters": {
        "width": 320,
        "height": 460,
        "content": "## Extract data from job\n\nPull out job information like country, price, etc."
      }
    },
    {
      "id": "a8e422da-0984-4090-abde-eb2344dc2b28",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1000,
        -240
      ],
      "parameters": {
        "width": 340,
        "height": 460,
        "content": "## Score the skillset match\n\nREQUIRED: Replace the placeholder text in the prompt between the <my_profile> tags with your own freelancer profile. Be as detailed as possible to achieve the best results"
      }
    },
    {
      "id": "51b4e572-fe95-41ca-8ef1-e6638d6cbe8c",
      "name": "Filter By Score",
      "type": "n8n-nodes-base.filter",
      "position": [
        1640,
        -20
      ]
    },
    {
      "id": "bf621b43-05bd-47c2-bd29-4484400dff62",
      "name": "Opportunity Scorer",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1040,
        -20
      ]
    },
    {
      "id": "f768b4e4-3eba-41b1-a6aa-c34c14dead7c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1380,
        -240
      ],
      "parameters": {
        "width": 620,
        "height": 460,
        "content": "## Send filtered notifications to Slack\n\nHere we only send notifications for jobs that have a match score of 7 or greater, but you can filter the notifications however you'd like. Be sure to select a "
      }
    },
    {
      "id": "ffbe5e44-4e6d-4b88-92cd-042a47fdc77c",
      "name": "Job Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        660,
        -20
      ]
    }
  ],
  "connections": {
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Filter By Score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark as Read": {
      "main": [
        [
          {
            "node": "Convert To Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter By Score": {
      "main": [
        [
          {
            "node": "Send Slack Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Job Data Extractor": {
      "main": [
        [
          {
            "node": "Opportunity Scorer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Opportunity Scorer": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert To Markdown": {
      "main": [
        [
          {
            "node": "Job Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Filtered Messages": {
      "main": [
        [
          {
            "node": "Mark as Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Job Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Opportunity Scorer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}