AutomationFlowsAI & RAG › Gpt 4.1 - Freelancer.com Job Alert System with Auto Proposal Generator

Gpt 4.1 - Freelancer.com Job Alert System with Auto Proposal Generator

BySuS @sulieman-said on n8n.io

Be first. Be relevant. Get hired. This ready-to-import n8n workflow automates your entire Freelancer.com job search: it scans new listings, filters the best ones with AI, writes proposal drafts, and sends them to Telegram instantly — all while logging every opportunity into…

Cron / scheduled trigger★★★★☆ complexityAI-powered16 nodesRSS Feed ReadAgentOutput Parser StructuredOpenAIGoogle SheetsTelegramOpenAI ChatGoogle Sheets Tool
AI & RAG Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9270 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "df2d582a-6922-40a5-a37f-4e986b59fc20",
      "name": "Fetch Freelancer.com RSS",
      "type": "n8n-nodes-base.rssFeedRead",
      "notes": "\ud83c\udf10 RSS FETCH \u2014 Setup\nFetches the latest jobs from Freelancer.com.\n\nCUSTOMIZE URL:\n\u2022 ?keyword=wordpress\n\u2022 &min_price=500\n\u2022 &max_price=5000\n\nExample:\nhttps://www.freelancer.com/rss.xml?keyword=wordpress&min_price=500\n\n\ud83d\udca1 Use multiple RSS nodes for multiple keywords.",
      "position": [
        96,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1.2
    },
    {
      "id": "d4650966-00dc-4f5f-9cdc-eecb0e8622d1",
      "name": "Filter Job Quality",
      "type": "n8n-nodes-base.filter",
      "notes": "\u2705 QUALITY FILTER \u2014 Customize\nCurrent rules:\n\u2022 Description > 100 chars\n\u2022 Posted within last 2 hours\n\nOPTIONAL:\n\u2022 Budget thresholds (if present in feed)\n\u2022 Required/excluded keywords\n\nTIP: Start loose, tighten after 1\u20132 days.",
      "position": [
        544,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "4efcab46-f278-401e-9161-78eda3c4c5b6",
      "name": "AI Job Analyzer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "notes": "\ud83e\udde0 AI ANALYZER \u2014 Setup\nScores the job 1\u201310, explains reasoning, flags risks, and classifies client type.\n\nTIP: Keep wishlist specific to reduce noise.",
      "position": [
        768,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "3b3698b9-f690-4d8e-981d-ead12a0e3061",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "notes": "\ud83e\udde9 OUTPUT PARSER \u2014 Stability\nForces strict JSON so downstream filters/logging never break.",
      "position": [
        928,
        1008
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1.3
    },
    {
      "id": "ec090484-ec95-4880-a441-42a8707af572",
      "name": "AI Proposal Generator",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "\u270d\ufe0f PROPOSAL WRITER \u2014 Customize\nEdit \"My Skills\" / \"My Experience\" and drop one relevant portfolio link.\n\n\ud83d\udca1 90% done by AI \u2192 add 10% personal touch.",
      "position": [
        1344,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1.3
    },
    {
      "id": "a97989f9-d7d6-4e79-9f26-802372548099",
      "name": "Log to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "\ud83d\udcca JOB LOGGER \u2014 Setup\nAppend/Update by Link to avoid duplicates.\n\nRecommended columns: Timestamp | Job | Description | Link | AI Score | Reasoning | Red Flags | Client Type | AI Proposal | Alert Timestamp.",
      "position": [
        1696,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.4
    },
    {
      "id": "5770b44f-d639-4852-a80e-469474e23966",
      "name": "Send Telegram Alert",
      "type": "n8n-nodes-base.telegram",
      "notes": "\ud83d\udcf1 TELEGRAM \u2014 Setup\nCreate bot with @BotFather \u2192 add token in credentials \u2192 DM your bot \u2192 get Chat ID via @userinfobot and paste here.\n\nTIP: Add buttons via your own webhook for Skip / Applied.",
      "position": [
        1920,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1.2
    },
    {
      "id": "f18bd2e8-d87e-42b8-887a-f7b67fd259c7",
      "name": "Sticky: SETUP START",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -912,
        432
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "a12e9052-8c1d-406b-95d1-7addfd5a6b31",
      "name": "Schedule: Every 5 Minutes1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "\u23f0 TRIGGER \u2014 Schedule\nRuns this workflow every 5 minutes.\n\n\u270f\ufe0f CUSTOMIZE:\n\u2022 3 min = ultra-competitive niches\n\u2022 10\u201315 min = lower API cost\n\n\ud83d\udca1 TIP: Start at 5 min and tune after 1\u20132 days based on alert volume.",
      "position": [
        -800,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1.1
    },
    {
      "id": "8162d357-6dfb-40ad-9623-bb68e2b9eb9a",
      "name": "Settings (Keyword & Wishlist)1",
      "type": "n8n-nodes-base.set",
      "notes": "\u2699\ufe0f SETTINGS \u2014 Setup\nDefine your main keyword and your \"wish list\" criteria.\n\nExamples:\n\u2022 Job Keyword: shopify, react, seo\n\u2022 Wishlist: \"Budget > $500, clear scope, no vague fixed-price\"\n\n\ud83d\udca1 TIP: Clone this node to run multiple keywords in parallel (merge later).",
      "position": [
        -576,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 3.4
    },
    {
      "id": "747c51cd-4009-4593-8b9f-676571342cbf",
      "name": "Load Seen Links (Google Sheets)1",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "\ud83d\udce5 DEDUPE SOURCE \u2014 Setup\nLoads previously processed links from your tracking sheet.\n\nSETUP:\n\u2022 Use the same spreadsheet as the logger\n\u2022 Column \"Link\" must exist\n\n\ud83d\udd12 Prevents duplicate alerts.",
      "position": [
        -352,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.4,
      "alwaysOutputData": true
    },
    {
      "id": "49826d1a-879b-49df-9cdc-e6dea41b34e4",
      "name": "Collect Seen Links1",
      "type": "n8n-nodes-base.aggregate",
      "notes": "\ud83e\uddee AGGREGATE \u2014 Setup\nBuilds a quick lookup of already seen links for the dedupe filter.",
      "position": [
        -128,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "8482790d-f432-40bc-b7e6-a4184b4e7311",
      "name": "De-duplicate by Link1",
      "type": "n8n-nodes-base.filter",
      "notes": "\ud83d\udeab DEDUPE \u2014 Customize\nOnly pass jobs whose link is not already in your sheet.\n\nTIP: If your source has unstable links, switch to a hash of (title+date).",
      "position": [
        320,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 2.2
    },
    {
      "id": "b19632af-88ae-4e2b-b731-df8b4124545a",
      "name": "LLM (OpenAI)1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "notes": "\u2699\ufe0f LLM BACKEND \u2014 Setup\nUsed by Analyzer & Proposal nodes.\n\nTIP: Use gpt-4o-mini for speed/cost unless you need richer reasoning.",
      "position": [
        800,
        1008
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 1.2
    },
    {
      "id": "482ded64-e1b3-472c-bb24-20c3fdf7bd93",
      "name": "Gate: Score \u2265 ",
      "type": "n8n-nodes-base.if",
      "notes": "\ud83c\udfaf SCORE GATE \u2014 Customize\nOnly pass jobs with score \u2265 7.\n\n6 = more alerts, 8 = only premium.",
      "position": [
        1120,
        704
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "d5802bc6-46df-4658-9386-944b92aed5bf",
      "name": "CV (Sheets Tool)1",
      "type": "n8n-nodes-base.googleSheetsTool",
      "notes": "\ud83d\udee0\ufe0f SHEETS TOOL \u2014 Optional\nFor advanced automations (e.g., pulling portfolio snippets). Safe to disable initially.",
      "position": [
        1424,
        928
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.7
    }
  ],
  "connections": {
    "LLM (OpenAI)1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Job Analyzer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Job Analyzer": {
      "main": [
        [
          {
            "node": "Gate: Score \u2265 ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gate: Score \u2265 ": {
      "main": [
        [
          {
            "node": "AI Proposal Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CV (Sheets Tool)1": {
      "ai_tool": [
        [
          {
            "node": "AI Proposal Generator",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Filter Job Quality": {
      "main": [
        [
          {
            "node": "AI Job Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect Seen Links1": {
      "main": [
        [
          {
            "node": "Fetch Freelancer.com RSS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log to Google Sheets": {
      "main": [
        [
          {
            "node": "Send Telegram Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Proposal Generator": {
      "main": [
        [
          {
            "node": "Log to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "De-duplicate by Link1": {
      "main": [
        [
          {
            "node": "Filter Job Quality",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Freelancer.com RSS": {
      "main": [
        [
          {
            "node": "De-duplicate by Link1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Job Analyzer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Schedule: Every 5 Minutes1": {
      "main": [
        [
          {
            "node": "Settings (Keyword & Wishlist)1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Settings (Keyword & Wishlist)1": {
      "main": [
        [
          {
            "node": "Load Seen Links (Google Sheets)1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Seen Links (Google Sheets)1": {
      "main": [
        [
          {
            "node": "Collect Seen Links1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Be first. Be relevant. Get hired. This ready-to-import n8n workflow automates your entire Freelancer.com job search: it scans new listings, filters the best ones with AI, writes proposal drafts, and sends them to Telegram instantly — all while logging every opportunity into…

Source: https://n8n.io/workflows/9270/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

staying consistent with personal brand content is hard when you're running everything yourself. you know what you want to say — but turning raw thoughts into polished posts takes hours.

Output Parser Structured, Telegram, OpenAI +4
AI & RAG

This workflow automates the process of generating, reviewing, and publishing blog posts across multiple platforms, now enhanced with support for RSS Feeds as a content source. It streamlines the manag

HTTP Request, Html Extract, RSS Feed Read +9
AI & RAG

Template Name: AI Personal Assistant - Task & Email Management Price: $27 Category: Productivity & Automation Difficulty: Intermediate Use Case: Personal productivity automation for busy professionals

Telegram, HTTP Request, OpenAI +8
AI & RAG

This workflow manages subscription billing reminders and data updates via Telegram. It runs daily at 8:00 AM to check for upcoming due subscriptions, formats relevant information, and sends reminders

OpenAI Chat, Memory Buffer Window, Telegram +7
AI & RAG

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

Mailgun, OpenAI, OpenAI Chat +8