{
  "name": "GitHub to Jira bug sync with GPT-4o analysis & team alerts",
  "nodes": [
    {
      "id": "sticky-overview",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        250,
        300
      ],
      "parameters": {
        "width": 400,
        "height": 380,
        "content": "## 🔄 AUTOMATED BUG WORKFLOW\n\n### Flow: Webhook → Filter → Extract → AI → Parse → Jira → Notify → Respond\n\n### Benefits\n✅ Instant AI triage\n✅ Auto-assignment\n✅ Zero manual work\n✅ Saves 15-20 min/bug\n✅ "
      }
    },
    {
      "id": "sticky-webhook",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        250,
        750
      ],
      "parameters": {
        "width": 280,
        "height": 300,
        "content": "## 📥 STEP 1: WEBHOOK\n\n**Setup:**\n1. Activate workflow\n2. Copy webhook URL from this node\n3. GitHub → Settings → Webhooks → Add webhook\n4. Paste URL\n5. Content-type: application/json\n6. Events: Select "
      }
    },
    {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
      "name": "GitHub Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        400,
        1100
      ]
    },
    {
      "id": "sticky-filter",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        750
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "## 🔍 STEP 2: FILTER\n\n**Purpose:** Only process NEW issues\n\n**Checks:** action = \"opened\"\n- TRUE: Continue\n- FALSE: Stop\n\n**Why:** Prevents duplicate Jira tickets from issue edits, labels, or comments"
      }
    },
    {
      "id": "b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e",
      "name": "Filter: Only New Issues",
      "type": "n8n-nodes-base.if",
      "position": [
        750,
        1100
      ]
    },
    {
      "id": "sticky-extract",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        950,
        750
      ],
      "parameters": {
        "width": 280,
        "height": 300,
        "content": "## 📋 STEP 3: EXTRACT DATA\n\n**Extracts:**\n- Issue number & title\n- Description & reporter\n- Labels & URL\n- Repository info\n- Mentioned files (regex)\n\n**File Detection:**\nFinds: .js, .py, .ts, .jsx, .ts"
      }
    },
    {
      "id": "c3d4e5f6-a7b8-4c5d-0e1f-2a3b4c5d6e7f",
      "name": "Extract Issue Context",
      "type": "n8n-nodes-base.code",
      "position": [
        1100,
        1100
      ]
    },
    {
      "id": "sticky-ai",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1300,
        750
      ],
      "parameters": {
        "width": 280,
        "height": 340,
        "content": "## 🤖 STEP 4: AI ANALYSIS\n\n**GPT-4o analyzes:**\n- Bug severity (Critical/High/Medium/Low)\n- Category (Backend/Frontend/DB/API/UI/etc)\n- Reproduction steps\n- Potential root cause\n- Priority (P0-P3)\n- Co"
      }
    },
    {
      "id": "d4e5f6a7-b8c9-4d5e-1f2a-3b4c5d6e7f8a",
      "name": "GPT-4o Bug Analysis",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1450,
        1100
      ]
    },
    {
      "id": "sticky-parse",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1650,
        750
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "## 🔧 STEP 5: PARSE & MAP\n\n**Functions:**\n- Parse AI JSON response (with error handling)\n- Map developer types to emails\n- Convert priorities (P0→Highest)\n- Prepare Jira labels array\n\n**⚠️ CUSTOMIZE TH"
      }
    },
    {
      "id": "e5f6a7b8-c9d0-4e5f-2a3b-4c5d6e7f8a9b",
      "name": "Parse GPT Response & Map Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1800,
        1100
      ]
    },
    {
      "id": "sticky-jira",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2000,
        750
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "## 🎫 STEP 6: CREATE JIRA\n\n**Setup:**\n1. Add Jira Software Cloud credentials\n2. Update YOUR_JIRA_PROJECT_KEY\n3. Replace your-company.atlassian.net URLs\n\n**Ticket includes:**\n- GitHub issue link\n- Origi"
      }
    },
    {
      "id": "f6a7b8c9-d0e1-4f5a-3b4c-5d6e7f8a9b0c",
      "name": "Create Jira Ticket",
      "type": "n8n-nodes-base.jira",
      "position": [
        2150,
        1100
      ]
    },
    {
      "id": "sticky-notify",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2350,
        750
      ],
      "parameters": {
        "width": 360,
        "height": 340,
        "content": "## 🔔 STEP 7: NOTIFICATIONS\n\n**3 Parallel Branches:**\n\n1️⃣ **GitHub Comment**\n- Posts on original issue\n- Links to Jira ticket\n- Shows AI analysis summary\n\n2️⃣ **Slack Alert**\n- Rich formatted message\n"
      }
    },
    {
      "id": "a7b8c9d0-e1f2-4a5b-4c5d-6e7f8a9b0c1d",
      "name": "Update GitHub Issue",
      "type": "n8n-nodes-base.github",
      "position": [
        2550,
        950
      ]
    },
    {
      "id": "b8c9d0e1-f2a3-4b5c-5d6e-7f8a9b0c1d2e",
      "name": "Send Slack Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        2550,
        1100
      ]
    },
    {
      "id": "c9d0e1f2-a3b4-4c5d-6e7f-8a9b0c1d2e3f",
      "name": "Send Discord Alert",
      "type": "n8n-nodes-base.discord",
      "position": [
        2550,
        1250
      ]
    },
    {
      "id": "sticky-response",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2750,
        750
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "## ✅ STEP 8: RESPOND\n\n**Returns JSON to GitHub:**\n```\n{\n  \"status\": \"success\",\n  \"message\": \"Bug processed\",\n  \"jiraTicket\": \"ENG-123\"\n}\n```\n\n**Why important:**\n- Confirms processing succeeded\n- Preve"
      }
    },
    {
      "id": "d0e1f2a3-b4c5-4d5e-7f8a-9b0c1d2e3f4a",
      "name": "Webhook Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2900,
        1100
      ]
    },
    {
      "id": "sticky-troubleshoot",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        250,
        1450
      ],
      "parameters": {
        "width": 420,
        "height": 540,
        "content": "# 🔧 TROUBLESHOOTING\n\n**Webhook not triggering?**\n✅ Activate workflow first\n✅ Check webhook URL copied correctly\n✅ Verify \"Issues\" event selected in GitHub\n✅ Test with curl or create test issue\n\n**AI a"
      }
    },
    {
      "id": "sticky-roi",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        710,
        1450
      ],
      "parameters": {
        "width": 420,
        "height": 540,
        "content": "# 📊 ROI CALCULATOR\n\n**Manual Process per Bug:**\n- Read & assess: 5 min\n- Determine category: 2 min\n- Create Jira ticket: 5 min\n- Assign developer: 2 min\n- Notify team: 2 min\n- Update GitHub: 1 min\n**T"
      }
    },
    {
      "id": "sticky-customize",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1170,
        1450
      ],
      "parameters": {
        "width": 420,
        "height": 540,
        "content": "# 🎨 CUSTOMIZATION IDEAS\n\n**1. Add more developer types:**\nEdit Parse GPT Response node:\n```javascript\nconst developerMapping = {\n  \"backend-dev\": \"backend@company.com\",\n  \"frontend-dev\": \"frontend@com"
      }
    }
  ],
  "connections": {
    "GitHub Webhook": {
      "main": [
        [
          {
            "node": "Filter: Only New Issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Jira Ticket": {
      "main": [
        [
          {
            "node": "Update GitHub Issue",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Slack Alert",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Discord Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4o Bug Analysis": {
      "main": [
        [
          {
            "node": "Parse GPT Response & Map Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update GitHub Issue": {
      "main": [
        [
          {
            "node": "Webhook Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Issue Context": {
      "main": [
        [
          {
            "node": "GPT-4o Bug Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Only New Issues": {
      "main": [
        [
          {
            "node": "Extract Issue Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse GPT Response & Map Data": {
      "main": [
        [
          {
            "node": "Create Jira Ticket",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}