This workflow corresponds to n8n.io template #13553 — we link there as the canonical source.
This workflow follows the Agent → Form Trigger 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": "jjRcrAkkKvf_si_u4Exzi",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "PRD Automation Workflow",
"tags": [],
"nodes": [
{
"id": "8416a2b8-492e-49cd-9826-6454b3b1eb6b",
"name": "Slack Trigger",
"type": "n8n-nodes-base.slackTrigger",
"position": [
0,
1440
],
"parameters": {
"options": {},
"trigger": [
"message",
"app_mention"
],
"channelId": {
"__rl": true,
"mode": "list",
"value": "C0ADZ8J1E78",
"cachedResultName": "product-discussion"
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "285a8258-eb3e-4cec-a882-41417f573d0a",
"name": "Customer Form Trigger",
"type": "n8n-nodes-base.formTrigger",
"position": [
0,
1248
],
"parameters": {
"options": {
"appendAttribution": false
},
"formTitle": "Customer Feedback Form",
"formFields": {
"values": [
{
"fieldLabel": "Name"
},
{
"fieldType": "email",
"fieldLabel": "Email"
},
{
"fieldType": "textarea",
"fieldLabel": "Feature Request"
},
{
"fieldType": "dropdown",
"fieldLabel": "Priority",
"fieldOptions": {
"values": [
{
"option": "High"
},
{
"option": "Medium"
},
{
"option": "Low"
}
]
}
},
{
"fieldType": "textarea",
"fieldLabel": "Additional Comments"
}
]
}
},
"typeVersion": 2.5
},
{
"id": "df6463c0-8c17-4f98-99c3-6328149ecef5",
"name": "Fetch Platform Analytics",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
688
],
"parameters": {
"url": "<__PLACEHOLDER_VALUE__your_analytics_api_endpoint__>",
"options": {}
},
"typeVersion": 4.4
},
{
"id": "775f4121-db6d-437a-bed6-30af6fc1c801",
"name": "Get Zoom Recordings",
"type": "n8n-nodes-base.zoom",
"position": [
-224,
304
],
"parameters": {
"filters": {
"type": "scheduled"
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"zoomOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "caef8aaf-3785-4c7d-846f-26cf28c749ea",
"name": "Transcribe Zoom Audio",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
0,
304
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "562aed80-1828-4396-bf56-d146181cefcc",
"name": "Format Slack Data",
"type": "n8n-nodes-base.set",
"position": [
224,
1440
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Slack"
},
{
"id": "id-2",
"name": "message_text",
"type": "string",
"value": "={{ $json.text || $json.message }}"
},
{
"id": "id-4",
"name": "user",
"type": "string",
"value": "={{ $json.user || 'Unknown' }}"
},
{
"id": "id-5",
"name": "channel",
"type": "string",
"value": "={{ $json.channel || 'Unknown' }}"
},
{
"id": "id-6",
"name": "timestamp",
"type": "string",
"value": "={{ $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d15d9fe7-2cad-4007-a03f-7271e6a35608",
"name": "Format Form Data",
"type": "n8n-nodes-base.set",
"position": [
224,
1248
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Customer Form"
},
{
"id": "id-2",
"name": "name",
"type": "string",
"value": "={{ $json.Name }}"
},
{
"id": "id-3",
"name": "email",
"type": "string",
"value": "={{ $json.Email }}"
},
{
"id": "id-4",
"name": "feature_request",
"type": "string",
"value": "={{ $json['Feature Request'] }}"
},
{
"id": "id-5",
"name": "priority",
"type": "string",
"value": "={{ $json.Priority }}"
},
{
"id": "id-6",
"name": "comments",
"type": "string",
"value": "={{ $json['Additional Comments'] }}"
},
{
"id": "id-7",
"name": "timestamp",
"type": "string",
"value": "={{ $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8ee83d86-424d-4fe7-9fca-cf1f0ee21998",
"name": "Format Zoom Data",
"type": "n8n-nodes-base.set",
"position": [
224,
304
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Zoom Recording"
},
{
"id": "id-2",
"name": "transcript",
"type": "string",
"value": "={{ $json.text || $json.transcript }}"
},
{
"id": "id-3",
"name": "meeting_topic",
"type": "string",
"value": "={{ $json.topic || 'Meeting' }}"
},
{
"id": "id-4",
"name": "duration",
"type": "number",
"value": "={{ $json.duration || 0 }}"
},
{
"id": "id-5",
"name": "timestamp",
"type": "string",
"value": "={{ $json.start_time || $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8aa1ba55-4d10-480a-8774-0697b9acca16",
"name": "Format Platform Data",
"type": "n8n-nodes-base.set",
"position": [
224,
688
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Platform Analytics"
},
{
"id": "id-2",
"name": "metrics",
"type": "object",
"value": "={{ $json }}"
},
{
"id": "id-3",
"name": "timestamp",
"type": "string",
"value": "={{ $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "bf05cab1-7252-4577-adaf-6f03a60c12a9",
"name": "Merge All Data Sources",
"type": "n8n-nodes-base.merge",
"position": [
448,
928
],
"parameters": {
"numberInputs": 4
},
"typeVersion": 3.2
},
{
"id": "90a6aea0-78da-4a9a-a80e-57503f0c1d8e",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
688,
1296
],
"parameters": {
"model": {
"__rl": true,
"mode": "id",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "624465c6-b65d-4154-8d59-01e6832f4d44",
"name": "Structured PRD Output",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
816,
1296
],
"parameters": {
"jsonSchemaExample": "{\n\t\"purpose\": \"Clear statement of the feature/change purpose\",\n\t\"user_problem\": \"The specific problem users are facing\",\n\t\"user_value\": \"The value this provides to users\",\n\t\"target_users\": \"Who will benefit from this (e.g., heavy podcast listeners, mobile users)\",\n\t\"user_feedback\": [\"feedback quote 1\", \"feedback quote 2\"],\n\t\"assumptions\": [\"assumption 1\", \"assumption 2\"],\n\t\"out_of_scope\": [\"item 1 not included\", \"item 2 not included\"],\n\t\"acceptance_criteria\": [\"criteria 1\", \"criteria 2\"],\n\t\"next_steps\": [\"action 1\", \"action 2\"]\n}"
},
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "9a3721fa-e038-455f-a290-79576e5629ce",
"name": "Update PRD Document",
"type": "n8n-nodes-base.googleDocs",
"position": [
1024,
1072
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "={{ '\\n\\n=== PRD UPDATE ' + $now.toISO() + ' ===\\n\\n**Purpose:** ' + $json.output.purpose + '\\n\\n**User Problem:** ' + $json.output.user_problem + '\\n\\n**User Value:** ' + $json.output.user_value + '\\n\\n**Target Users:** ' + $json.output.target_users + '\\n\\n**User Feedback:**\\n' + $json.output.user_feedback.map(f => '- ' + f).join('\\n') + '\\n\\n**Assumptions:**\\n' + $json.output.assumptions.map(a => '- ' + a).join('\\n') + '\\n\\n**Out of Scope:**\\n' + $json.output.out_of_scope.map(o => '- ' + o).join('\\n') + '\\n\\n**Acceptance Criteria:**\\n' + $json.output.acceptance_criteria.map(c => '- ' + c).join('\\n') + '\\n\\n**Next Steps:**\\n' + $json.output.next_steps.map(s => '- ' + s).join('\\n') + '\\n\\n---\\n' }}",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "https://docs.google.com/document/d/1m-u2wUpA-J3RKir5ceeIqYnMfidbba1_dH8htNAw4QM/edit?usp=sharing"
},
"credentials": {
"googleDocsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "e535acb3-74d6-41ac-9bcf-3b1aaf86eb73",
"name": "Get Jira Comments",
"type": "n8n-nodes-base.jira",
"position": [
0,
496
],
"parameters": {
"options": {},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "b2573023-0beb-49ed-98ab-351ff67eb921",
"name": "Figma Comment Trigger",
"type": "n8n-nodes-base.figmaTrigger",
"position": [
0,
1056
],
"parameters": {
"teamId": "1599531319548962085",
"triggerOn": "fileUpdate"
},
"credentials": {
"figmaApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "599f8ef3-d044-41bc-988e-1b3ff0ba1f7d",
"name": "Get Zendesk Tickets",
"type": "n8n-nodes-base.zendesk",
"position": [
0,
864
],
"parameters": {
"options": {
"query": "tags:customer_complaints OR tags:complaint",
"status": "open"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"zendeskApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b2e86b51-db10-474d-aa18-d84f92e60824",
"name": "Format Jira Data",
"type": "n8n-nodes-base.set",
"position": [
224,
496
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Jira Comments"
},
{
"id": "id-2",
"name": "comment_text",
"type": "string",
"value": "={{ $json.body || $json.comment }}"
},
{
"id": "id-3",
"name": "issue_key",
"type": "string",
"value": "={{ $json.issueKey || 'Unknown' }}"
},
{
"id": "id-4",
"name": "author",
"type": "string",
"value": "={{ $json.author?.displayName || 'Unknown' }}"
},
{
"id": "id-5",
"name": "created",
"type": "string",
"value": "={{ $json.created || $now }}"
},
{
"id": "id-6",
"name": "timestamp",
"type": "string",
"value": "={{ $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "788cad02-d99a-42fc-94c5-e864421ce63c",
"name": "Format Figma Data",
"type": "n8n-nodes-base.set",
"position": [
224,
1056
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Figma Comments"
},
{
"id": "id-2",
"name": "comment_text",
"type": "string",
"value": "={{ $json.comment || $json.message }}"
},
{
"id": "id-3",
"name": "file_name",
"type": "string",
"value": "={{ $json.file_name || 'Unknown' }}"
},
{
"id": "id-4",
"name": "user",
"type": "string",
"value": "={{ $json.user?.handle || 'Unknown' }}"
},
{
"id": "id-5",
"name": "timestamp",
"type": "string",
"value": "={{ $json.created_at || $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "aab76ce9-d007-45a2-9a2e-a74868a7953c",
"name": "Format Zendesk Data",
"type": "n8n-nodes-base.set",
"position": [
224,
864
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "source",
"type": "string",
"value": "Zendesk Tickets"
},
{
"id": "id-2",
"name": "ticket_subject",
"type": "string",
"value": "={{ $json.subject || 'No subject' }}"
},
{
"id": "id-3",
"name": "ticket_description",
"type": "string",
"value": "={{ $json.description || 'No description' }}"
},
{
"id": "id-4",
"name": "ticket_id",
"type": "string",
"value": "={{ $json.id || 'Unknown' }}"
},
{
"id": "id-5",
"name": "status",
"type": "string",
"value": "={{ $json.status || 'Unknown' }}"
},
{
"id": "id-6",
"name": "priority",
"type": "string",
"value": "={{ $json.priority || 'Unknown' }}"
},
{
"id": "id-7",
"name": "created_at",
"type": "string",
"value": "={{ $json.created_at || $now }}"
},
{
"id": "id-8",
"name": "timestamp",
"type": "string",
"value": "={{ $now }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d87f9647-8f59-4168-8fe6-13d6845bf51e",
"name": "Schedule Jira Fetch",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-224,
496
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "3c0205fd-2542-4110-a1c0-01b23bc8c536",
"name": "Schedule Zendesk Fetch",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-224,
864
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "977c3f1a-f7fe-4c88-8ae1-b46ca57aa875",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
48
],
"parameters": {
"color": 7,
"width": 224,
"height": 224,
"content": "## How it Works - Layer 1\nThis layer ingests product signals from multiple sources including Slack, Zoom recordings, Jira, Zendesk, Figma, customer forms, and analytics tools."
},
"typeVersion": 1
},
{
"id": "2f2c9733-65d8-4fed-b413-1d914ca43cde",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
48
],
"parameters": {
"color": 7,
"height": 224,
"content": "## How it Works - Layer 2\nThis layer standardizes raw inputs from all sources into a unified structure.\nThe output is a consistent product signal object ready for AI processing."
},
"typeVersion": 1
},
{
"id": "49dc023c-4bc7-4dfd-bf22-322b5d6f9680",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
416,
624
],
"parameters": {
"color": 7,
"width": 224,
"height": 256,
"content": "## How it Works - Layer 3\nAll formatted data streams are merged into a single unified product intelligence stream.\nThis step consolidates cross-functional signals into one input object for centralized PRD analysis."
},
"typeVersion": 1
},
{
"id": "ca32635b-b4b7-435e-ab8e-0721588d929d",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
1440
],
"parameters": {
"color": 7,
"height": 240,
"content": "## How it Works - Layer 4\nThe PRD Agent analyzes aggregated signals using AI to:\nExtract feature requests\nDetect scope changes\nEvaluate priority signals and \nGenerate structured PRD update proposals."
},
"typeVersion": 1
},
{
"id": "f28212cd-3248-4f96-8754-76b1f33d85a8",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
1264
],
"parameters": {
"color": 7,
"content": "## How it Works - Layer 5\nAll changes are logged in for traceability and governance."
},
"typeVersion": 1
},
{
"id": "d691efd0-1476-4472-99f7-1d6bde52c2af",
"name": "PRD Analysis Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
672,
1072
],
"parameters": {
"text": "=Analyze the following aggregated product signals from multiple sources:\n\n{{ JSON.stringify($json, null, 2) }}\n\nExtract feature requests, detect scope changes, evaluate priority signals, identify target user segments, and generate a structured PRD update proposal based on all the signals above.",
"options": {
"systemMessage": "You are a PRD Analysis Agent. Analyze the aggregated product signals from multiple sources (Slack, Zoom, Jira, Figma, Salesforce, HubSpot, Zendesk, customer forms, and analytics). Extract feature requests, detect scope changes, target user changes, identify constraints and risks, evaluate priority signals, and generate structured PRD update proposals.\n\nProvide your analysis in the following structured format:\n- purpose: Clear statement of the feature/change purpose\n- user_problem: The specific problem users are facing\n- user_value: The value this provides to users\n- target_users: Who will benefit from this\n- user_feedback: Array of relevant user feedback quotes\n- assumptions: Key assumptions being made\n- out_of_scope: What is explicitly not included\n- acceptance_criteria: Array of criteria for completion\n- next_steps: Array of recommended next actions\n\nAnalyze all signals for:\n- Feature requests and their priority\n- Scope changes or expansions\n- Target user segment changes\n- Technical constraints and risks\n- Priority signals from multiple sources"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "a4ac7492-5815-4b46-ab9d-18b734e94b9b",
"name": "Platform Metdata",
"type": "n8n-nodes-base.webhook",
"position": [
-224,
688
],
"parameters": {
"path": "platform-data-webhook",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "30ec57f4-37e9-4ca8-834b-f1916f105760",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
208
],
"parameters": {
"color": 6,
"width": 288,
"height": 288,
"content": "### Zoom Setup\nSteps:\n1. Create an OAuth App in Zoom Marketplace\n2. Add the Redirect URL from n8n\n3. Copy Client ID + Secret\n4. Add Zoom OAuth2 credential in n8n\nConnect account\nReference - https://www.youtube.com/watch?v=BC6O_3LYgac\n"
},
"typeVersion": 1
},
{
"id": "c36442fb-8405-4778-b604-815594f5aada",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
544
],
"parameters": {
"color": 6,
"width": 288,
"height": 208,
"content": "### Jira Setup\nSteps:\n1. Generate API token from Atlassian\n2. Create Jira Software Cloud credential\n3. Enter: Email, API token, Domain\nReference - https://www.youtube.com/watch?v=T4z7lzqSZDY"
},
"typeVersion": 1
},
{
"id": "827dea90-0101-4b6b-8723-3c62e393cb3e",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
800
],
"parameters": {
"color": 6,
"width": 288,
"height": 208,
"content": "### Platform Analytics Setup\nSteps\n1. Replace:\n<__PLACEHOLDER_VALUE__your_analytics_api_endpoint__>\nWith your real analytics endpoint.\n"
},
"typeVersion": 1
},
{
"id": "f7919443-0dbc-49d6-8231-8c5fb3090860",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
1040
],
"parameters": {
"color": 6,
"width": 288,
"height": 208,
"content": "### Zendesk Setup\nSteps:\n1. Generate API token\n2. Add Zendesk credential\n3. Enter: Subdomain, Email, API token\n"
},
"typeVersion": 1
},
{
"id": "3221fedb-a7b4-4aca-a820-529adad4a074",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
1280
],
"parameters": {
"color": 6,
"width": 288,
"height": 208,
"content": "### Figma Setup\nSteps:\n1. Generate a personal access token in Figma\n2. Add Figma credentials with the team ID\n3. Paste token\n"
},
"typeVersion": 1
},
{
"id": "4cd1a41f-50dd-46aa-8d24-1f870bc98578",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
1520
],
"parameters": {
"color": 6,
"width": 288,
"height": 208,
"content": "### Form Setup\nSteps \n1. Edit Labels and Input Type to create a feedback form\n2. Link can be shared with anyone \n"
},
"typeVersion": 1
},
{
"id": "1204e934-62bb-46c4-95e5-5c9f9ea1a3e3",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
1760
],
"parameters": {
"color": 6,
"width": 288,
"height": 352,
"content": "### Slack Setup\nSteps:\n1. Create a Slack App at api.slack.com\nEnable:\napp_mentions:read\nchannels:history\nchat:write (optional if you want replies)\n2. Install app to workspace\n3. Copy Bot OAuth Token\n4. In n8n \u2192 Create Slack API credential\n5. Paste token\nReference - https://www.youtube.com/watch?v=qk5JH6ImK0I\n"
},
"typeVersion": 1
},
{
"id": "8ce46c6a-2f4f-4b84-a8ca-853210e4fd18",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
768
],
"parameters": {
"color": 6,
"width": 272,
"height": 256,
"content": "### GPT Setup\nUpdate the system message so that it clearly defines the exact PRD structure you expect, including the sections that should be generated.\nReplace the free OpenAI API credits with your own API key."
},
"typeVersion": 1
},
{
"id": "b4d9f6fa-3c2a-40d5-a901-be925ee62284",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
768
],
"parameters": {
"color": 6,
"width": 272,
"height": 256,
"content": "### Google Doc Setup\nSteps:\n1. Create Google Cloud Project\n2. Add Doc URl to n8n\n3. Replace the example Google Doc URL with your own PRD document.\nReference - https://www.youtube.com/watch?v=iieEHvu93dc\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"callerPolicy": "workflowsFromSameOwner",
"timeSavedMode": "fixed",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "8b80445a-007f-4b1d-a3ad-59492d82b96b",
"connections": {
"Slack Trigger": {
"main": [
[
{
"node": "Format Slack Data",
"type": "main",
"index": 0
}
]
]
},
"Format Form Data": {
"main": [
[
{
"node": "Merge All Data Sources",
"type": "main",
"index": 1
}
]
]
},
"Format Jira Data": {
"main": [
[]
]
},
"Format Zoom Data": {
"main": [
[
{
"node": "Merge All Data Sources",
"type": "main",
"index": 2
}
]
]
},
"Platform Metdata": {
"main": [
[
{
"node": "Fetch Platform Analytics",
"type": "main",
"index": 0
}
]
]
},
"Format Figma Data": {
"main": [
[]
]
},
"Format Slack Data": {
"main": [
[
{
"node": "Merge All Data Sources",
"type": "main",
"index": 0
}
]
]
},
"Get Jira Comments": {
"main": [
[
{
"node": "Format Jira Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "PRD Analysis Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"PRD Analysis Agent": {
"main": [
[
{
"node": "Update PRD Document",
"type": "main",
"index": 0
}
]
]
},
"Format Zendesk Data": {
"main": [
[]
]
},
"Get Zendesk Tickets": {
"main": [
[
{
"node": "Format Zendesk Data",
"type": "main",
"index": 0
}
]
]
},
"Get Zoom Recordings": {
"main": [
[
{
"node": "Transcribe Zoom Audio",
"type": "main",
"index": 0
}
]
]
},
"Schedule Jira Fetch": {
"main": [
[
{
"node": "Get Jira Comments",
"type": "main",
"index": 0
}
]
]
},
"Format Platform Data": {
"main": [
[
{
"node": "Merge All Data Sources",
"type": "main",
"index": 3
}
]
]
},
"Customer Form Trigger": {
"main": [
[
{
"node": "Format Form Data",
"type": "main",
"index": 0
}
]
]
},
"Figma Comment Trigger": {
"main": [
[
{
"node": "Format Figma Data",
"type": "main",
"index": 0
}
]
]
},
"Structured PRD Output": {
"ai_outputParser": [
[
{
"node": "PRD Analysis Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Transcribe Zoom Audio": {
"main": [
[
{
"node": "Format Zoom Data",
"type": "main",
"index": 0
}
]
]
},
"Merge All Data Sources": {
"main": [
[
{
"node": "PRD Analysis Agent",
"type": "main",
"index": 0
}
]
]
},
"Schedule Zendesk Fetch": {
"main": [
[
{
"node": "Get Zendesk Tickets",
"type": "main",
"index": 0
}
]
]
},
"Fetch Platform Analytics": {
"main": [
[
{
"node": "Format Platform Data",
"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.
figmaApigoogleDocsOAuth2ApijiraSoftwareCloudApiopenAiApislackApizendeskApizoomOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow creates an automated Product Intelligence Engine that continuously collects signals from multiple product sources and generates structured PRD updates using AI. It ingests conversations, feedback, support tickets, analytics, and design comments, standardizes them,…
Source: https://n8n.io/workflows/13553/ — 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.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”
🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.
This is an automated blog post generation system that: Researches topics using AI agents and web search tools Writes complete blog posts with proper SEO structure Generates custom images for each post
📄 Documentation: Notion Guide