This workflow corresponds to n8n.io template #12496 — we link there as the canonical source.
This workflow follows the Agent → Agenttool 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": "DNjdwHd78xiNXwxq",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Smart multi-property rent optimization and performance analytics system",
"tags": [],
"nodes": [
{
"id": "8ca02783-acf3-4915-8acf-61270162bf09",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
2000,
464
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 6
}
]
}
},
"typeVersion": 1.3
},
{
"id": "e2189872-6f08-4b5d-a696-59af6f94f18e",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
2224,
464
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "rentRollsApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Rent rolls API endpoint URL__>"
},
{
"id": "id-2",
"name": "operatingCostsApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Operating costs API endpoint URL__>"
},
{
"id": "id-3",
"name": "utilitiesApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Utilities data API endpoint URL__>"
},
{
"id": "id-4",
"name": "mortgageApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Mortgage schedules API endpoint URL__>"
},
{
"id": "id-5",
"name": "dashboardApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Financial dashboard API endpoint URL__>"
},
{
"id": "id-6",
"name": "alertWebhookUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Alert notification webhook URL__>"
},
{
"id": "id-7",
"name": "performanceThreshold",
"type": "number",
"value": 0.85
},
{
"id": "id-8",
"name": "marketDataApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Market data API endpoint URL__>"
},
{
"id": "id-9",
"name": "historicalDataApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Historical performance API endpoint URL__>"
},
{
"id": "id-10",
"name": "executiveSummaryWebhook",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Executive summary webhook URL__>"
},
{
"id": "id-11",
"name": "riskAssessmentWorkflowId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Risk assessment workflow ID__>"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "de75ef5a-0051-4733-a1ec-8c793e2bbc74",
"name": "Fetch Rent Rolls",
"type": "n8n-nodes-base.httpRequest",
"position": [
2448,
240
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.rentRollsApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "e684e254-29ef-4dee-af35-4b10b64a2bb3",
"name": "Fetch Operating Costs",
"type": "n8n-nodes-base.httpRequest",
"position": [
2448,
488
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.operatingCostsApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "a3e8c6b7-a436-4e87-b194-2735356b6414",
"name": "Fetch Utilities Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
2448,
896
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.utilitiesApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "df759afc-7b6f-4b54-98ff-7594a808da5f",
"name": "Fetch Mortgage Schedules",
"type": "n8n-nodes-base.httpRequest",
"position": [
2448,
1184
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.mortgageApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "5d82b4af-8049-40fa-98da-6e3bdbc3ba6c",
"name": "Merge Property Data",
"type": "n8n-nodes-base.merge",
"position": [
2672,
392
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition",
"numberInputs": 4
},
"typeVersion": 3.2
},
{
"id": "419476f4-5a26-4350-88a6-dd743b7ce070",
"name": "Aggregate All Properties",
"type": "n8n-nodes-base.aggregate",
"position": [
2896,
344
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "allProperties"
},
"typeVersion": 1
},
{
"id": "6f09dcc8-dded-41ea-92ed-eb1ba1f62c36",
"name": "Rent Optimization Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
3536,
544
],
"parameters": {
"text": "={{ $json.allProperties }}",
"options": {
"systemMessage": "You are a real estate optimization AI agent coordinating specialized analysis tasks.\n\nYour task is to:\n1. Call the Market Analysis Tool to assess market positioning and pricing strategies\n2. Call the Performance Analysis Agent Tool to analyze property performance metrics and identify over/under-performing units\n3. Call the Risk Assessment Tool to evaluate financial and operational risks\n4. Based on all analyses, predict optimal rent adjustments for each property\n5. Call the Recommendation Generator Agent Tool to create actionable recommendations for property managers and investors\n6. Return structured output with rent adjustments, performance flags, market insights, and recommendations\n\nUse the Calculator Tool for any financial calculations needed."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "ee4a0d40-e840-40f6-b261-471c2bdc863c",
"name": "OpenAI Model - Main",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3344,
848
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "gpt-4o"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "3384d008-7f1e-4a69-8c2e-1fde5e410885",
"name": "Structured Output - Rent Recommendations",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
4640,
864
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"rentAdjustments\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"propertyId\": {\"type\": \"string\"},\n \"unitId\": {\"type\": \"string\"},\n \"currentRent\": {\"type\": \"number\"},\n \"recommendedRent\": {\"type\": \"number\"},\n \"adjustmentPercentage\": {\"type\": \"number\"}\n }\n }\n },\n \"performanceFlags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"propertyId\": {\"type\": \"string\"},\n \"unitId\": {\"type\": \"string\"},\n \"status\": {\"type\": \"string\"},\n \"performanceScore\": {\"type\": \"number\"},\n \"reason\": {\"type\": \"string\"}\n }\n }\n },\n \"recommendations\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"propertyId\": {\"type\": \"string\"},\n \"recommendation\": {\"type\": \"string\"},\n \"priority\": {\"type\": \"string\"},\n \"estimatedImpact\": {\"type\": \"string\"}\n }\n }\n }\n }\n}"
},
"typeVersion": 1.3
},
{
"id": "2f442430-76e4-4ec8-9e1f-bacbd3a46e20",
"name": "Calculator Tool",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
3472,
848
],
"parameters": {},
"typeVersion": 1
},
{
"id": "4dcc6aac-c556-4a15-891a-a94f0bbf98bc",
"name": "Performance Analysis Agent Tool",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
3600,
848
],
"parameters": {
"text": "={{ $fromAI('propertyData', 'Property data to analyze including rent rolls, costs, utilities, and mortgage info', 'json') }}",
"options": {
"systemMessage": "You are a performance analysis specialist for real estate properties.\n\nYour task is to:\n1. Analyze the provided property data including rent rolls, operating costs, utilities, and mortgage schedules\n2. Calculate key performance metrics: net operating income (NOI), cash flow, occupancy rates, cost ratios\n3. Identify over-performing units (high NOI, low vacancy, efficient cost management)\n4. Identify under-performing units (low NOI, high vacancy, excessive costs)\n5. Calculate performance scores for each unit (0-1 scale)\n6. Return structured analysis with performance classifications and scores"
},
"hasOutputParser": true,
"toolDescription": "Analyzes property performance metrics including rent rolls, operating costs, utilities, and mortgage schedules to identify over-performing and under-performing units"
},
"typeVersion": 3
},
{
"id": "b29fe195-9c24-45fd-aff7-922ad929d68b",
"name": "OpenAI Model - Performance",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3504,
1072
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "gpt-4o"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "a9efc999-5f13-4e74-8f47-cee6fda09dc4",
"name": "Structured Output - Performance Metrics",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
3680,
1056
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"performanceMetrics\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"propertyId\": {\"type\": \"string\"},\n \"unitId\": {\"type\": \"string\"},\n \"noi\": {\"type\": \"number\"},\n \"cashFlow\": {\"type\": \"number\"},\n \"occupancyRate\": {\"type\": \"number\"},\n \"costRatio\": {\"type\": \"number\"},\n \"performanceScore\": {\"type\": \"number\"},\n \"classification\": {\"type\": \"string\"}\n }\n }\n }\n }\n}"
},
"typeVersion": 1.3
},
{
"id": "8be60941-8e9c-492f-af78-f91f976d7a52",
"name": "Recommendation Generator Agent Tool",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
3888,
848
],
"parameters": {
"text": "={{ $fromAI('analysisData', 'Performance analysis and rent adjustment data', 'json') }}",
"options": {
"systemMessage": "You are a real estate advisory specialist generating actionable recommendations.\n\nYour task is to:\n1. Review the performance analysis and rent adjustment predictions\n2. Generate specific, actionable recommendations for property managers\n3. Prioritize recommendations based on potential financial impact\n4. Include recommendations for: rent adjustments, cost reduction opportunities, maintenance priorities, marketing strategies, tenant retention\n5. Estimate the financial impact of each recommendation\n6. Return structured recommendations with priority levels (High, Medium, Low)"
},
"hasOutputParser": true,
"toolDescription": "Generates actionable recommendations for property managers and investors based on performance analysis and rent optimization data"
},
"typeVersion": 3
},
{
"id": "07799825-3709-4a20-8fbc-aef94bba7ed9",
"name": "OpenAI Model - Recommendations",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
3920,
992
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "gpt-4o"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "d8d49d40-7e97-4d51-b092-ea056e33b8e1",
"name": "Structured Output - Recommendations",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
4064,
1056
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "e3d55f4b-6eaf-4506-8b0a-ca3afde9f370",
"name": "Calculate Performance Metrics",
"type": "n8n-nodes-base.code",
"position": [
5920,
432
],
"parameters": {
"jsCode": "const agentOutput = $input.first().json;\nconst threshold = 0.85;\n\nconst results = [];\n\nif (agentOutput.performanceFlags && Array.isArray(agentOutput.performanceFlags)) {\n for (const flag of agentOutput.performanceFlags) {\n const hasAlert = flag.performanceScore < threshold;\n \n results.push({\n json: {\n propertyId: flag.propertyId,\n unitId: flag.unitId,\n status: flag.status,\n performanceScore: flag.performanceScore,\n reason: flag.reason,\n hasAlert: hasAlert,\n rentAdjustments: agentOutput.rentAdjustments || [],\n recommendations: agentOutput.recommendations || [],\n timestamp: new Date().toISOString()\n }\n });\n }\n}\n\nreturn results;"
},
"typeVersion": 2
},
{
"id": "a618c641-9ae6-4c59-b486-06caeff8394d",
"name": "Format Dashboard Update",
"type": "n8n-nodes-base.set",
"position": [
6192,
432
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "propertyId",
"type": "string",
"value": "={{ $json.propertyId }}"
},
{
"id": "id-2",
"name": "unitId",
"type": "string",
"value": "={{ $json.unitId }}"
},
{
"id": "id-3",
"name": "performanceScore",
"type": "number",
"value": "={{ $json.performanceScore }}"
},
{
"id": "id-4",
"name": "status",
"type": "string",
"value": "={{ $json.status }}"
},
{
"id": "id-5",
"name": "rentAdjustments",
"type": "object",
"value": "={{ $json.rentAdjustments }}"
},
{
"id": "id-6",
"name": "recommendations",
"type": "array",
"value": "={{ $json.recommendations }}"
},
{
"id": "id-7",
"name": "lastUpdated",
"type": "string",
"value": "={{ $json.timestamp }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f2eae95c-8fa3-4129-82d5-5f52baf1c8fa",
"name": "Update Financial Dashboard",
"type": "n8n-nodes-base.httpRequest",
"position": [
6384,
432
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.dashboardApiUrl }}",
"method": "POST",
"options": {},
"jsonBody": "={{ $json }}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.3
},
{
"id": "82975e02-9dc9-4d1b-b764-e63f6ff4eac7",
"name": "Fetch Market Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
2672,
752
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.marketDataApiUrl }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "8f5272aa-4c73-4c95-944a-2e4893bf4059",
"name": "Summarize Market Trends",
"type": "n8n-nodes-base.summarize",
"position": [
2896,
848
],
"parameters": {
"options": {
"outputFormat": "singleItem"
},
"fieldsToSummarize": {
"values": [
{
"field": "averageRent",
"aggregation": "average"
},
{
"field": "medianRent",
"aggregation": "average"
},
{
"field": "vacancyRate",
"aggregation": "average"
},
{
"field": "marketGrowth",
"aggregation": "average"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "3f530f10-956b-4a6f-ab07-d0ca5c9e2404",
"name": "Route by Property Type",
"type": "n8n-nodes-base.switch",
"position": [
5024,
688
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Residential",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.propertyType }}",
"rightValue": "residential"
}
]
},
"renameOutput": true
},
{
"outputKey": "Commercial",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.propertyType }}",
"rightValue": "commercial"
}
]
},
"renameOutput": true
},
{
"outputKey": "Mixed-Use",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.propertyType }}",
"rightValue": "mixed-use"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.4
},
{
"id": "bcba18ea-fef4-4f99-b663-248894da3ba6",
"name": "Split Recommendations by Property",
"type": "n8n-nodes-base.splitOut",
"position": [
4864,
704
],
"parameters": {
"options": {},
"fieldToSplitOut": "rentAdjustments"
},
"typeVersion": 1
},
{
"id": "0824ee37-5a3a-4af6-a227-c4724f0bf1ca",
"name": "Calculate ROI Projections",
"type": "n8n-nodes-base.code",
"position": [
5472,
704
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const property = $input.item.json;\nconst currentRent = property.currentRent || 0;\nconst recommendedRent = property.recommendedRent || 0;\nconst adjustmentPercentage = property.adjustmentPercentage || 0;\n\n// Calculate 5-year ROI projection\nconst annualIncrease = (recommendedRent - currentRent) * 12;\nconst year1Revenue = recommendedRent * 12;\nconst year2Revenue = year1Revenue * 1.03; // 3% annual growth\nconst year3Revenue = year2Revenue * 1.03;\nconst year4Revenue = year3Revenue * 1.03;\nconst year5Revenue = year4Revenue * 1.03;\n\nconst totalProjectedRevenue = year1Revenue + year2Revenue + year3Revenue + year4Revenue + year5Revenue;\nconst currentRevenue5Year = currentRent * 12 * 5;\nconst additionalRevenue = totalProjectedRevenue - currentRevenue5Year;\n\nreturn {\n json: {\n ...property,\n roiProjection: {\n year1: year1Revenue,\n year2: year2Revenue,\n year3: year3Revenue,\n year4: year4Revenue,\n year5: year5Revenue,\n totalProjected: totalProjectedRevenue,\n additionalRevenue: additionalRevenue,\n roi: (additionalRevenue / currentRevenue5Year) * 100\n }\n }\n};"
},
"typeVersion": 2
},
{
"id": "aebd631b-7ed8-4602-9338-818f0c7c7547",
"name": "Generate Financial Reports",
"type": "n8n-nodes-base.code",
"position": [
5696,
704
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const data = $input.item.json;\n\nconst report = {\n propertyId: data.propertyId,\n unitId: data.unitId,\n reportType: data.reportType,\n propertyCategory: data.propertyCategory,\n analysisDate: data.analysisDate,\n currentMetrics: {\n currentRent: data.currentRent,\n occupancyRate: data.occupancyRate || 'N/A',\n noi: data.noi || 'N/A'\n },\n recommendations: {\n recommendedRent: data.recommendedRent,\n adjustmentPercentage: data.adjustmentPercentage,\n priority: data.priority || 'Medium'\n },\n roiProjection: data.roiProjection,\n marketContext: {\n marketAverageRent: data.marketAverageRent || 'N/A',\n marketVacancyRate: data.marketVacancyRate || 'N/A',\n competitivePosition: data.marketPosition || 'N/A'\n },\n summary: `Property ${data.propertyId} - Unit ${data.unitId}: ${data.reportType}. Recommended rent adjustment of ${data.adjustmentPercentage}% with projected 5-year ROI of ${data.roiProjection?.roi?.toFixed(2)}%.`\n};\n\nreturn { json: report };"
},
"typeVersion": 2
},
{
"id": "5f28722f-44f6-4c01-90bb-99df15b4f0d9",
"name": "Market Analysis Agent Tool",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
4176,
848
],
"parameters": {
"text": "={{ $fromAI('propertyData', 'Property and market data for analysis', 'json') }}",
"options": {
"systemMessage": "You are a real estate market analysis specialist.\n\nYour task is to:\n1. Analyze market trends including average rents, vacancy rates, and growth patterns\n2. Assess competitive positioning of each property relative to market benchmarks\n3. Identify market risks and opportunities\n4. Recommend pricing strategies based on market conditions\n5. Return structured market insights with positioning and strategy recommendations"
},
"hasOutputParser": true,
"toolDescription": "Analyzes market trends, competitive positioning, and pricing strategies for properties based on market data"
},
"typeVersion": 3
},
{
"id": "672859ec-00ac-4dde-ac95-20a10bced498",
"name": "OpenAI Model - Market",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
4208,
1056
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "gpt-4o"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "78f12b56-c46f-4c20-af0e-e827d0d947cf",
"name": "Structured Output - Market Analysis",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
4368,
1056
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"marketInsights\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"propertyId\": {\"type\": \"string\"},\n \"marketPosition\": {\"type\": \"string\"},\n \"competitiveAdvantage\": {\"type\": \"string\"},\n \"marketRisk\": {\"type\": \"string\"},\n \"pricingStrategy\": {\"type\": \"string\"}\n }\n }\n }\n }\n}"
},
"typeVersion": 1.3
},
{
"id": "5795d54c-34f4-43df-9806-5ba8eb59b27d",
"name": "Risk Assessment Workflow Tool",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
4480,
848
],
"parameters": {
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.riskAssessmentWorkflowId }}"
},
"description": "Evaluates financial and operational risks for properties"
},
"typeVersion": 2.2
},
{
"id": "6cb00e87-f3b3-4952-9fa5-1ea40bf4291e",
"name": "Aggregate Portfolio Metrics",
"type": "n8n-nodes-base.summarize",
"position": [
5920,
752
],
"parameters": {
"options": {
"outputFormat": "singleItem"
},
"fieldsToSummarize": {
"values": [
{},
{
"field": "roiProjection.roi",
"aggregation": "average"
},
{
"field": "roiProjection.additionalRevenue",
"aggregation": "sum"
},
{
"field": "priority"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "974ed710-8c03-4f43-b9cd-d92b7bc44521",
"name": "Enrich with Market Context",
"type": "n8n-nodes-base.set",
"position": [
3120,
800
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "marketAverageRent",
"type": "number",
"value": "={{ $('Summarize Market Trends').first().json.averageRent }}"
},
{
"id": "id-2",
"name": "marketMedianRent",
"type": "number",
"value": "={{ $('Summarize Market Trends').first().json.medianRent }}"
},
{
"id": "id-3",
"name": "marketVacancyRate",
"type": "number",
"value": "={{ $('Summarize Market Trends').first().json.vacancyRate }}"
},
{
"id": "id-4",
"name": "marketGrowthRate",
"type": "number",
"value": "={{ $('Summarize Market Trends').first().json.marketGrowth }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "6f2919ec-5c2c-4d62-8128-4f87f0a70827",
"name": "Format Residential Report",
"type": "n8n-nodes-base.set",
"position": [
5248,
512
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "reportType",
"type": "string",
"value": "Residential Property Analysis"
},
{
"id": "id-2",
"name": "propertyCategory",
"type": "string",
"value": "Residential"
},
{
"id": "id-3",
"name": "analysisDate",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "e2cde3cd-6536-44c8-8f5a-2a23931b3924",
"name": "Format Commercial Report",
"type": "n8n-nodes-base.set",
"position": [
5248,
704
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "reportType",
"type": "string",
"value": "Commercial Property Analysis"
},
{
"id": "id-2",
"name": "propertyCategory",
"type": "string",
"value": "Commercial"
},
{
"id": "id-3",
"name": "analysisDate",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "2a89b6d5-dd1a-4841-b988-403f744d30ad",
"name": "Format Mixed-Use Report",
"type": "n8n-nodes-base.set",
"position": [
5248,
896
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "reportType",
"type": "string",
"value": "Mixed-Use Property Analysis"
},
{
"id": "id-2",
"name": "propertyCategory",
"type": "string",
"value": "Mixed-Use"
},
{
"id": "id-3",
"name": "analysisDate",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "c1e7dfdc-fb78-4248-a818-b984aaa60dc0",
"name": "Send a message",
"type": "n8n-nodes-base.gmail",
"position": [
6160,
752
],
"parameters": {
"options": {}
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "3338b790-3394-4e5f-a1cc-0935b4560218",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
3648,
-160
],
"parameters": {
"color": 6,
"width": 592,
"height": 304,
"content": "## Prerequisites\nNVIDIA API access, OpenAI API key, real estate data API subscriptions \n## Use Cases\nMulti-property portfolio analysis, acquisition opportunity screening.\n## Customization\nAdjust investment criteria thresholds, add custom financial metrics \n## Benefits\nReduces analysis time by 90%, evaluates unlimited properties simultaneously "
},
"typeVersion": 1
},
{
"id": "d15c0988-7e7b-4fec-b31a-c2301558f96f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
3040,
-96
],
"parameters": {
"width": 512,
"height": 224,
"content": "## Setup Steps\n1. Configure real estate API credentials (Zillow/Realtor.com) \n2. Add market data API keys for local statistics and demographics\n3. Input NVIDIA API keys for all OpenAI Model nodes \n4. Set OpenAI API key in Team Collaboration Agent/Orchestrator\n5. Configure Calculator Tool parameters for financial projections\n6. Connect Google Sheets and specify portfolio tracking spreadsheet ID\n7. Set up Gmail credentials and specify recipient addresses for reports"
},
"typeVersion": 1
},
{
"id": "72b543bf-152e-4e50-aadb-4bbd74ced115",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1952,
-112
],
"parameters": {
"width": 992,
"height": 240,
"content": "## How It Works\nThis workflow automates comprehensive real estate investment analysis by orchestrating specialized AI agents to evaluate property data, market trends, and financial metrics. Designed for real estate investors, portfolio managers, and property analysts managing multiple properties or evaluating acquisition opportunities, it eliminates the manual research and analysis that typically requires days of work across multiple data sources. The system aggregates data from real estate APIs, market databases, and local statistics, then deploys specialized agents: performance analysis evaluates ROI and cash flow, recommendation engines identify optimal properties, market analysis assesses location trends, sentiment analysis mines reviews and local feedback, and workflow tools calculate financial projections. An orchestrator coordinates these agents to generate consolidated investment reports with property rankings, risk assessments, and portfolio recommendations. Results populate Google Sheets dashboards and trigger email notifications, transforming weeks of analysis into automated insights delivered in hours."
},
"typeVersion": 1
},
{
"id": "0af39d69-af20-4deb-92f0-001d0cecaa5e",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3312,
160
],
"parameters": {
"color": 7,
"width": 544,
"height": 1200,
"content": "## AI-Powered Performance Analysis\n**Why:** Automated evaluation of cap rates, cash-on-cash returns, and appreciation potential identifies opportunities faster than manual spreadsheet analysis across hundreds of properties."
},
"typeVersion": 1
},
{
"id": "e0b4ea56-ad1d-4e15-a6c9-147511a52b34",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1952,
160
],
"parameters": {
"color": 7,
"width": 1328,
"height": 1184,
"content": "## Multi-Source Property Data Aggregation\n**Why:** Comprehensive data collection from MLS listings, market databases, and local statistics ensures analysis is based on complete, current information rather than fragmented sources."
},
"typeVersion": 1
},
{
"id": "723b3672-67ea-4103-a8e8-c2291e5c6d81",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
3888,
160
],
"parameters": {
"color": 7,
"width": 864,
"height": 1200,
"content": "## Market Sentiment & Trend Assessment\n**Why:** Natural language processing of reviews, news, and demographic data reveals qualitative insights that traditional metrics miss, predicting neighborhood trajectories."
},
"typeVersion": 1
},
{
"id": "eee88683-730b-4504-b2aa-e92f3c86acf6",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
4800,
144
],
"parameters": {
"color": 7,
"width": 1712,
"height": 1072,
"content": "\n## Intelligent Property Recommendations\n**Why:** Machine learning ranks properties by alignment with investment criteria, filtering noise and surfacing optimal opportunities based on risk tolerance and goals."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "6902b409-f578-4782-95d4-e8922285d3dc",
"connections": {
"Calculator Tool": {
"ai_tool": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Fetch Rent Rolls": {
"main": [
[
{
"node": "Merge Property Data",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Fetch Market Data": {
"main": [
[
{
"node": "Summarize Market Trends",
"type": "main",
"index": 0
}
]
]
},
"Merge Property Data": {
"main": [
[
{
"node": "Aggregate All Properties",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Model - Main": {
"ai_languageModel": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Fetch Utilities Data": {
"main": [
[
{
"node": "Merge Property Data",
"type": "main",
"index": 2
}
]
]
},
"Fetch Operating Costs": {
"main": [
[
{
"node": "Merge Property Data",
"type": "main",
"index": 1
}
]
]
},
"OpenAI Model - Market": {
"ai_languageModel": [
[
{
"node": "Market Analysis Agent Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Route by Property Type": {
"main": [
[
{
"node": "Format Residential Report",
"type": "main",
"index": 0
}
],
[
{
"node": "Format Commercial Report",
"type": "main",
"index": 0
}
],
[
{
"node": "Format Mixed-Use Report",
"type": "main",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Fetch Rent Rolls",
"type": "main",
"index": 0
},
{
"node": "Fetch Operating Costs",
"type": "main",
"index": 0
},
{
"node": "Fetch Utilities Data",
"type": "main",
"index": 0
},
{
"node": "Fetch Mortgage Schedules",
"type": "main",
"index": 0
},
{
"node": "Fetch Market Data",
"type": "main",
"index": 0
}
]
]
},
"Format Dashboard Update": {
"main": [
[
{
"node": "Update Financial Dashboard",
"type": "main",
"index": 0
}
]
]
},
"Format Mixed-Use Report": {
"main": [
[
{
"node": "Calculate ROI Projections",
"type": "main",
"index": 0
}
]
]
},
"Rent Optimization Agent": {
"main": [
[
{
"node": "Calculate Performance Metrics",
"type": "main",
"index": 0
},
{
"node": "Split Recommendations by Property",
"type": "main",
"index": 0
}
]
]
},
"Summarize Market Trends": {
"main": [
[
{
"node": "Enrich with Market Context",
"type": "main",
"index": 0
}
]
]
},
"Aggregate All Properties": {
"main": [
[
{
"node": "Rent Optimization Agent",
"type": "main",
"index": 0
},
{
"node": "Enrich with Market Context",
"type": "main",
"index": 0
}
]
]
},
"Fetch Mortgage Schedules": {
"main": [
[
{
"node": "Merge Property Data",
"type": "main",
"index": 3
}
]
]
},
"Format Commercial Report": {
"main": [
[
{
"node": "Calculate ROI Projections",
"type": "main",
"index": 0
}
]
]
},
"Calculate ROI Projections": {
"main": [
[
{
"node": "Generate Financial Reports",
"type": "main",
"index": 0
}
]
]
},
"Format Residential Report": {
"main": [
[
{
"node": "Calculate ROI Projections",
"type": "main",
"index": 0
}
]
]
},
"Enrich with Market Context": {
"main": [
[
{
"node": "Rent Optimization Agent",
"type": "main",
"index": 0
}
]
]
},
"Generate Financial Reports": {
"main": [
[
{
"node": "Calculate Performance Metrics",
"type": "main",
"index": 0
},
{
"node": "Aggregate Portfolio Metrics",
"type": "main",
"index": 0
}
]
]
},
"Market Analysis Agent Tool": {
"ai_tool": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Model - Performance": {
"ai_languageModel": [
[
{
"node": "Performance Analysis Agent Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Aggregate Portfolio Metrics": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Calculate Performance Metrics": {
"main": [
[
{
"node": "Format Dashboard Update",
"type": "main",
"index": 0
}
]
]
},
"Risk Assessment Workflow Tool": {
"ai_tool": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Model - Recommendations": {
"ai_languageModel": [
[
{
"node": "Recommendation Generator Agent Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Performance Analysis Agent Tool": {
"ai_tool": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Split Recommendations by Property": {
"main": [
[
{
"node": "Route by Property Type",
"type": "main",
"index": 0
}
]
]
},
"Recommendation Generator Agent Tool": {
"ai_tool": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Structured Output - Market Analysis": {
"ai_outputParser": [
[
{
"node": "Market Analysis Agent Tool",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output - Recommendations": {
"ai_outputParser": [
[
{
"node": "Recommendation Generator Agent Tool",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output - Performance Metrics": {
"ai_outputParser": [
[
{
"node": "Performance Analysis Agent Tool",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output - Rent Recommendations": {
"ai_outputParser": [
[
{
"node": "Rent Optimization Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
gmailOAuth2openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates comprehensive real estate investment analysis by orchestrating specialized AI agents to evaluate property data, market trends, and financial metrics. Designed for real estate investors, portfolio managers, and property analysts managing multiple…
Source: https://n8n.io/workflows/12496/ — 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.
kisisel asistan. Uses toolWorkflow, toolHttpRequest, toolCalculator, toolThink. Scheduled trigger; 43 nodes.
This workflow automates end-to-end sustainability lifecycle management for corporate sustainability teams, ESG governance officers, and circular economy programme leads. It addresses the challenge of
This workflow automates end-to-end ESG (Environmental, Social, and Governance) sustainability reporting for enterprise sustainability teams, compliance officers, and green governance leads. It solves
This workflow automates end-to-end financial transaction processing for finance teams managing high-volume bank data. It eliminates manual reconciliation by intelligently classifying transactions, det
[](https://youtu.be/sKJAypXDTLA)