This workflow corresponds to n8n.io template #7504 — 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": "SvIdF4LUuyHYM2ii",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Multi-Agent Architecture Free Bootstrap Template for Beginners",
"tags": [],
"nodes": [
{
"id": "02b4083a-34a1-4d4f-8f7d-936633d5c3ac",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-416,
-16
],
"parameters": {},
"typeVersion": 1
},
{
"id": "405374aa-0fef-4384-9de8-4f996ad880e9",
"name": "CEO Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
320,
-16
],
"parameters": {
"text": "=Company: {{ $json.Company }}\nProducts/Focus: {{ $json.Product }}\nTarget customers: {{ $json.Audience }}\nSale window: {{ $json['Sale window'] }}\nPrimary channels: {{ $json['Primary channels'] }}\nSuccess metrics: {{ $json['Success metrics'] }}\n\nCreate a practical plan for the upcoming sales season. Keep to the structure and JSON schema in the system prompt.",
"options": {
"systemMessage": "You are the CEO orchestrating three tool agents (departments) to produce a concise sales-season plan.\n\nTOOLS AVAILABLE\n1) MarketingDept \u2013 campaign ideas, channels, content calendar.\n2) OpsDept \u2013 inventory & staffing readiness, fulfillment steps, key risks.\n3) FinanceDept \u2013 pricing/discounts, budget split, targets.\n\nWORKFLOW\n- Read the user brief.\n- Call each tool once with only the info they need.\n- Merge their outputs into a single, consistent plan.\n- Resolve conflicts briefly (prefer feasibility over ambition).\n- Keep it action-oriented and short.\n\nFINAL OUTPUT (markdown sections)\n# Summary\n# Timeline (key dates)\n# Marketing Plan (top 3 campaigns, channels)\n# Operations Readiness (inventory, staffing, fulfillment)\n# Pricing & Budget (discounts, budget split, targets)\n# Risks & Mitigations\n# Next 5 Actions"
},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "4d1ed7fa-a106-4a5b-ae0e-67fb8fe99b85",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
32,
208
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "de8475ee-2b6a-43ec-85ce-a620996901b2",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
-192,
-16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a0237546-a7a6-4f52-b4c9-078f7ef6879f",
"name": "Company",
"type": "string",
"value": "AutomateWithMe"
},
{
"id": "e6fbc3e4-d59e-4ed3-9eac-553d2662bdec",
"name": "Product",
"type": "string",
"value": "Automation Services"
},
{
"id": "bc72c647-c2d9-462f-95da-c3889ca30d20",
"name": "Sale window",
"type": "string",
"value": "Aug to December annually"
},
{
"id": "663cc17d-b979-4b3c-99c9-d82f4ccdb03b",
"name": "Primary channels",
"type": "string",
"value": "Amazon, Ebay"
},
{
"id": "bb9172a7-38e3-4dfb-a181-991257f1d454",
"name": "Success metrics",
"type": "string",
"value": "Revenue"
},
{
"id": "65f42033-edef-4046-9d91-25107d52c81d",
"name": "Audience",
"type": "string",
"value": "SME's owner (CEO, CFO, CIO)"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6b954de8-5ad2-417f-ad36-9c483abd88ae",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
256,
416
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "92c5d1f4-7a87-4cbd-aff2-b6263dffaa29",
"name": "OpenAI Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
576,
416
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "740bc190-ca94-4dd2-b25a-a6b433b58c3f",
"name": "Marketing Agent",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
160,
208
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {},
"toolDescription": "You are the Marketing Department. From the brief, propose practical campaigns.\n\nOUTPUT (JSON):\n{\n \"campaigns\":[\n {\"name\":\"\",\"channel\":\"\",\"audience\":\"\",\"message\":\"\",\"kpi\":\"\"}\n ],\n \"content_calendar\":[\n {\"date\":\"YYYY-MM-DD\",\"channel\":\"\",\"asset\":\"\",\"cta\":\"\"}\n ],\n \"notes\":\"\"\n}\n\nRULES\n- Max 3 campaigns, each tied to 1\u20132 channels.\n- KPIs: choose 1 per campaign (e.g., CTR, leads, revenue).\n- Be realistic with the given constraints and dates."
},
"typeVersion": 2.2
},
{
"id": "dca51d1c-5347-4756-b002-193c4ebd3eab",
"name": "Operations Agent",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
480,
208
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {},
"toolDescription": "You are Operations. Assess readiness and outline what must happen to deliver.\n\nOUTPUT (JSON):\n{\n \"inventory_note\":\"\",\n \"staffing_plan\":[{\"team\":\"\",\"need\":\"\",\"when\":\"\"}],\n \"fulfillment_steps\":[{\"step\":\"\",\"owner\":\"\",\"due\":\"\"}],\n \"operational_risks\":[{\"risk\":\"\",\"mitigation\":\"\"}]\n}\n\nRULES\n- Keep it feasible: call out shortages or bottlenecks.\n- Prefer simple, sequenced steps with clear owners and due dates."
},
"typeVersion": 2.2
},
{
"id": "b3f5c3e9-a26f-4281-916a-a0bc92f96ead",
"name": "Finance Agent",
"type": "@n8n/n8n-nodes-langchain.agentTool",
"position": [
800,
208
],
"parameters": {
"text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
"options": {},
"toolDescription": "You are Finance. Recommend discounts, budget split, and targets.\n\nOUTPUT (JSON):\n{\n \"discounts\":[{\"product\":\"\",\"type\":\"% or fixed\",\"value\":0,\"notes\":\"\"}],\n \"budget_split\":{\"marketing\":0,\"ops\":0,\"contingency\":0},\n \"targets\":{\"revenue\":0,\"roi\":0,\"gross_margin_pct\":0},\n \"notes\":\"\"\n}\n\nRULES\n- Keep totals sensible and within constraints.\n- Tie discounts to campaigns and inventory realities."
},
"typeVersion": 2.2
},
{
"id": "6812da19-e35c-4dad-8fee-be01340430b9",
"name": "OpenAI Chat Model3",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
896,
416
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "c73b0250-c41d-40ae-be5f-9e97098b7afe",
"name": "Create document file",
"type": "n8n-nodes-base.httpRequest",
"position": [
1424,
-16
],
"parameters": {
"url": "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true",
"body": "=--foo_bar_baz\nContent-Type: application/json; charset=UTF-8\n\n{\n \"name\": \"Company Sale Plan {{ $today.format('yyyy-MM-dd-hhmm') }}\",\n \"mimeType\": \"application/vnd.google-apps.document\",\n \"parents\": [\"{{ $json['Drive Folder ID'] }}\"]\n}\n\n--foo_bar_baz\nContent-Type: text/markdown; charset=UTF-8\n\n{{ $json['Document Content'] }}\n--foo_bar_baz--",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"contentType": "raw",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"rawContentType": "multipart/related; boundary=foo_bar_baz",
"queryParameters": {
"parameters": [
{
"name": "uploadType",
"value": "multipart"
},
{
"name": "supportsAllDrives",
"value": "true"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "boundary",
"value": "foo_bar_baz"
}
]
},
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "729829e7-565b-43b5-ab77-a78ea976061d",
"name": "Configure metadata ",
"type": "n8n-nodes-base.set",
"position": [
1200,
-16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1ff0b9a4-7d60-44ec-b047-e49252f1ace9",
"name": "Drive Folder ID",
"type": "string",
"value": "1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI"
},
{
"id": "75ab39ab-44d0-4272-bceb-fe63bd72a5ba",
"name": "Document Content",
"type": "string",
"value": "={{ $json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "576f221c-2766-4e28-b3b4-69d9f1d25b39",
"name": "Upload a file",
"type": "n8n-nodes-base.slack",
"position": [
1872,
-16
],
"parameters": {
"options": {
"channelId": "C097VAKKPUP",
"initialComment": "\ud83d\udcc4 The Sales Season Plan is ready! Please find the generated PDF file attached for review and next steps. "
},
"resource": "file",
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "ad6e678d-000f-47cb-882b-0c7aca453800",
"name": "Convert to PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
1648,
-16
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "2dd2914f-68e5-4a84-a952-0fca32a2b3e4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1664,
-992
],
"parameters": {
"width": 1072,
"height": 2032,
"content": "# Multi-Agent Architecture Free Bootstrap Template for Beginners\n[](https://www.youtube.com/watch?v=BfMY2jFJR9k)\n\n_Free template to learn and reuse a multi-agent architecture in n8n. The company metaphor: a **CEO (orchestrator)** delegates to **Marketing, Operations, Finance** to produce a short sales-season plan, export it to PDF, and share it._\n\n## **Who\u2019s it for**\n- Builders who want a **clear, minimal pattern** for multi-agent orchestration in n8n. \n- Teams demoing/teaching agent collaboration with **one coordinator + three specialists**. \n- Anyone needing a **repeatable template** to generate plans from multiple \u201cdepartments\u201d.\n\n## **How it works / What it does**\n1. **Trigger (Manual)** \u2014 Click *Execute workflow* to start.\n2. **Edit Fields** \u2014 Provide brief inputs (company, products, dates, constraints, channels, goals).\n3. **CEO Agent (Orchestrator)** \u2014 Reads the brief, calls 3 tool agents once, merges results, resolves conflicts.\n4. **Marketing Agent** \u2014 Proposes top campaigns + channels + content calendar.\n5. **Operations Agent** \u2014 Outlines inventory/staffing readiness, fulfillment steps, risks.\n6. **Finance Agent** \u2014 Suggests pricing/discounts, budget split, targets.\n7. **Compose Document** \u2014 CEO produces Markdown; node converts to Google Doc \u2192 **PDF**.\n8. **Share** \u2014 Upload the PDF to Slack (or Drive) for review.\n\n**Outputs**\n- **Markdown plan** with sections (Summary, Timeline, Marketing, Ops, Pricing, Risks, Next Actions). \n- **Compact JSON** for automation (campaigns, budget, dates, actions). \n- **PDF** file for stakeholders.\n\n## **How to set up**\n1. **Add credentials**\n - OpenAI (or your LLM provider) for all agents.\n - Google (Drive/Docs) to create the document and export PDF.\n - Slack (optional) to upload/share the PDF.\n2. **Map nodes (suggested)**\n - **When clicking \u2018Execute workflow\u2019** \u2192 **Edit Fields** (form with: `company`, `products`, `audience`, `start_date`, `end_date`, `channels`, `constraints`, `metrics`).\n - **CEO Agent** (AI Tool Node) \u2192 calls **Marketing Agent**, **Operations Agent**, **Finance Agent** (AI Tool Nodes).\n - **Configure metadata** (doc title from company + window).\n - **Create document file** (Google Docs API) with CEO Markdown.\n - **Convert to PDF** (export).\n - **Upload a file** (Slack) to share.\n3. **Prompts (drop-in)**\n - **CEO (system)**: orchestrate 3 tools; request concise JSON+Markdown; merge & resolve; output sections + JSON.\n - **Marketing / Operations / Finance (system)**: each returns a small JSON per its scope (campaigns/calendar; staffing/steps/risks; discounts/budget/targets).\n4. **Test** \u2014 Run once; verify the PDF and Slack message.\n\n## **Requirements**\n- n8n (current version with **AI Tool Node**). \n- LLM credentials (e.g., OpenAI). \n- Google credentials for Docs/Drive (to create & export). \n- Optional Slack bot token for file uploads.\n\n## **How to customize the workflow**\n- **Swap roles**: Replace departments (e.g., Product, Legal, Support) or add more tool agents.\n- **Change outputs**: Export to **DOCX/HTML/Notion**; add a cover page; attach brand styles.\n- **Approval step**: Insert **Slack \u201cSend & Wait\u201d** before PDF generation for review/edits.\n- **Data grounding**: Add RAG (Sheets/DB/Docs) so agents cite inventory, pricing, or past campaign KPIs.\n- **Automation JSON**: Extend the schema to match your CRM/PM tool and push `next_actions` into Jira/Asana.\n- **Scheduling**: Replace manual trigger with a **cron** (weekly/monthly planning).\n- **Localization**: Add a Translation agent or set language via input field.\n- **Guardrails**: Add length limits, cost caps (max tokens), and validation on agent JSON."
},
"typeVersion": 1
},
{
"id": "e6e8f2b1-be21-4ba4-99a6-69348a05bfbf",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-480,
-288
],
"parameters": {
"width": 272,
"height": 208,
"content": "### 1) Start the run (Manual Trigger)\n**Node:** *When clicking \u2018Execute workflow\u2019* \n**What happens:** You kick off a single-run demo. Manual start keeps the flow predictable while you learn. \n**Why it matters:** Lets you iterate on prompts/fields quickly before adding a schedule or webhook."
},
"typeVersion": 1
},
{
"id": "e13b861b-764d-44d0-834a-84151c860a21",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
144
],
"parameters": {
"width": 272,
"height": 304,
"content": "### 2) Collect the brief (Edit Fields)\n**Node:** *Edit Fields* \n**Inputs to capture (examples):**\n- `company`, `products`, `audience`\n- `start_date`, `end_date`\n- `channels` (e.g., \u201cemail, social, search\u201d)\n- `constraints` (budget cap, stock limits, compliance)\n- `metrics` (revenue, ROI, CAC, leads) \n**Tips:** validate dates and keep text short; agents will elaborate."
},
"typeVersion": 1
},
{
"id": "1179b80c-e42a-4605-96b8-88e86ca221e2",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-352
],
"parameters": {
"width": 512,
"height": 288,
"content": "### 3) Orchestrate like a CEO (CEO Agent)\n**Node:** *AI Tool Node (CEO Agent)* \n**Role:** Orchestrator. It reads the brief, assigns tasks to 3 department agents **once each**, then merges results. \n**Key behavior to configure:**\n- Provide a **system prompt** that defines: goals, tools available, expected sections, JSON schema, and \u201ccall each tool exactly once\u201d. \n- Instruct it to **resolve conflicts** (e.g., finance budget vs. marketing ambition) by preferring feasibility.\n\n**Expected CEO outputs:**\n- **Markdown Plan** with sections: Summary, Timeline, Marketing, Ops, Pricing, Risks, Next Actions. "
},
"typeVersion": 1
},
{
"id": "43d1f02b-8e90-46a4-abb5-88c861a3be74",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
560
],
"parameters": {
"color": 3,
"width": 320,
"height": 336,
"content": "### 4) Call Tool #1: Marketing Department\n**Node:** *AI Tool Node (Marketing Agent)* \n**Input from CEO:** Slimmed brief + required fields (audience, channels, dates, constraints). \n**Output (JSON):**\n```json\n{\n \"campaigns\":[{\"name\":\"\",\"channel\":\"\",\"message\":\"\",\"kpi\":\"\"}],\n \"content_calendar\":[{\"date\":\"YYYY-MM-DD\",\"channel\":\"\",\"asset\":\"\",\"cta\":\"\"}],\n \"notes\":\"\"\n}\n```\n**What to teach learners:** Limit to 2\u20133 campaigns; pick 1 KPI per campaign; keep calendar realistic."
},
"typeVersion": 1
},
{
"id": "254915c0-cf61-4014-adaf-51300797f217",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
560
],
"parameters": {
"color": 5,
"width": 320,
"height": 336,
"content": "### 5) Call Tool #2: Operations Department\n**Node:** *AI Tool Node (Operations Agent)* \n**Input from CEO:** Products, window, constraints (inventory/staff). \n**Output (JSON):**\n```json\n{\n \"inventory_note\":\"\",\n \"staffing_plan\":[{\"team\":\"\",\"need\":\"\",\"when\":\"\"}],\n \"fulfillment_steps\":[{\"step\":\"\",\"owner\":\"\",\"due\":\"\"}],\n \"operational_risks\":[{\"risk\":\"\",\"mitigation\":\"\"}]\n}\n```\n**Learning:** Prefer checklists with owners/due dates; call out bottlenecks early."
},
"typeVersion": 1
},
{
"id": "d4947eba-5a53-4593-941a-b864911b6761",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
848,
560
],
"parameters": {
"color": 4,
"width": 320,
"height": 336,
"content": "### 6) Call Tool #3: Finance Department\n**Node:** *AI Tool Node (Finance Agent)* \n**Input from CEO:** Campaign ideas + ops constraints. \n**Output (JSON):**\n```json\n{\n \"discounts\":[{\"product\":\"\",\"type\":\"%|fixed\",\"value\":0,\"notes\":\"\"}],\n \"budget_split\":{\"marketing\":0,\"ops\":0,\"contingency\":0},\n \"targets\":{\"revenue\":0,\"roi\":0,\"gross_margin_pct\":0},\n \"notes\":\"\"\n}\n```\n**Learning:** Tie discounts to campaigns and stock positions; keep budget totals sensible."
},
"typeVersion": 1
},
{
"id": "c545990f-2d67-4fdb-888c-733da6043c2e",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
-352
],
"parameters": {
"width": 448,
"height": 272,
"content": "### 7) Merge & reconcile (inside CEO Agent)\n**Node:** *CEO Agent continues* \n**What happens:** CEO pulls the 3 JSONs, resolves conflicts (e.g., campaign count vs. budget), and produces:\n- Final **Markdown plan** (human-readable) \n- Final **JSON payload** (machine-usable) \n**Tip:** Ask CEO to output **both artifacts** in a single response under distinct keys (e.g., `plan_md`, `plan_json`)."
},
"typeVersion": 1
},
{
"id": "3cb78770-a21f-488f-b256-c0d78d9316bc",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
-464
],
"parameters": {
"width": 672,
"height": 400,
"content": "#### Set document metadata (Configure metadata)\n**Node:** *Edit Fields / Set* \n**What you set:** Document title, author, tags. \n**Example title:** `{{ $json.plan_json.company }} \u2014 Sales Season Plan ({{ $json.plan_json.window.start }} \u2192 {{ $json.plan_json.window.end }})` \n**Learning:** Keep naming deterministic for easy filing/search.\n\n#### Create the source document (Create document file)\n**Node:** *HTTP Request: Google Docs create* or n8n\u2019s Google Docs node \n**Input:** `plan_md` from CEO \u2192 convert Markdown \u2192 HTML (or use a Markdown-to-HTML helper) \u2192 write into a new Google Doc. \n**Learning:** Markdown-in \u2192 Doc-out keeps content editable by humans.\n\n#### Export to PDF (Convert to PDF)\n**Node:** *HTTP Request: Google export* or Google Drive \u201cdownload file\u201d \n**What happens:** The Doc is exported to PDF for sharing. \n**Tip:** Save the PDF filename with the same deterministic title."
},
"typeVersion": 1
},
{
"id": "8d9d8432-6295-461b-ae94-709fdd59950e",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
-96
],
"parameters": {
"width": 688,
"height": 240,
"content": "### 11) Share the artifact (Upload a file)\n**Node:** *Slack: upload file* (or Drive/Email) \n**Message (example):**\n```\n\ud83d\udcc4 Sales Season Plan is ready\nCompany: {{ $json.plan_json.company }}\nWindow: {{ $json.plan_json.window.start }} \u2192 {{ $json.plan_json.window.end }}\nThe PDF is attached. Please review and add comments.\n```\n**Learning:** Always include context (company/window) in the post."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "abf7f2d5-968e-4883-a52e-c0abefbb3da4",
"connections": {
"CEO Agent": {
"main": [
[
{
"node": "Configure metadata ",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "CEO Agent",
"type": "main",
"index": 0
}
]
]
},
"Finance Agent": {
"ai_tool": [
[
{
"node": "CEO Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Upload a file": {
"main": [
[]
]
},
"Convert to PDF": {
"main": [
[
{
"node": "Upload a file",
"type": "main",
"index": 0
}
]
]
},
"Marketing Agent": {
"ai_tool": [
[
{
"node": "CEO Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Operations Agent": {
"ai_tool": [
[
{
"node": "CEO Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "CEO Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Marketing Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model2": {
"ai_languageModel": [
[
{
"node": "Operations Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model3": {
"ai_languageModel": [
[
{
"node": "Finance Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Configure metadata ": {
"main": [
[
{
"node": "Create document file",
"type": "main",
"index": 0
}
]
]
},
"Create document file": {
"main": [
[
{
"node": "Convert to PDF",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"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.
googleDriveOAuth2ApiopenAiApislackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
[](https://www.youtube.com/watch?v=BfMY2jFJR9k)
Source: https://n8n.io/workflows/7504/ — 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.
Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.
Perfect for educators, consultants, and content creators who record sessions and want to repurpose them into social media posts, videos, and images without manual work. Chat interface triggers the AI
[](https://www.youtube.com/watch?v=9Kn583UJlqY) > This workflow demos how to use Decodo Scraper API to crawl any public web page (headless JS, device emulation: mobile/desktop/tablet), extract stru
> A 100% free n8n workflow for generating professionally formatted PDFs without relying on external libraries or paid converters. It uses OpenAI to create Markdown content, Google Docs to format an
Decodo is a powerful public data access platform offering managed web scraping APIs and proxy infrastructure to collect structured web data at scale. It handles proxies, anti-bot protection, JavaScrip