AutomationFlowsAI & RAG › Automate Agile Project Setup with Gpt-5 Mini, Jira & Form Interface

Automate Agile Project Setup with Gpt-5 Mini, Jira & Form Interface

ByBilly Christi @billy on n8n.io

This workflow is perfect for: Agile development teams and project managers who need to quickly set up Jira projects Product managers who want to convert feature ideas into structured user stories and tasks Software development agencies that need to rapidly create detailed…

Event trigger★★★★★ complexityAI-powered42 nodesForm TriggerOpenAI ChatOutput Parser StructuredHTTP RequestChain LlmJiraExecute Workflow TriggerGmail
AI & RAG Trigger: Event Nodes: 42 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8101 — we link there as the canonical source.

This workflow follows the Chainllm → Execute Workflow 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 →

Download .json
{
  "nodes": [
    {
      "id": "437ca695-4819-42a9-bd4d-acfaf65b0d32",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -3580,
        200
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7e3b7bf0-dc63-4e6e-b867-4ebf173a016d",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -3580,
        -80
      ],
      "parameters": {
        "options": {},
        "formTitle": "Jira Full Project Generator",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Project Name",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Project Full Features",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f616ce48-7636-4abc-b5de-67d01de03501",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -700,
        260
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fc44a4e8-a301-48dc-b9f7-a09f639844f0",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -500,
        260
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"story_title\": \"As a [user], I want to [goal], so that [benefit]\",\n    \"story_description\": \"Describe what the user needs and why this feature matters to the business or experience.\",\n    \"epic\": \"Optional Epic Name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Design UI for the feature\",\n        \"description\": \"Create wireframes and visual designs for the new feature, ensuring usability and responsiveness.\"\n      },\n      {\n        \"title\": \"Implement frontend logic using React\",\n        \"description\": \"Develop the UI components and integrate them with the application state using React.\"\n      },\n      {\n        \"title\": \"Build backend API endpoint\",\n        \"description\": \"Create the necessary API endpoints using appropriate frameworks to handle feature data.\"\n      },\n      {\n        \"title\": \"Write unit tests\",\n        \"description\": \"Develop unit tests for both frontend and backend components to ensure correctness and reliability.\"\n      },\n      {\n        \"title\": \"Perform integration testing\",\n        \"description\": \"Test how different components interact and ensure the overall feature functions as expected.\"\n      },\n      {\n        \"title\": \"Update project documentation\",\n        \"description\": \"Document the feature\u2019s design, usage instructions, and API endpoints in the project\u2019s knowledge base.\"\n      }\n    ]\n  },\n  {\n    \"story_title\": \"As a [user], I want to [another goal], so that [another benefit]\",\n    \"story_description\": \"Explain why this goal is needed and how it improves user experience or system functionality.\",\n    \"epic\": \"Same or another epic name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Task A title\",\n        \"description\": \"Brief but complete description of Task A.\"\n      },\n      {\n        \"title\": \"Task B title\",\n        \"description\": \"Brief but complete description of Task B.\"\n      },\n      {\n        \"title\": \"Task C title\",\n        \"description\": \"Brief but complete description of Task C.\"\n      }\n    ]\n  }\n]"
      },
      "typeVersion": 1.2
    },
    {
      "id": "6b1c7dcb-8ef0-4e87-a116-6d757dfdb089",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        0,
        100
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "70df1f92-7042-400c-a022-6056ac631c4e",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -280,
        80
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output"
      },
      "typeVersion": 1
    },
    {
      "id": "f44c306d-7ad8-44b7-9682-cd9a3a0d04de",
      "name": "Create Project",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2360,
        100
      ],
      "parameters": {
        "url": "https://nodemationhub.atlassian.net/rest/api/3/project",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"key\": \"{{ $('Project Naming').item.json.output.project_key }}\",\n  \"name\": \"{{ $('Project Naming').item.json.output.project_name }}\",\n  \"projectTypeKey\": \"software\",\n  \"projectTemplateKey\": \"com.pyxis.greenhopper.jira:gh-simplified-agility-scrum\",\n  \"description\": \"Project created via n8n\",\n  \"leadAccountId\": \"5e9e80770d58350c2be60166\", \n  \"assigneeType\": \"PROJECT_LEAD\"\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jiraSoftwareCloudApi"
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "12ac8921-14ab-4d14-b89a-570b546370a8",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1900,
        400
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"project_name\": \"Clean and professional project name here\",\n  \"project_description\": \"Clear and concise one-paragraph description of the project with technical clarity and business relevance.\",\n  \"project_key\": \"ABCDE\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "3c07cc6e-9f1b-44a6-8622-2f995679d9d6",
      "name": "Project Naming",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -3260,
        100
      ],
      "parameters": {
        "text": "=You are a naming expert and technical writer.  \nYour task is to clean up and enhance the following rough input into a professional-sounding **project name** and **concise, clear project description**, and generate a suitable **Jira project key**.\n\nThe project key must be 5 uppercase letters, randomly generated and not necessarily related to the project name. For example, it could be \"XQJTR\" or \"MBZKD\"\n\nReturn only the result in JSON format with three fields: `project_name`, `project_description`, and `project_key`.\n\n---\n\n### Input:\nRaw Project Name: `{{ $json['Project Name'] }}`  \nRaw Project Description: `{{ $json['Project Full Features'] }}`\n\n---\n\n### Output format:\n```json\n{\n  \"project_name\": \"Clean and professional project name here\",\n  \"project_description\": \"Clear and concise one-paragraph description of the project with technical clarity and business relevance.\",\n  \"project_key\": \"ABCDE\"\n}\n```\n\nOnly return the JSON. Do not include any commentary or explanation.\n",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "974e678e-7267-42d3-ae7c-fe65eec46bbd",
      "name": "Check Project Key & Get Status ID",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -2600,
        100
      ],
      "parameters": {
        "url": "=https://nodemationhub.atlassian.net/rest/api/3/project/{{ $('Set Jira URL').item.json['Jira url'] }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jiraSoftwareCloudApi"
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c5e3b150-6db2-4cdb-9543-00ef8110ed13",
      "name": "Get Status ID",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -2140,
        100
      ],
      "parameters": {
        "url": "=https://nodemationhub.atlassian.net/rest/api/3/project/{{ $json.key }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "jiraSoftwareCloudApi"
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5660be4c-19f2-4b44-8b5c-c20a14aced12",
      "name": "Split Out1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        720,
        100
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "sub_tasks"
      },
      "typeVersion": 1
    },
    {
      "id": "14129b11-aaba-4fcd-bea6-c796f3fe71d9",
      "name": "Create Story",
      "type": "n8n-nodes-base.jira",
      "position": [
        240,
        180
      ],
      "parameters": {
        "project": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Get Status ID').item.json.id }}"
        },
        "summary": "={{ $json.story_title }}",
        "issueType": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Jira Issue ID').item.json[\"story id\"] }}"
        },
        "additionalFields": {
          "description": "={{ $json.story_description }}"
        }
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "16ddae67-4e53-48b0-a928-6053798b53e1",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        460,
        560
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.1
    },
    {
      "id": "3d64bb50-6887-46cd-b6cf-f6c84160c82c",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        -200,
        400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1507418d-2328-4126-b188-ba3ee8a54c66",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        200,
        -100
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {}
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "57987e01-7da1-4615-b70f-43a19d785e4d",
      "name": "Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1640,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2fb0dfa5-853a-4970-8d6a-26d26852c4a8",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "Story"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a26ab23f-11c0-4957-ac16-04b23994416f",
      "name": "Filter1",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1640,
        260
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2fb0dfa5-853a-4970-8d6a-26d26852c4a8",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "Subtask"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d6a7c1ab-958b-4f8f-add0-d1d326278535",
      "name": "Split Out4",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -1800,
        80
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "issueTypes"
      },
      "typeVersion": 1
    },
    {
      "id": "8de2bd70-f220-4022-b2cf-876c7532ffa6",
      "name": "Limit2",
      "type": "n8n-nodes-base.limit",
      "position": [
        -1440,
        80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "74f719d4-3db2-4c5e-8566-9f9842678428",
      "name": "Limit3",
      "type": "n8n-nodes-base.limit",
      "position": [
        -1440,
        260
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d8a51ff0-807a-4d25-b048-43c19738ca42",
      "name": "Jira Story Status ID",
      "type": "n8n-nodes-base.set",
      "position": [
        -1220,
        80
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b64c7dd-dcfb-4550-b6ff-851c0d319070",
              "name": "story id",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5d2997aa-9b19-4c08-bc40-34ab6a9834cc",
      "name": "Jira Sub-task Status ID",
      "type": "n8n-nodes-base.set",
      "position": [
        -1220,
        260
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b64c7dd-dcfb-4550-b6ff-851c0d319070",
              "name": "task id",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "eb86e993-152b-4525-8591-f889b3954b5b",
      "name": "Jira Issue ID",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1020,
        180
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineAll"
      },
      "typeVersion": 3.1
    },
    {
      "id": "55eb4c0f-0657-45ce-a355-a48455c36626",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        1160,
        580
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "story_id"
            },
            {
              "name": "key"
            },
            {
              "name": "subtask_title"
            },
            {
              "name": "subtask_description"
            },
            {
              "name": "project_id"
            },
            {
              "name": "subtask_type"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "0e8622d4-2d53-4413-aa92-f17b54a06057",
      "name": "Create Sub Task",
      "type": "n8n-nodes-base.jira",
      "position": [
        1720,
        580
      ],
      "parameters": {
        "project": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.project_id }}"
        },
        "summary": "={{ $json.subtask_title }}",
        "issueType": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.subtask_type }}"
        },
        "additionalFields": {
          "description": "={{ $json.subtask_description }}",
          "parentIssueKey": "={{ $json.key }}"
        }
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f59e37d0-f2cd-4b5e-8231-213420143407",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1420,
        580
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "5c44b6b4-25c2-4fa8-92c8-374b2b823de0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -940,
        -860
      ],
      "parameters": {
        "color": 4,
        "width": 380,
        "height": 760,
        "content": "# \ud83d\udc4b Hi, I\u2019m Billy\n\nI help businesses build **n8n workflows** & **AI automation projects**.  \nNeed help with n8n or AI Automation projects? \nContact me and let\u2019s build your automation together.\n\n\ud83d\udce9 **Email:** billychartanto@gmail.com  \n\ud83e\udd1d **n8n Creator:** [n8n.io/creators/billy](https://n8n.io/creators/billy/)\n\ud83c\udf10 **My n8n Projects:** [billychristi.com/n8n](https://www.billychristi.com/n8n)  \n\n\n\n---\n\ud83d\udca1 Feel free to get in touch if you\u2019d like help on your next automation project or if you have any feedback or thoughts to share.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ee76aee-e9ba-4ce1-8493-4ed125defa97",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2840,
        -440
      ],
      "parameters": {
        "color": 4,
        "width": 780,
        "height": 340,
        "content": "## SETUP REQUIRED\n\nWorkflow Configurations:\n- Configure your Jira instance URL in the HTTP Request nodes\n- Update the email address in the Gmail notification node to match your preferred recipient\n- Adjust the user account ID in the Create Project node for the project lead assignment\n- Modify the JSON schema examples in the Structured Output Parser if you need different story formats\n\nRequired Credentials:\n- Jira Software Cloud API Credential\n- OpenAI API Key\n- Gmail OAuth2 Credential"
      },
      "typeVersion": 1
    },
    {
      "id": "7eacbd69-8bf5-4739-a4e4-b7506b91a482",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2840,
        -860
      ],
      "parameters": {
        "color": 4,
        "width": 780,
        "height": 400,
        "content": "## JIRA Project Generator & JIRA Story Creator with Form Interface using GPT-5\n\nWhat This Template Does:\n\n- Accepts project input through either a web form or manual trigger with project name and feature descriptions\n- Uses OpenAI's GPT-5 model to intelligently clean and structure project information into professional naming and descriptions\n- Automatically creates a new Jira project with proper configuration and templates\n- Generates comprehensive user stories following Agile best practices with \"As a [user], I want to [goal], so that [benefit]\" format\n- Creates detailed sub-tasks for each user story covering design, development, testing, and documentation phases\n- Automatically creates all stories and sub-tasks in the newly generated Jira project\n- Sends email notifications with project details and links upon successful completion\n- Supports both manual testing workflow execution and form-based project submissions "
      },
      "typeVersion": 1
    },
    {
      "id": "c2db7332-eb11-4c4e-8e03-4ed9634ff817",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2000,
        -440
      ],
      "parameters": {
        "color": 4,
        "width": 980,
        "height": 340,
        "content": "## WORKFLOW PROCESS OVERVIEW\n\nStep 1: Form Trigger or Manual Trigger collects project name and full feature descriptions from user input\nStep 2: Project Naming uses AI to clean and enhance the raw project name into professional format and generates random 5-letter project key\nStep 3: Check Project Key validates that the generated project key doesn't already exist in Jira\nStep 4: Create Project establishes new Jira project with software template and proper configuration settings\nStep 5: Get Status ID retrieves project details and available issue types for story and sub-task creation\nStep 6: Jira Ticket Generator uses AI to analyze project features and generate structured user stories with sub-tasks in JSON format\nStep 7: Split Out processes the generated stories array for individual story creation\nStep 8: Loop Over Items iterates through each user story for systematic processing\nStep 9: Create Story generates individual Jira stories with proper titles, descriptions, and issue type assignments\nStep 10: Execute Workflow triggers sub-workflow to create all associated sub-tasks for each story\nStep 11: Gmail sends completion notification email with project details and direct Jira links for easy access"
      },
      "typeVersion": 1
    },
    {
      "id": "13a9d4b6-f175-4de1-8deb-d2d7ab99c3c5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2640,
        -20
      ],
      "parameters": {
        "color": 4,
        "width": 620,
        "height": 300,
        "content": "## Create Project Process\nConfiguration:\nUpdate the Jira credentials with yours."
      },
      "typeVersion": 1
    },
    {
      "id": "3cdb986d-69d7-41b8-ae77-d3bda9dee5c2",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -740,
        -40
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 280,
        "content": "## Jira Ticket Generator\nThis is where the story is generated.\nYou can adjust the model & prompt based on your use case."
      },
      "typeVersion": 1
    },
    {
      "id": "5c7d7e57-c431-4642-9662-88b3e21ee8a7",
      "name": "Jira Story Generator",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -660,
        80
      ],
      "parameters": {
        "text": "=You are a professional Agile project manager and software architect.  \nBased on the following input, generate a detailed list of user stories and their corresponding sub-tasks in **clean JSON format**, ready to be used in Jira.\n\nEach story should follow Agile best practices, structured as:  \n**\"As a [user], I want to [goal], so that [reason]\"**.\n\nEach story and sub-task must include:\n- A **clear and concise title**\n- A **short but detailed description** (1\u20133 sentences)\n\n---\n\n### Input:\n**Project Name**: `{{ $('When clicking \u2018Test workflow\u2019').item.json['Project Name'] }}`  \n**Full Project Feature Description**:  \n`{{ $('When clicking \u2018Test workflow\u2019').item.json['Project Full Features'] }}`\n\n---\n\n### Output format:\n```json\n[\n  {\n    \"story_title\": \"As a [user], I want to [goal], so that [benefit]\",\n    \"story_description\": \"Describe what the user needs and why this feature matters to the business or experience.\",\n    \"epic\": \"Optional Epic Name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Design UI for the feature\",\n        \"description\": \"Create wireframes and visual designs for the new feature, ensuring usability and responsiveness.\"\n      },\n      {\n        \"title\": \"Implement frontend logic using React\",\n        \"description\": \"Develop the UI components and integrate them with the application state using React.\"\n      },\n      {\n        \"title\": \"Build backend API endpoint\",\n        \"description\": \"Create the necessary API endpoints using appropriate frameworks to handle feature data.\"\n      },\n      {\n        \"title\": \"Write unit tests\",\n        \"description\": \"Develop unit tests for both frontend and backend components to ensure correctness and reliability.\"\n      },\n      {\n        \"title\": \"Perform integration testing\",\n        \"description\": \"Test how different components interact and ensure the overall feature functions as expected.\"\n      },\n      {\n        \"title\": \"Update project documentation\",\n        \"description\": \"Document the feature\u2019s design, usage instructions, and API endpoints in the project\u2019s knowledge base.\"\n      }\n    ]\n  },\n  {\n    \"story_title\": \"As a [user], I want to [another goal], so that [another benefit]\",\n    \"story_description\": \"Explain why this goal is needed and how it improves user experience or system functionality.\",\n    \"epic\": \"Same or another epic name\",\n    \"sub_tasks\": [\n      {\n        \"title\": \"Task A title\",\n        \"description\": \"Brief but complete description of Task A.\"\n      },\n      {\n        \"title\": \"Task B title\",\n        \"description\": \"Brief but complete description of Task B.\"\n      },\n      {\n        \"title\": \"Task C title\",\n        \"description\": \"Brief but complete description of Task C.\"\n      }\n    ]\n  }\n]\n",
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.6
    },
    {
      "id": "e5283ece-c93f-4e26-bd18-edb44a738566",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        -220
      ],
      "parameters": {
        "color": 4,
        "width": 440,
        "height": 280,
        "content": "## Gmail - Send Notification\nYou can adjust the subject & body of the notification here.\nAlso, update the recipient email."
      },
      "typeVersion": 1
    },
    {
      "id": "a1bc89b7-03c8-44df-8117-4e53cc1ac374",
      "name": "Gmail - Send Notification",
      "type": "n8n-nodes-base.gmail",
      "position": [
        380,
        -100
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $('Project Naming').first().json.output.project_name }} is successfully generated on Jira\nProject ID: {{ $('Create Project').first().json.id }}\nProject Key: {{ $('Create Project').first().json.key }}\nProject Link: https://nodemationhub.atlassian.net/jira/servicedesk/projects/{{ $('Create Project').first().json.key }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "Project successfully generated",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "0269710e-0785-4681-9da5-ad4d9b8a193c",
      "name": "Set Jira URL",
      "type": "n8n-nodes-base.set",
      "position": [
        -2860,
        100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "31fe9b8d-1cea-40e8-9381-453bea1d2ad1",
              "name": "Jira url",
              "type": "string",
              "value": "https://nodemationhub.atlassian.net"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a521d267-7c7f-4f8f-a3f5-710169392a9d",
      "name": "Set Array Sub Tasks",
      "type": "n8n-nodes-base.set",
      "position": [
        500,
        100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b65992ed-e101-4975-9c54-fb6e13d1fd40",
              "name": "sub_tasks",
              "type": "array",
              "value": "={{ $('Loop Over Items').item.json.sub_tasks }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8210520b-f9ab-4b1a-8b31-3bcc2cc1130f",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2940,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 260,
        "height": 260,
        "content": "Update the Jira URL with your Jira instance URL (example: https://testproject.atlassian.net)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d38423f7-1a04-42de-8d5b-65c912d1f32c",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        -20
      ],
      "parameters": {
        "color": 4,
        "width": 980,
        "height": 480,
        "content": "## Get Issue ID for Story & Subtask\n"
      },
      "typeVersion": 1
    },
    {
      "id": "24d11677-ed13-412d-8f74-0b56efdec1f5",
      "name": "Execute Sub-task creator Workflow",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        920,
        580
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "YeXZlTxxL8OaYXWN",
          "cachedResultName": "Jira Project Generator Template"
        },
        "workflowInputs": {
          "value": {
            "key": "={{ $json.key }}",
            "story_id": "={{ $json.id }}",
            "project_id": "={{ $('Get Status ID').item.json.id }}",
            "subtask_type": "={{ $('Jira Issue ID').item.json[\"task id\"] }}",
            "subtask_title": "={{ $json.title }}",
            "subtask_description": "={{ $json.description }}"
          },
          "schema": [
            {
              "id": "story_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "story_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "key",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "key",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtask_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtask_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtask_description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtask_description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "project_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "project_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtask_type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtask_type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fc0bca3f-2050-46ee-b275-8c8f215dbcba",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        440
      ],
      "parameters": {
        "color": 4,
        "width": 800,
        "height": 400,
        "content": "## Sub-task creator workflow"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Limit": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Execute Sub-task creator Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter": {
      "main": [
        [
          {
            "node": "Limit2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit2": {
      "main": [
        [
          {
            "node": "Jira Story Status ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit3": {
      "main": [
        [
          {
            "node": "Jira Sub-task Status ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter1": {
      "main": [
        [
          {
            "node": "Limit3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Gmail - Send Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out1": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Split Out4": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          },
          {
            "node": "Filter1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Story": {
      "main": [
        [
          {
            "node": "Set Array Sub Tasks",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Jira URL": {
      "main": [
        [
          {
            "node": "Check Project Key & Get Status ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Status ID": {
      "main": [
        [
          {
            "node": "Split Out4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Jira Issue ID": {
      "main": [
        [
          {
            "node": "Jira Story Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Project": {
      "main": [
        [
          {
            "node": "Get Status ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Project Naming": {
      "main": [
        [
          {
            "node": "Set Jira URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Sub Task": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Story",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [],
        [
          {
            "node": "Create Sub Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Project Naming",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Jira Story Generator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Project Naming",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Array Sub Tasks": {
      "main": [
        [
          {
            "node": "Split Out1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Jira Story Generator": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Jira Story Status ID": {
      "main": [
        [
          {
            "node": "Jira Issue ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Jira Sub-task Status ID": {
      "main": [
        [
          {
            "node": "Jira Issue ID",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Jira Story Generator",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Project Naming",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Check Project Key & Get Status ID": {
      "main": [
        [
          {
            "node": "Create Project",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Sub-task creator Workflow": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Project Naming",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow is perfect for: Agile development teams and project managers who need to quickly set up Jira projects Product managers who want to convert feature ideas into structured user stories and tasks Software development agencies that need to rapidly create detailed…

Source: https://n8n.io/workflows/8101/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This template attempts to replicate OpenAI's DeepResearch feature which, at time of writing, is only available to their pro subscribers.

Output Parser Structured, OpenAI Chat, Form Trigger +8
AI & RAG

Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.

Typeform Trigger, Agent, OpenAI Chat +7
AI & RAG

The workflow runs every hour with a randomized delay of 5–20 minutes to help distribute load. It records the exact date and time a lead is emailed so you can track outreach. Follow-ups are automatical

Google Sheets, Agent, OpenAI Chat +5
AI & RAG

This workflow is perfect for graphic designers, creative agencies, marketing teams, or freelancers who regularly use AI-generated images in their projects. It's specifically beneficial for teams that

Google Sheets, Google Drive, HTTP Request +5
AI & RAG

This workflow automatically analyzes a website for UX and SEO quality. It uses Airtop for realistic web scraping, OpenAI for structured evaluation of metadata (title, description, and overall SEO sign

Airtop Tool, Form Trigger, OpenAI Chat +6