{"product_id":"n8n-upwork-proposal-automation-gemini-slack-gmail-drive-clickup","title":"n8n Upwork Proposal Automation: Gemini + Slack + Gmail + Drive + ClickUp","description":"\u003ch3\u003eAutomate Upwork proposal generation every 2 minutes—Slack → Gemini → Gmail → Slack → ClickUp\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow watches for new Upwork job posts in Slack, matches them with candidate resumes and a company deck from Google Drive, generates tailored proposals using the Google Gemini API, then sends proposal emails via Gmail, posts results back to Slack, and creates ClickUp tasks for tracking.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRuns on a 2-minute schedule\u003c\/strong\u003e and checks a specified Slack channel where Upwork jobs are forwarded.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDeduplicates incoming Slack messages\u003c\/strong\u003e using n8n static workflow data, so the workflow only processes new, job-like posts.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLoads candidate resumes from Google Drive\u003c\/strong\u003e: lists PDF resumes in a configured folder, downloads each file, and extracts text to build structured candidate profiles (with Drive links).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFinds the right company deck in Google Drive\u003c\/strong\u003e and selects its share link to include as proposal context.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGenerates proposals with Google Gemini\u003c\/strong\u003e by sending a structured prompt containing the new job post(s), candidate profiles, and deck link.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eParses and validates the Gemini response\u003c\/strong\u003e (JSON array of proposals or skipped jobs).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOutputs results automatically\u003c\/strong\u003e: if proposals exist, emails the proposal package via Gmail, posts a summary to Slack, and creates \u003cstrong\u003eone ClickUp task per proposal\u003c\/strong\u003e. If none are produced, it flags the batch for \u003cstrong\u003emanual review in Slack\u003c\/strong\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eAgency or SaaS teams that want \u003cstrong\u003efaster Upwork outreach\u003c\/strong\u003e without manually rewriting every proposal.\u003c\/li\u003e\n  \u003cli\u003eAutomation engineers building a \u003cstrong\u003eproposal automation workflow\u003c\/strong\u003e combining Slack intake, Drive assets, and Gemini generation.\u003c\/li\u003e\n  \u003cli\u003eOperators who need \u003cstrong\u003eproposal tracking\u003c\/strong\u003e via ClickUp tasks and clear Slack alerts.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eIntegrations:\u003c\/strong\u003e Slack, Google Drive, Gmail, ClickUp (task creation) and Google Gemini API.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWorkflow nodes used:\u003c\/strong\u003e \u003ccode\u003eif\u003c\/code\u003e, \u003ccode\u003ecode\u003c\/code\u003e, \u003ccode\u003egmail\u003c\/code\u003e, \u003ccode\u003emerge\u003c\/code\u003e, \u003ccode\u003eslack\u003c\/code\u003e, \u003ccode\u003esplit out\u003c\/code\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSetup:\u003c\/strong\u003e add Slack OAuth2 credentials and set channel IDs; add Google Drive OAuth2 credentials and update the resume folder ID.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45962071408819,"sku":"N8N-19203","price":23.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/J7hk-T6GPLl55MS_ZpP-P_mijVvieL.png?v=1788599704","url":"https:\/\/buyflowscripts.com\/products\/n8n-upwork-proposal-automation-gemini-slack-gmail-drive-clickup","provider":"N8N Commerce","version":"1.0","type":"link"}