This workflow corresponds to n8n.io template #8015 — we link there as the canonical source.
This workflow follows the Apifyn8N Nodes Apify → 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 →
{
"id": "h7kye1TyifE8jVpQ",
"name": "Live-Automate AI Upwork Proposal Generation with Apify, Google Gemini & Sheets",
"tags": [],
"nodes": [
{
"id": "6de5e3c9-fbef-4fbb-863f-2f100e802601",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-256,
240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ac26904f-2ee9-4417-bf60-3f059686c0be",
"name": "Run Upwork Actor for Listed Jobs",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
64,
240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c86c636f-e414-4ba9-98d1-26a2f2a26175",
"name": "Get the Dataset from Upwork Actor",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
288,
240
],
"parameters": {},
"typeVersion": 1
},
{
"id": "78dd55ae-37a3-4178-9e70-167dd21666c2",
"name": "Add the Extracted Data in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
656,
240
],
"parameters": {},
"typeVersion": 4.6
},
{
"id": "eb2586a4-6bb2-4302-acf5-5efe6e495076",
"name": "Count the New Jobs",
"type": "n8n-nodes-base.summarize",
"position": [
1008,
240
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "6906f045-15e7-4bab-a0a4-97bcd6466257",
"name": "Send Email Notification",
"type": "n8n-nodes-base.gmail",
"position": [
1360,
240
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "06bbaf29-c309-484e-a711-0d6c3f7c3140",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-48
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "d1013079-63ff-4c95-8974-fdf077c5412d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
576,
96
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "e9ccf231-e7cd-42b6-a4ec-774e7a375c61",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
112
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "c9f81e8f-c955-47bc-9f63-963b7c8de3b6",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
96
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "070434c0-5503-455d-9e69-90522afac0e5",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
32,
560
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "42496b60-1d0a-41b7-be95-262981058f6a",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
464,
976
],
"parameters": {},
"typeVersion": 1
},
{
"id": "efee4d21-e839-4b5f-8c87-6234c6e44f11",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
624,
976
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "963eef64-a1d1-4a1e-9266-93984739f118",
"name": "Get row(s) in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
-256,
560
],
"parameters": {},
"typeVersion": 4.6
},
{
"id": "a84799f2-70ef-4980-81c3-afc7a8b51c91",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
848,
560
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "9a168243-ebcf-4b0d-9761-cdec750908ff",
"name": "Send a message",
"type": "n8n-nodes-base.gmail",
"position": [
1664,
560
],
"parameters": {},
"typeVersion": 2.1
},
{
"id": "1723dd54-0806-4d3e-bf2e-53ddc5acd929",
"name": "Summarize",
"type": "n8n-nodes-base.summarize",
"position": [
1376,
560
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "e3573056-1527-43b7-b724-03ac0f693dad",
"name": "Append or update row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1184,
560
],
"parameters": {},
"typeVersion": 4.6
},
{
"id": "e42d7f08-c1ab-4e08-bf9e-bc97d842de4b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
528
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "df087f1e-c45a-4363-a076-b28bfd0606cf",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
688
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "33a8cdb2-5908-4201-ba34-9f52b641aaa4",
"name": "Proposal Crafting",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
464,
816
],
"parameters": {},
"typeVersion": 1.7
},
{
"id": "26408e94-bf72-493d-8123-583aace9921f",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
720
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "ebeb68c3-ac91-4bd0-91e4-03272cdf8c50",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1536,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "492bac5d-11ce-45a1-9e57-2475b8895b85",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
736
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "5d88a224-02ac-4c9d-8861-bd860673ce66",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
352,
496
],
"parameters": {
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "72a480b8-38e5-4c96-b924-d07bad552e18",
"connections": {
"If": {
"main": [
[
{
"node": "Proposal Crafting",
"type": "main",
"index": 0
}
]
]
},
"Summarize": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Proposal Crafting": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Count the New Jobs": {
"main": [
[
{
"node": "Send Email Notification",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Send Email Notification": {
"main": [
[
{
"node": "Get row(s) in sheet",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Proposal Crafting",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Proposal Crafting",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Append or update row in sheet": {
"main": [
[
{
"node": "Summarize",
"type": "main",
"index": 0
}
]
]
},
"Add the Extracted Data in Sheets": {
"main": [
[
{
"node": "Count the New Jobs",
"type": "main",
"index": 0
}
]
]
},
"Run Upwork Actor for Listed Jobs": {
"main": [
[
{
"node": "Get the Dataset from Upwork Actor",
"type": "main",
"index": 0
}
]
]
},
"Get the Dataset from Upwork Actor": {
"main": [
[
{
"node": "Add the Extracted Data in Sheets",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Run Upwork Actor for Listed Jobs",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Community nodes are used, and template can only be used on self-hosted n8n instances.
Source: https://n8n.io/workflows/8015/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Automate your lead intake, scoring, and outreach pipeline. This workflow collects leads from forms, enriches and scores them using Relevance AI, routes them by quality, and triggers the right follow-u
This workflow creates a sophisticated, self-improving customer support system that automatically handles incoming emails. It's designed to answer common questions using an AI-powered knowledge base an
Perfect for use cases such as: 💼 Finance teams managing vendor invoices 📊 Bookkeeping workflows 🔄 Automating monthly reconciliation
Stop manually exporting CSVs and start automating your marketing insights.