When a new GitHub issue is opened, GPT classifies it (bug, feature, question), assigns a priority, applies labels via the GitHub API, and pings the right Slack channel. Keeps your backlog organized automatically.
{
"name": "GitHub Issue Triage Bot",
"nodes": [
{
"id": "gi01aa",
"name": "Issue Opened",
"type": "n8n-nodes-base.githubTrigger",
"typeVersion": 1,
"position": [
200,
300
],
"parameters": {
"owner": "your-org",
"repository": "your-repo",
"events": [
"issues"
]
}
},
{
"id": "gi02bb",
"name": "Classify Issue",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.4,
"position": [
420,
300
],
"parameters": {
"modelId": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "system",
"content": "Classify a GitHub issue. Return JSON: { type: 'bug'|'feature'|'question', priority: 'low'|'medium'|'high' }."
},
{
"role": "user",
"content": "Title: {{ $json.body.issue.title }}\nBody: {{ $json.body.issue.body }}"
}
]
},
"jsonOutput": true
}
},
{
"id": "gi03cc",
"name": "Apply Labels",
"type": "n8n-nodes-base.github",
"typeVersion": 1,
"position": [
640,
300
],
"parameters": {
"resource": "issue",
"operation": "edit",
"owner": "your-org",
"repository": "your-repo",
"issueNumber": "={{ $('Issue Opened').item.json.body.issue.number }}",
"editFields": {
"labels": "={{ [$json.message.content.type, $json.message.content.priority] }}"
}
}
},
{
"id": "gi04dd",
"name": "Notify Slack",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
860,
300
],
"parameters": {
"resource": "message",
"operation": "post",
"channelId": "#dev-triage",
"text": "New {{ $json.message.content.priority }} {{ $json.message.content.type }}: {{ $('Issue Opened').item.json.body.issue.title }}"
}
},
{
"id": "gi05ee",
"name": "Done",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1080,
300
],
"parameters": {}
}
],
"connections": {
"Issue Opened": {
"main": [
[
{
"node": "Classify Issue",
"type": "main",
"index": 0
}
]
]
},
"Classify Issue": {
"main": [
[
{
"node": "Apply Labels",
"type": "main",
"index": 0
}
]
]
},
"Apply Labels": {
"main": [
[
{
"node": "Notify Slack",
"type": "main",
"index": 0
}
]
]
},
"Notify Slack": {
"main": [
[
{
"node": "Done",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"meta": {}
}