{
  "name": "Jira Bot",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        -16
      ],
      "id": "be37c64b-45ce-4e85-9b07-6dbccb1cbf5f",
      "name": "When clicking ‘Execute workflow’"
    },
    {
      "parameters": {
        "resource": "fileFolder",
        "returnAll": true,
        "filter": {
          "folderId": {
            "__rl": true,
            "value": "1rzG881862qO7aVYPOwdPBh4A9KatHsUR",
            "mode": "list",
            "cachedResultName": "Discovery Sessions",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1rzG881862qO7aVYPOwdPBh4A9KatHsUR"
          }
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        224,
        -16
      ],
      "id": "8eab4d96-a5bb-48a8-9718-793284b122a4",
      "name": "Search files and folders",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "v0jqt9vixIFD5ktj",
          "name": "Google Drive account"
        }
      }
    },
    {
      "parameters": {
        "operation": "get",
        "documentURL": "={{ $json.id }}"
      },
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [
        448,
        -16
      ],
      "id": "a289f6bd-f3c9-4892-a166-9b3e303c7fd4",
      "name": "Get a document",
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "ppwk68nB8CC2M9WB",
          "name": "Google Docs account"
        }
      }
    },
    {
      "parameters": {
        "fieldToSplitOut": "output.requirements",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        1216,
        -16
      ],
      "id": "92fc20f7-2bc3-4120-8f00-3abdbbc17d81",
      "name": "Split Out"
    },
    {
      "parameters": {
        "operation": "get",
        "issueKey": "={{ $('Change to Published').item.json['Issue-Key'] }}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.jira",
      "typeVersion": 1,
      "position": [
        384,
        752
      ],
      "id": "1a0fc501-7f34-488e-b8e4-2b73818cd1a1",
      "name": "Get an issue",
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "NonRQN5uc9RAupC2",
          "name": "Jira SW Cloud account"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "issueKey": "={{ $json.key }}",
        "updateFields": {
          "description": "={{ $json.fields.description }}\n\nProposed Solution\n\n{{ $('Solution Architect').item.json.output.proposedSolution }}",
          "statusId": {
            "__rl": true,
            "value": "21",
            "mode": "list",
            "cachedResultName": "Ready To Develop"
          }
        }
      },
      "type": "n8n-nodes-base.jira",
      "typeVersion": 1,
      "position": [
        608,
        752
      ],
      "id": "6a05c464-aa86-4347-b79b-de0d9b9cae34",
      "name": "Update an issue",
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "NonRQN5uc9RAupC2",
          "name": "Jira SW Cloud account"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "8671c512-b996-4d94-8465-1bd3298fcc71",
              "name": "limit",
              "value": "5",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        672,
        -16
      ],
      "id": "f76ff90d-3b55-4ad3-974c-493831c6b84f",
      "name": "SetLimits"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "083707a8-b219-41b4-ba7c-23b202ba75c4",
              "leftValue": "={{ $json.Status }}",
              "rightValue": "New",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        608,
        336
      ],
      "id": "fbfd8039-52fe-4b06-9a23-ac37c23fff9a",
      "name": "Filters On New"
    },
    {
      "parameters": {
        "project": {
          "__rl": true,
          "value": "10000",
          "mode": "list",
          "cachedResultName": "n8n demo"
        },
        "issueType": {
          "__rl": true,
          "value": "10004",
          "mode": "list",
          "cachedResultName": "Story"
        },
        "summary": "={{ $json.Requirement }}",
        "additionalFields": {
          "description": "=User Story:\n{{ $json['User Story'] }}\n\nAcceptance Criteria:\n{{ $json['Acceptance Criteria'] }}"
        }
      },
      "type": "n8n-nodes-base.jira",
      "typeVersion": 1,
      "position": [
        832,
        336
      ],
      "id": "b4420214-7b60-4a0f-8fa2-f96eba1cca19",
      "name": "Create Jira Tickets",
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "NonRQN5uc9RAupC2",
          "name": "Jira SW Cloud account"
        }
      }
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ",
          "mode": "list",
          "cachedResultName": "Requirements",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Status": "Published",
            "Requirement": "={{ $('Filters On New').item.json.Requirement }}",
            "Issue-Key": "={{ $json.key }}",
            "LastModifiedDate": "={{ $now.toFormat('dd/MM/yyyy hh:ss') }}"
          },
          "matchingColumns": [
            "Requirement"
          ],
          "schema": [
            {
              "id": "Requirement",
              "displayName": "Requirement",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "User Story",
              "displayName": "User Story",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Acceptance Criteria",
              "displayName": "Acceptance Criteria",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Proposed Solution",
              "displayName": "Proposed Solution",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "LastModifiedDate",
              "displayName": "LastModifiedDate",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Issue-Key",
              "displayName": "Issue-Key",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "MeetingID",
              "displayName": "MeetingID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1056,
        336
      ],
      "id": "c91cb5b4-1d23-44f9-823e-834cb5d92ecd",
      "name": "Change to Published",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "y98pXi6BuOFxQJ31",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Here is the requirement that you need to turn into a User Story + Acceptance Critera:\n\n{{ $json.Requirement }}\n\nPass through the requirement into the json object as the value;\n",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "You are an expert AI Product Manager/Business Analyst. Your sole responsibility is to analyze a discovery meeting transcript and transform the requirements discussed into well-structured, actionable user stories and their acceptance criteria (ACs).\n\nYour goal is to extract every distinct requirement or desired feature and articulate it clearly, strictly adhering to the specified format below.\n\n### Input\n\nThe input will be the plain text **transcript of a discovery or requirements gathering meeting**. The transcript is raw, and you must synthesize the core needs, pain points, and desired outcomes into formal requirements.\n\n### Output Requirements and Format\n\nYou must identify each distinct requirement and output the **entire result as a single JSON object**. Each distinct user story will be a top-level key in this object, starting with `\"user_story_1\"`, `\"user_story_2\"`, and so on, up to a maximum of **three** for demonstration purposes.\n\n**STRICTLY adhere to this mandatory JSON output structure. The 'definition' must be a single string, and 'acceptance_criteria' must be a single, large string containing all ACs, separated by newline characters (`\\n`).**\n\n```json\n\n[\n  {\n    \"value\": \"Requirement 1: User Login Feature\",\n    \"requirement\": {\n      \"user_story\": \"As a [Specific User Role, e.g., System Administrator, Customer, Marketing Manager], I want [The action/feature to be performed], So that [The business value or desired outcome]\",\n      \"acceptance_criteria\": \"AC1: Given [Context], When [Action], Then [Result]\\nAC2: Given [Context], When [Action], Then [Result]\"\n    }\n  },\n  {\n    \"value\": \"Requirement 2: Profile Update Feature\",\n    \"requirement\": {\n      \"user_story\": \"As a [Specific User Role, e.g., System Administrator, Customer, Marketing Manager], I want [The action/feature to be performed], So that [The business value or desired outcome]\",\n      \"acceptance_criteria\": \"AC1: Given [Context], When [Action], Then [Result]\\nAC2: Given [Context], When [Action], Then [Result]\\nAC3: Given [Context], When [Action], Then [Result]\"\n    }\n  }\n]\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        32,
        336
      ],
      "id": "798c812b-0e61-48b7-8a64-949d23b08ef1",
      "name": "Business Analyst"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Here is the requirement, US and Acceptance Criteria that you need to create a proposed solution for in Salesforce\nIssue Key: {{ $('Create Jira Tickets').item.json.key }}\nRequirement: {{ $json.Requirement }}\nUser Story: {{ $('Filters On New').item.json['User Story'] }}\nAcceptance Criterias:\n{{ $('Filters On New').item.json['Acceptance Criteria'] }}\n",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "You are an expert, highly experienced Salesforce Solution Architect. Your primary function is to rigorously analyze provided user stories (US) and acceptance criteria (AC), validate the requirements against best practices, and design a robust, scalable, and maintainable technical solution.\n\nCore Directives:\n\nConfiguration First: Always prioritize standard configuration (Clicks) over custom code (Code). Your default choice should be Salesforce Flow, Process Builder (for legacy context), or Declarative Features unless a requirement explicitly demands Apex or LWC for complex, high-performance, or highly integrated logic.\n\nArchitectural Integrity: Every proposal must consider platform governor limits, data volume, security model, performance implications, and long-term maintenance.\n\nAudience: Your output is for other technical team members (Developers, Admins, QA), so be precise and use correct Salesforce terminology.\n\nNo Placeholders: Provide the full, complete analysis and solution proposal based on the input.\n\nOutput Structure:\n\nProposed Solution (concise and bullet point only)\n\nUpdate 'status' field from 'Open' to 'Resolved' upon final commit to fix 'status' bug.\n\nOutput must concise, in dot points and in the following json format:\n\n```json\n{\n  \"issueKey\": \"BUG-001\",\n  \"proposedSolution\": \"Update 'status' field from 'Open' to 'Resolved' upon final commit to fix 'status' bug.\"\n}"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        32,
        752
      ],
      "id": "92caab0f-649d-4243-9dbe-7d10d408fae3",
      "name": "Solution Architect"
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ",
          "mode": "list",
          "cachedResultName": "Requirements",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Issue-Key": "={{ $('Get an issue').item.json.key }}",
            "Proposed Solution": "={{ $('Solution Architect').item.json.output.proposedSolution }}",
            "Status": "Ready For Develop",
            "LastModifiedDate": "={{ $now.toFormat('dd/MM/yyyy hh:ss') }}"
          },
          "matchingColumns": [
            "Issue-Key"
          ],
          "schema": [
            {
              "id": "Requirement",
              "displayName": "Requirement",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "User Story",
              "displayName": "User Story",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Acceptance Criteria",
              "displayName": "Acceptance Criteria",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Proposed Solution",
              "displayName": "Proposed Solution",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "LastModifiedDate",
              "displayName": "LastModifiedDate",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Issue-Key",
              "displayName": "Issue-Key",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "MeetingID",
              "displayName": "MeetingID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        832,
        752
      ],
      "id": "b8023e72-e823-48f5-aed7-13174bd5c375",
      "name": "Update Proposed Solution",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "y98pXi6BuOFxQJ31",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ",
          "mode": "list",
          "cachedResultName": "Requirements",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Requirement": "={{ $json['output.requirements'] }}",
            "MeetingID": "={{ $('Search files and folders').item.json.id }} - {{ $('Search files and folders').item.json.name }}",
            "LastModifiedDate": "={{ $now.toFormat('dd/MM/yyyy hh:ss') }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Requirement",
              "displayName": "Requirement",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "User Story",
              "displayName": "User Story",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Acceptance Criteria",
              "displayName": "Acceptance Criteria",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Proposed Solution",
              "displayName": "Proposed Solution",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "LastModifiedDate",
              "displayName": "LastModifiedDate",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Issue-Key",
              "displayName": "Issue-Key",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "MeetingID",
              "displayName": "MeetingID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1440,
        -16
      ],
      "id": "29d57cd3-01f3-4af3-aa26-2eb4ba725010",
      "name": "Add Requirements",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "y98pXi6BuOFxQJ31",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"requirements\": [\n    \"The system must allow administrators to export user data as a CSV file.\",\n    \"Users need the ability to reset their password via a secure email link.\",\n    \"The page load time for the dashboard should not exceed 2 seconds.\",\n    \"The application must comply with GDPR standards for data privacy.\",\n    \"The customer wants to see the order status displayed clearly on the order history page.\"\n  ]\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        1152,
        192
      ],
      "id": "e9f09090-b3f2-4988-b936-941aa63fb4b0",
      "name": "Requirement Output"
    },
    {
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"value\": \"Requirement 1: User Login Feature\",\n    \"requirement\": {\n      \"user_story\": \"As a [Specific User Role, e.g., System Administrator, Customer, Marketing Manager], I want [The action/feature to be performed], So that [The business value or desired outcome]\",\n      \"acceptance_criteria\": \"AC1: Given [Context], When [Action], Then [Result]\\nAC2: Given [Context], When [Action], Then [Result]\"\n    }\n  },\n  {\n    \"value\": \"Requirement 2: Profile Update Feature\",\n    \"requirement\": {\n      \"user_story\": \"As a [Specific User Role, e.g., System Administrator, Customer, Marketing Manager], I want [The action/feature to be performed], So that [The business value or desired outcome]\",\n      \"acceptance_criteria\": \"AC1: Given [Context], When [Action], Then [Result]\\nAC2: Given [Context], When [Action], Then [Result]\\nAC3: Given [Context], When [Action], Then [Result]\"\n    }\n  }\n]"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        208,
        560
      ],
      "id": "fc59a628-85d2-45c6-9091-b0fb8b67b3ff",
      "name": "US + ACs Output"
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"issueKey\": \"BUG-001\",\n  \"proposedSolution\": \"Update 'status' field from 'Open' to 'Resolved' upon final commit to fix 'status' bug.\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        224,
        976
      ],
      "id": "0b70ee80-8d4b-4641-a055-76f462cad094",
      "name": "Proposed Solution Output"
    },
    {
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ",
          "mode": "list",
          "cachedResultName": "Requirements",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1di-BO3wylhG_ObT9uov1zkY_XAaIBlo_u9y1UJXD8cQ/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "User Story": "={{ $json.output[0].requirement.user_story }}",
            "Requirement": "={{ $('Add Requirements').item.json.Requirement }}",
            "Acceptance Criteria": "={{ $json.output[0].requirement.acceptance_criteria }}",
            "Status": "New",
            "LastModifiedDate": "{{ $now.toFormat('dd/MM/yyyy hh:ss') }}"
          },
          "matchingColumns": [
            "Requirement"
          ],
          "schema": [
            {
              "id": "Requirement",
              "displayName": "Requirement",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "User Story",
              "displayName": "User Story",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Acceptance Criteria",
              "displayName": "Acceptance Criteria",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "Proposed Solution",
              "displayName": "Proposed Solution",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "LastModifiedDate",
              "displayName": "LastModifiedDate",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "Issue-Key",
              "displayName": "Issue-Key",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            },
            {
              "id": "MeetingID",
              "displayName": "MeetingID",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        384,
        336
      ],
      "id": "df84ac09-ff86-41aa-9907-b0c3d4890c61",
      "name": "Add US + ACs",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "y98pXi6BuOFxQJ31",
          "name": "Google Sheets account"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=This is the transcript of the discovery meeting:\n\n{{ $('Get a document').item.json.content }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=You are an expert AI Requirements Analyst. Your sole responsibility is to analyze a discovery meeting transcript and extract every distinct functional, non-functional, or business requirement discussed.\n\nYour goal is to identify and articulate each unique requirement clearly, without transformation into a User Story format.\n\n### Input\n\nThe input will be the plain text **transcript of a discovery or requirements gathering meeting**. The transcript is raw, and you must synthesize the core needs, pain points, and desired outcomes into formal, standalone requirement statements.\n\n### Output Requirements and Format\n\nYou must identify each distinct requirement and output the **entire result as a single JSON array of strings**. Each string in the array must represent one complete, self-contained requirement.\n\nOUTPUT LIMIT IS {{ $json.limit }} REQUIREMENTS\n\nPREFIX EACH REQUIREMENT WITH A NUMBER i.e. 1, 2, 3, 4, etc\n\n**STRICTLY adhere to this mandatory JSON output structure:**\n\n```json\n{\n  \"requirements\": [\n    \"The system must allow administrators to export user data as a CSV file.\",\n    \"Users need the ability to reset their password via a secure email link.\",\n    \"The page load time for the dashboard should not exceed 2 seconds.\",\n    \"The application must comply with GDPR standards for data privacy.\",\n    \"The customer wants to see the order status displayed clearly on the order history page.\"\n  ]\n} "
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        896,
        -16
      ],
      "id": "3247895b-b3ce-442b-8e80-d755d84ef322",
      "name": "Extract Requirements"
    },
    {
      "parameters": {
        "operation": "get",
        "issueKey": "={{ $('Change to Published').item.json['Issue-Key'] }}",
        "additionalFields": {}
      },
      "type": "n8n-nodes-base.jira",
      "typeVersion": 1,
      "position": [
        1056,
        752
      ],
      "id": "f372ce67-f2bf-424a-8088-c99e5335c4b2",
      "name": "Get an issue1",
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "NonRQN5uc9RAupC2",
          "name": "Jira SW Cloud account"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "issueKey": "={{ $json.output.issueKey }}",
        "updateFields": {
          "assignee": {
            "__rl": true,
            "value": "712020:1a08e741-9d57-4a35-9de6-4d3e69dcc3a9",
            "mode": "list",
            "cachedResultName": "Kris T"
          },
          "customFieldsUi": {
            "customFieldsValues": [
              {
                "fieldId": {
                  "__rl": true,
                  "value": "customfield_10015",
                  "mode": "list",
                  "cachedResultName": "Start date"
                },
                "fieldValue": "={{ $now.toFormat('yyyy-MM-dd') }}"
              }
            ]
          },
          "priority": {
            "__rl": true,
            "value": "2",
            "mode": "list",
            "cachedResultName": "High"
          }
        }
      },
      "type": "n8n-nodes-base.jira",
      "typeVersion": 1,
      "position": [
        1616,
        752
      ],
      "id": "9fcac509-f98e-4f1f-8b42-18d04ec561f5",
      "name": "Update Priority",
      "credentials": {
        "jiraSoftwareCloudApi": {
          "id": "NonRQN5uc9RAupC2",
          "name": "Jira SW Cloud account"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Here is the requirement, US and Acceptance Criteria that you need to create a proposed solution for in Salesforce:\n\nKey:\n{{ $json.key }}\n\n\nDescription:\n\n{{ $json.fields.description }}",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=You are a salesforce project manger, you are responsible for reviewing each of the jira tickets and setting a due date and priority\n\nThe time is {{ $now.toFormat('dd/MM/yyyy hh:ss') }}"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3,
      "position": [
        1264,
        752
      ],
      "id": "62cb78de-dc38-42ee-ae9f-33355dfe0b06",
      "name": "Project Manager"
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"issueKey\": \"BUG-001\",\n  \"priority\": \"\",\n  \"startDate\": \"\"\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        1488,
        1056
      ],
      "id": "cbc480b0-8b14-4f0d-9711-5023bd056d2f",
      "name": "Priority Output"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        896,
        192
      ],
      "id": "447f9ae4-b137-4d6b-8ccd-08f926a2cf47",
      "name": "OpenAI Chat Model1",
      "credentials": {
        "openAiApi": {
          "id": "EaHAE2NZa2gYhEPa",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        16,
        560
      ],
      "id": "91a7fcb1-235f-434c-9b2c-58182f500591",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "id": "EaHAE2NZa2gYhEPa",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        16,
        992
      ],
      "id": "4059eb6c-a50d-4fbd-b60b-220201239ec3",
      "name": "OpenAI Chat Model2",
      "credentials": {
        "openAiApi": {
          "id": "EaHAE2NZa2gYhEPa",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "gpt-4.1",
          "mode": "list",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1264,
        1040
      ],
      "id": "5989a5f3-4c49-48b9-9263-275b6b6a9c23",
      "name": "OpenAI Chat Model3",
      "credentials": {
        "openAiApi": {
          "id": "EaHAE2NZa2gYhEPa",
          "name": "OpenAi account"
        }
      }
    }
  ],
  "pinData": {},
  "connections": {
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Search files and folders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search files and folders": {
      "main": [
        [
          {
            "node": "Get a document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get a document": {
      "main": [
        [
          {
            "node": "SetLimits",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Add Requirements",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get an issue": {
      "main": [
        [
          {
            "node": "Update an issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update an issue": {
      "main": [
        [
          {
            "node": "Update Proposed Solution",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SetLimits": {
      "main": [
        [
          {
            "node": "Extract Requirements",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filters On New": {
      "main": [
        [
          {
            "node": "Create Jira Tickets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Jira Tickets": {
      "main": [
        [
          {
            "node": "Change to Published",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Change to Published": {
      "main": [
        [
          {
            "node": "Solution Architect",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Business Analyst": {
      "main": [
        [
          {
            "node": "Add US + ACs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solution Architect": {
      "main": [
        [
          {
            "node": "Get an issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Requirements": {
      "main": [
        [
          {
            "node": "Business Analyst",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Requirement Output": {
      "ai_outputParser": [
        [
          {
            "node": "Extract Requirements",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "US + ACs Output": {
      "ai_outputParser": [
        [
          {
            "node": "Business Analyst",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Proposed Solution Output": {
      "ai_outputParser": [
        [
          {
            "node": "Solution Architect",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Add US + ACs": {
      "main": [
        [
          {
            "node": "Filters On New",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Requirements": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Proposed Solution": {
      "main": [
        [
          {
            "node": "Get an issue1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get an issue1": {
      "main": [
        [
          {
            "node": "Project Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Project Manager": {
      "main": [
        [
          {
            "node": "Update Priority",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Priority Output": {
      "ai_outputParser": [
        [
          {
            "node": "Project Manager",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Requirements",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Business Analyst",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Solution Architect",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Project Manager",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f2ca5895-b4be-4e76-aac7-d8907168c222",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "7425b88d6f52190dec1f6e67c1b6cffa1a87557717f26de52e85eaddcf276948"
  },
  "id": "jxW1couG7kSHSRSy",
  "tags": []
}