{
  "name": "Auto-post curated remote jobs to Telegram with BrowserAct and Gemini",
  "nodes": [
    {
      "id": "72f28ca9-c882-479d-a4d2-53b21ec9b89b",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2128,
        720
      ]
    },
    {
      "id": "1cc72c30-636a-4364-835e-046612127be4",
      "name": "Google Gemini",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2000,
        736
      ]
    },
    {
      "id": "2919d33c-7fef-4311-b8d3-3e746183807a",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2752,
        512
      ]
    },
    {
      "id": "5ff7a89e-0eb9-4497-9aa8-6bb1fda7919b",
      "name": "Fix Output",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2128,
        848
      ]
    },
    {
      "id": "10f08ee5-52b6-4dba-900d-310f2abae1f5",
      "name": "Scrape Jobs Data (SimplyHired)",
      "type": "n8n-nodes-browseract.browserAct",
      "position": [
        1056,
        432
      ]
    },
    {
      "id": "002c749a-d8e6-4a42-a309-396fc8b5a680",
      "name": "Scrape Jobs Data (Remotive)",
      "type": "n8n-nodes-browseract.browserAct",
      "position": [
        1056,
        592
      ]
    },
    {
      "id": "280ecc28-bcf7-41ea-a404-c59a269d9dfb",
      "name": "Splitting Remotive Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        592
      ]
    },
    {
      "id": "ad7c8b11-d548-45fd-803f-eb8dee119d6e",
      "name": "Splitting SimplyHired Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        432
      ]
    },
    {
      "id": "41a99712-6ddf-4a9a-a650-7d60900e74f6",
      "name": "Wait for Both Path Outputs",
      "type": "n8n-nodes-base.merge",
      "position": [
        1488,
        512
      ]
    },
    {
      "id": "175503ea-1a18-44ed-aa1d-c2d8fa347850",
      "name": "Merge Branch Outputs",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1840,
        512
      ]
    },
    {
      "id": "5587035c-0262-4ffc-9435-89744d01ba8f",
      "name": "Analyze Job Data & Generate Response",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2000,
        512
      ]
    },
    {
      "id": "8f1020f5-850e-4a66-85c1-e77c2f54da17",
      "name": "Split Generated Job Items",
      "type": "n8n-nodes-base.code",
      "position": [
        2544,
        512
      ]
    },
    {
      "id": "80104868-b954-43f9-ad18-38642658474f",
      "name": "Avoid Rate Limits",
      "type": "n8n-nodes-base.wait",
      "position": [
        2960,
        480
      ]
    },
    {
      "id": "c5c416dd-e13c-42b7-9aaf-b6b612da92cb",
      "name": "Send Travel List to User Channel",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3168,
        512
      ]
    },
    {
      "id": "e9b06a2a-1ae8-42d4-8922-abadece65997",
      "name": "Schedule Daily",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        832,
        512
      ]
    },
    {
      "id": "c0a06e5a-f431-4b10-82d5-a7c03aa6c5f6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -144
      ],
      "parameters": {
        "width": 672,
        "height": 384,
        "content": "@[youtube](DEBF0ILrM5E)"
      }
    },
    {
      "id": "d9933a15-6076-40e4-87eb-460ec5c4751f",
      "name": "Documentation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -144
      ],
      "parameters": {
        "width": 380,
        "height": 520,
        "content": "## ⚡ Workflow Overview & Setup\n\n**Summary:** This automation daily scrapes remote job listings from SimplyHired and Remotive using BrowserAct, uses AI to filter spam and curate high-quality roles, and"
      }
    },
    {
      "id": "53de33d7-4c6c-498d-bbad-170c2426dd46",
      "name": "Step 1 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        256
      ],
      "parameters": {
        "width": 764,
        "height": 124,
        "content": "### 🕵️ Step 1: Multi-Source Scraping\n\nThe workflow triggers daily to run dual BrowserAct sessions, scraping the latest remote job listings from SimplyHired and Remotive. The raw data from both sources"
      }
    },
    {
      "id": "25aeb140-51d0-4858-826e-73f78bc89056",
      "name": "Step 2 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        256
      ],
      "parameters": {
        "width": 780,
        "height": 124,
        "content": "### 🧠 Step 2: AI Curation & Quality Control\n\nAn AI agent aggregates the job feeds, performing deduplication and strict filtering. It discards low-tier gig work, spam, and roles below a specific salary"
      }
    },
    {
      "id": "eb6db87d-a37f-4850-a86f-074f9803592c",
      "name": "Step 3 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2544,
        256
      ],
      "parameters": {
        "width": 776,
        "height": 124,
        "content": "### 🚀 Step 3: Throttled Delivery\n\nThe curated job list is split into individual items and sent sequentially to the Telegram channel. A wait node is included between posts to respect Telegram's rate li"
      }
    }
  ],
  "connections": {
    "Fix Output": {
      "ai_languageModel": [
        [
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini": {
      "ai_languageModel": [
        [
          {
            "node": "Analyze Job Data & Generate Response",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Daily": {
      "main": [
        [
          {
            "node": "Scrape Jobs Data (Remotive)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Scrape Jobs Data (SimplyHired)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Avoid Rate Limits",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Avoid Rate Limits": {
      "main": [
        [
          {
            "node": "Send Travel List to User Channel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Branch Outputs": {
      "main": [
        [
          {
            "node": "Analyze Job Data & Generate Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Splitting Remotive Data": {
      "main": [
        [
          {
            "node": "Wait for Both Path Outputs",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Analyze Job Data & Generate Response",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Split Generated Job Items": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Splitting SimplyHired Data": {
      "main": [
        [
          {
            "node": "Wait for Both Path Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Both Path Outputs": {
      "main": [
        [
          {
            "node": "Merge Branch Outputs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Jobs Data (Remotive)": {
      "main": [
        [
          {
            "node": "Splitting Remotive Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Jobs Data (SimplyHired)": {
      "main": [
        [
          {
            "node": "Splitting SimplyHired Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Travel List to User Channel": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze Job Data & Generate Response": {
      "main": [
        [
          {
            "node": "Split Generated Job Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}