{"product_id":"upwork-job-alerts-with-gpt-4-1-mini-telegram-n8n","title":"Upwork Job Alerts with GPT-4.1-mini + Telegram (n8n)","description":"\u003ch3\u003eGet Upwork job leads in Telegram—automatically, every 15 minutes\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow searches Upwork for new job postings on a 15-minute schedule, uses GPT-4.1-mini to score fit and draft a proposal opening, and instantly sends high-scoring opportunities to your Telegram—while preventing duplicate alerts using an n8n Data Table.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cb\u003eRuns on a schedule every 15 minutes\u003c\/b\u003e to fetch the latest jobs.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eLoads dynamic search settings\u003c\/b\u003e by downloading a \u003cb\u003eprofile.md\u003c\/b\u003e file over HTTP, extracting the required JSON configuration block, and applying defaults\/validation.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eQueries Upwork via GraphQL\u003c\/b\u003e: builds one Upwork GraphQL search request per configured “search lane” using \u003cb\u003eUpwork OAuth2\u003c\/b\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eNormalizes and filters results\u003c\/b\u003e using deterministic rules (job age, budget floors, blocked keywords), deduplicates within the run, and skips anything already stored in \u003cb\u003eupwork_seen_jobs\u003c\/b\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eUses an AI scoring step with OpenAI\u003c\/b\u003e (chat model) to rank remaining jobs and draft a proposal-opening candidate.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eApplies score thresholds\u003c\/b\u003e: only jobs above the threshold receive a \u003cb\u003eformatted HTML alert\u003c\/b\u003e in Telegram.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003ePrevents reprocessing\u003c\/b\u003e by upserting every processed job (alerted or not) into the \u003cb\u003eupwork_seen_jobs\u003c\/b\u003e Data Table.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eFreelancers and agencies who want \u003cb\u003econtinuous Upwork sourcing\u003c\/b\u003e without manually checking listings.\u003c\/li\u003e\n  \u003cli\u003eSaaS operators and automation engineers who need a \u003cb\u003ereliable lead-triage pipeline\u003c\/b\u003e with deduplication.\u003c\/li\u003e\n  \u003cli\u003eAnyone tuning Upwork search lanes and AI thresholds to reduce noise and focus on high-fit jobs.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details (n8n)\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cb\u003eNodes used\u003c\/b\u003e: if, set, code, telegram, data table, sticky note.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eUpwork integration\u003c\/b\u003e: GraphQL API with \u003cb\u003eUpwork OAuth2\u003c\/b\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eAI scoring\u003c\/b\u003e: OpenAI chat model (GPT-4.1-mini) to score fit and draft a proposal opening.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eState management\u003c\/b\u003e: n8n Data Table \u003cb\u003eupwork_seen_jobs\u003c\/b\u003e automatically created\/reused to avoid duplicate Telegram alerts.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cb\u003eSetup requirement\u003c\/b\u003e: host \u003cb\u003eprofile.md\u003c\/b\u003e and provide its raw URL in runtime settings.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45978926383283,"sku":"N8N-19333","price":39.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/HfOvtSvUB4VGBtIba6jZz_MppNQ1RJ.png?v=1788859334","url":"https:\/\/buyflowscripts.com\/products\/upwork-job-alerts-with-gpt-4-1-mini-telegram-n8n","provider":"N8N Commerce","version":"1.0","type":"link"}