Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mraktrader7/f91d321e32fe7b7611dc8768cf0e0f3b to your computer and use it in GitHub Desktop.
Save mraktrader7/f91d321e32fe7b7611dc8768cf0e0f3b to your computer and use it in GitHub Desktop.
{
"name": "Business Idea Validator",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
],
"id": "d38b96c8-bd70-4e14-8ce5-409ca67aed9a",
"name": "Schedule Trigger"
},
{
"parameters": {
"url": "https://upwork-jobs-api2.p.rapidapi.com/active-freelance-1h",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "limit",
"value": "100"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "upwork-jobs-api2.p.rapidapi.com"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
224,
0
],
"id": "ecd86c00-6b21-45d6-9544-f930cdf33775",
"name": "HTTP Request",
"credentials": {
"httpHeaderAuth": {
"id": "ILqJ0Ss2E6N7bzva",
"name": "RapidAPI"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b56bce4d-5bcc-4085-b1d5-382c0213f965",
"name": "description",
"value": "={{ $json.description_text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1152,
0
],
"id": "b50860de-fd41-4898-9f54-cf10447b5157",
"name": "Job Description"
},
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "job_description"
}
]
}
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
0,
464
],
"id": "0cfce523-c1ca-4d46-89aa-8a5fcd23f7e8",
"name": "When Executed by Another Workflow"
},
{
"parameters": {
"description": "Call this tool to check if the job description has any valuable business model.\nThis tool takes job_description as input. And returns the core business idea.",
"workflowId": {
"__rl": true,
"value": "OFvs6LyLZABBuDvn",
"mode": "list",
"cachedResultName": "Business Idea Validator"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"job_description": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('job_description', ``, 'string') }}"
},
"matchingColumns": [
"job_description"
],
"schema": [
{
"id": "job_description",
"displayName": "job_description",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [
1424,
208
],
"id": "2bf8a87d-0084-4140-a02e-cd920e346c44",
"name": "Get Core Business Idea"
},
{
"parameters": {
"promptType": "define",
"text": "=Extract core business idea from the job posting.\n\nJob posting - \n{{ $json.job_description }}",
"options": {
"systemMessage": "=### Introduction\nYou are a expert idea validator and business expert. You can easily understand the core business idea from the job descriptions.\n\n### Instructions\n- You MUST deeply understand what's the job description, what is the problem they are trying to solve.\n- You MUST ignore words not related to business idea, and more are more related to job posting.\n\n### Context\nThe job description is taken out from a job post in Upwork (a platform for freelancers to find a job)"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2,
"position": [
224,
464
],
"id": "16124464-57b8-4bcf-977f-454ea1d679ea",
"name": "Code Idea Agent"
},
{
"parameters": {
"promptType": "define",
"text": "=## Request\nI found this job on upwork, what can be the code business idea behind this?\n\n## Job Description\n{{ $json.description }}",
"hasOutputParser": true,
"options": {
"systemMessage": "=## Information\nYou are a business marketing expert.\nYou will be provided with a job posting from a business. You need to find out the core business idea.\n\n## Instructions\n- You must call \"Get Core Business Idea\" tool to find out the real business idea behind the job description posted.\n\n## Output\nThis is the exact format needed for output\n\n### Input\nI found this job on upwork, what can be the code business idea behind this?\n\n[business idea here]\n\n### Output\nidea: [core business idea]"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2,
"position": [
1360,
0
],
"id": "b0f30a1b-8d26-42db-a866-eff12ee08194",
"name": "Validator Agent",
"retryOnFail": true,
"maxTries": 2,
"onError": "continueErrorOutput"
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $json.project_budget_total }}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
},
"id": "c3118517-18af-4f11-bbfa-71b2598d4d61"
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "Total Pay"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "1253f1fb-407c-4254-a7b3-b1f3792f16b7",
"leftValue": "={{ $json.project_budget_hourly_max }}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "Hourly Pay"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
448,
0
],
"id": "b801dc33-e317-4143-89ef-21025ef6a4e3",
"name": "Switch"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "b9a31df5-84d1-4ef8-9cfb-0fe7f581e327",
"leftValue": "={{ $json.project_budget_total }}",
"rightValue": 500,
"operator": {
"type": "number",
"operation": "gt"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.filter",
"typeVersion": 2.2,
"position": [
672,
-96
],
"id": "4e683cad-b46b-4366-898e-ac5f0df86c41",
"name": "Big Total Projects"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "2305cd3c-0eab-431a-bb04-13cbf44496fa",
"leftValue": "={{ $json.project_budget_hourly_max }}",
"rightValue": 100,
"operator": {
"type": "number",
"operation": "gt"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.filter",
"typeVersion": 2.2,
"position": [
672,
112
],
"id": "e8e6e88a-33cb-4687-a1fd-6a042dc3edfc",
"name": "Big Hourly Projects"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
880,
0
],
"id": "058b7d38-06e7-407c-90d8-758082b2293c",
"name": "Merge"
},
{
"parameters": {
"jsonSchemaExample": "{\n\t\"idea\": \"business-code-idea-herre\"\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
1632,
208
],
"id": "a8178e95-700f-4284-9294-2c2756142276",
"name": "Structured Output Parser"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1QEG9psLspm5NrZesvcdxwTIOObEZT0MJQmXGf9mPBtQ",
"mode": "list",
"cachedResultName": "Business Idea Extractor",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QEG9psLspm5NrZesvcdxwTIOObEZT0MJQmXGf9mPBtQ/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1QEG9psLspm5NrZesvcdxwTIOObEZT0MJQmXGf9mPBtQ/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Upwork ID": "={{ $('Merge').item.json.id }}",
"Business Idea": "={{ $json.output.idea }}",
"Status": "New",
"Original Description": "={{ $('Merge').item.json.description_text }}",
"Upwork URL": "={{ $('Merge').item.json.url }}",
"Hourly Payment": "={{ $('Merge').item.json.project_budget_hourly_min ? `${$('Merge').item.json.project_budget_hourly_min} ${$('Merge').item.json.project_budget_currency} - ${$('Merge').item.json.project_budget_hourly_max} ${$('Merge').item.json.project_budget_currency}` : \"No hourly pay\" }}",
"Lumpsum Payment": "={{ $('Merge').item.json.project_budget_total? `${$('Merge').item.json.project_budget_total} ${$('Merge').item.json.project_budget_currency}`: \"No total pay\" }}"
},
"matchingColumns": [],
"schema": [
{
"id": "Upwork ID",
"displayName": "Upwork ID",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "Business Idea",
"displayName": "Business Idea",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "Status",
"displayName": "Status",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "Original Description",
"displayName": "Original Description",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "Upwork URL",
"displayName": "Upwork URL",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "Hourly Payment",
"displayName": "Hourly Payment",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "Lumpsum Payment",
"displayName": "Lumpsum Payment",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.6,
"position": [
1920,
0
],
"id": "ab2fa6ee-5816-4567-a5a8-0b4ab82544c5",
"name": "Business Idea Sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Rn3BYzXFYtmdsek1",
"name": "Google Sheets account"
}
}
},
{
"parameters": {
"model": "openai/gpt-4.1-nano",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
1232,
208
],
"id": "f9506c9b-30d6-47c3-9d37-9a775df5eb54",
"name": "oAI 4.1 - Nano",
"credentials": {
"openRouterApi": {
"id": "CGW0UD2Uwkzjnlyv",
"name": "OpenRouter account"
}
}
},
{
"parameters": {
"model": "openai/gpt-4.1-nano",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
320,
688
],
"id": "3c325f48-a8b4-4cd0-b4f8-3be2379e0493",
"name": "oAI 4.1",
"credentials": {
"openRouterApi": {
"id": "CGW0UD2Uwkzjnlyv",
"name": "OpenRouter account"
}
}
},
{
"parameters": {
"content": "## Find Job Listings\n- Get's upto 100 job postings daily\n- We use HTTP Node to call RapidAPI\n\n### Setup\n- RapidAPI - [Subscribe this](https://rapidapi.com/fantastic-jobs-fantastic-jobs-default/api/upwork-jobs-api2/playground/apiendpoint_d6359180-d93a-4c80-877c-b85d5dfbd5bd)\n- Here's how to setup [RapidAPI](https://x.com/search?q=from%3Aarchitjn%20%22n8n%20Basics%22%20%22RapidAPI%22&src=typed_query&f=top)",
"height": 560,
"width": 440
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-224
],
"typeVersion": 1,
"id": "312cd974-e33c-42dd-8460-e9b11583ef62",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## Filter high paying jobs only\n- Filters based on the amount offered for the job\n- You can edit to save your own amount ",
"height": 560,
"width": 640,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-224
],
"typeVersion": 1,
"id": "e167543c-6ed4-40df-8bb4-7cda4a8090d6",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## Process Job Listing for Idea",
"height": 560,
"width": 720,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-224
],
"typeVersion": 1,
"id": "63329ded-cc8b-41f8-bfe6-30b20354ce3d",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## Save the ideas\n- Here's how to setup [Google Sheets](https://x.com/search?q=from%3Aarchitjn%20%22n8n%20Basics%22%20%22google%20sheets%22&src=typed_query&f=top)\n- Download the sample Sheet provided with the workflow\n- Upload it to Google Sheets, and Link your sheet in this Node",
"height": 560,
"width": 340,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1808,
-224
],
"typeVersion": 1,
"id": "0c39320a-4f28-4595-9256-4da336f42fa6",
"name": "Sticky Note3"
},
{
"parameters": {
"content": "## Understands and extracts core business idea",
"height": 440,
"width": 660,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
384
],
"typeVersion": 1,
"id": "ed36d331-a924-4585-8dcb-bef41868e337",
"name": "Sticky Note4"
}
],
"pinData": {},
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Job Description": {
"main": [
[
{
"node": "Validator Agent",
"type": "main",
"index": 0
}
]
]
},
"Get Core Business Idea": {
"ai_tool": [
[
{
"node": "Validator Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Code Idea Agent",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Big Total Projects",
"type": "main",
"index": 0
}
],
[
{
"node": "Big Hourly Projects",
"type": "main",
"index": 0
}
]
]
},
"Big Hourly Projects": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Big Total Projects": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Job Description",
"type": "main",
"index": 0
}
]
]
},
"Validator Agent": {
"main": [
[
{
"node": "Business Idea Sheet",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Validator Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"oAI 4.1 - Nano": {
"ai_languageModel": [
[
{
"node": "Validator Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"oAI 4.1": {
"ai_languageModel": [
[
{
"node": "Code Idea Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "259a67c3-0847-4f98-9078-6896e1e353a0",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "933df83c84196d70ce3ffd0bf5d3e1aca31b7366f2f84e1f3482640096e4a3a9"
},
"id": "OFvs6LyLZABBuDvn",
"tags": []
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment