AutomationFlowsAI & RAG › Automate Jira Backlog Hygiene and Reporting with Slack, Gmail and Gpt-4

Automate Jira Backlog Hygiene and Reporting with Slack, Gmail and Gpt-4

ByRahul Joshi @rahul08 on n8n.io

Automate Jira backlog management with intelligent cleanup, prioritization, and AI-powered reporting. This workflow scans daily to identify stale issues, missing priorities, and overdue tasks — auto-updates Jira with corrective labels, logs everything into Google Sheets for…

Cron / scheduled trigger★★★★★ complexityAI-powered31 nodesJiraGoogle SheetsSlackAgentLm Chat Azure Open AiOutput Parser StructuredGmail
AI & RAG Trigger: Cron / scheduled Nodes: 31 Complexity: ★★★★★ AI nodes: yes Added:

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

This workflow follows the Agent → Gmail 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
{
  "id": "0zvZIMYoz7Yavdpc",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automate Jira Backlog Hygiene and Reporting with Slack ,Gmail and AI",
  "tags": [],
  "nodes": [
    {
      "id": "2c632cb2-a465-48a1-8615-646ae004a906",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2208,
        -672
      ],
      "parameters": {
        "color": 4,
        "width": 389,
        "height": 564,
        "content": "## \ud83c\udfaf Backlog Hygiene & Auto-Grooming\n\nAutomated Jira backlog management that identifies issues, takes corrective actions, and generates AI-powered reports.\n\n**What it does:**\n- Runs weekdays at 9 AM to analyze backlog items\n- Identifies overdue tasks and missing priorities\n- Auto-tags issues needing attention\n- Logs all backlog items to Google Sheets\n- Sends real-time Slack alerts for critical issues\n- Generates AI-powered weekly digest emails\n\n**Use Case:** Perfect for engineering teams maintaining clean, prioritized Jira backlogs with minimal manual effort.\n\n**Required Setup:**\n- Jira Software Cloud credentials\n- Google Sheets for audit trail\n- Slack workspace for alerts\n- Gmail for email digests\n- Azure OpenAI API for AI summaries"
      },
      "typeVersion": 1
    },
    {
      "id": "ef8e559f-6e94-42c5-a70e-6cfd6ddea13f",
      "name": "Daily Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1680,
        -416
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1-5"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "30388334-2118-4d6d-a355-cc01ecf97bf5",
      "name": "Note - Schedule",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1760,
        -272
      ],
      "parameters": {
        "width": 262,
        "height": 237,
        "content": "## \u23f0 Weekday Mornings\n\nRuns Mon-Fri at 9:00 AM to groom backlog.\n\n**Schedule:** `0 9 * * 1-5`\n**Timing:** Daily at 09:00 on weekdays\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c5ac2613-c23e-40c3-b0ff-0bb805b876e1",
      "name": "Fetch Jira Backlog",
      "type": "n8n-nodes-base.jira",
      "position": [
        -1456,
        -416
      ],
      "parameters": {
        "options": {
          "jql": "project = YOUR_PROJECT_KEY AND status in (\"Backlog\") ORDER BY created DESC"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "typeVersion": 1
    },
    {
      "id": "c56145cd-e7bd-47f2-945d-331c491d2eab",
      "name": "Note - Fetch",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1600,
        -704
      ],
      "parameters": {
        "width": 262,
        "height": 269,
        "content": "## \ud83d\udccb Fetch Backlog Items\n\n**Setup Required:**\n1. Replace `YOUR_PROJECT_KEY` with your Jira project key\n2. Connect Jira credentials\n\n**Fetches:** All issues in \"Backlog\" status, ordered by creation date (newest first)"
      },
      "typeVersion": 1
    },
    {
      "id": "79cc28a5-7047-40ee-816e-ea61635ad230",
      "name": "Extract Jira Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -1232,
        -416
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "65a9ad90-fc3a-4b15-a5db-57040972f1eb",
              "name": "id",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "a6e676d7-d345-4805-8947-c89246e250cb",
              "name": "Status",
              "type": "string",
              "value": "={{ $json.fields.status.name }}"
            },
            {
              "id": "329be7f5-f4b6-4c2d-8633-f4cc5c600f5a",
              "name": "Last Updated",
              "type": "string",
              "value": "={{ $json.fields.updated }}"
            },
            {
              "id": "6074d876-e5d4-4292-bdcc-dacce44367e9",
              "name": "Created",
              "type": "string",
              "value": "={{ $json.fields.created }}"
            },
            {
              "id": "f45794be-a5a2-4267-8959-6b3a628bdf33",
              "name": "Assignee",
              "type": "string",
              "value": "={{ $json.fields.reporter?.displayName || 'Unassigned' }}"
            },
            {
              "id": "d45594fe-3f25-4deb-9a33-1ae5da08a62a",
              "name": "Due Date",
              "type": "string",
              "value": "={{ $json.fields.duedate || '' }}"
            },
            {
              "id": "255fac2f-a504-4937-bfbb-4ab6d11ab85c",
              "name": "Priority",
              "type": "string",
              "value": "={{ $json.fields.priority?.name || '' }}"
            },
            {
              "id": "d1b9ba34-6836-470d-a4f8-06b50426f570",
              "name": "key",
              "type": "string",
              "value": "={{ $json.key }}"
            },
            {
              "id": "6df7df50-6844-498f-acad-125d0aac25e7",
              "name": "email",
              "type": "string",
              "value": "={{ $json.fields.creator?.emailAddress || '' }}"
            },
            {
              "id": "a4ffc18e-cc88-408d-bd22-fd915092b8c3",
              "name": "Summary",
              "type": "string",
              "value": "={{ $json.fields.summary || $json.fields.issuetype.description }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "cfe06dcd-cc9d-4eaf-898c-0aa823aa9d2a",
      "name": "Note - Extract",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1296,
        -256
      ],
      "parameters": {
        "width": 262,
        "height": 309,
        "content": "## \ud83d\udd04 Field Extraction\n\nMaps Jira fields to clean, usable data.\n\n**Extracted Fields:**\n- ID, Key, Status, Summary\n- Created & Last Updated dates\n- Assignee & Creator email\n- Due Date & Priority\n\n**Note:** Uses safe null handling with fallbacks"
      },
      "typeVersion": 1
    },
    {
      "id": "4c294ed5-4ae4-4d24-97f9-575cca486366",
      "name": "Log to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1008,
        -368
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Updated",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Updated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Created",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Created",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Assignee",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Assignee",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Due Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Due Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Priority",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Priority",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "key",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "key",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultName": "Backlogs"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_SHEET_ID",
          "cachedResultName": "Backlog Audit Log"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "684448c6-3f51-401c-8e3c-3e40db0b6ce2",
      "name": "Note - Sheets",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1056,
        -480
      ],
      "parameters": {
        "width": 262,
        "height": 285,
        "content": "## \ud83d\udcca Audit Trail\n\n**Setup Required:**\n1. Replace `YOUR_SHEET_ID` with Google Sheets document ID\n2. Connect Google OAuth2 credentials\n\n**Logs:** All backlog items with timestamps for historical tracking and reporting"
      },
      "typeVersion": 1
    },
    {
      "id": "ef72046f-dd55-429d-be00-c9324dbccaf1",
      "name": "Check Overdue Tasks",
      "type": "n8n-nodes-base.if",
      "position": [
        -1008,
        -704
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c92605e8-e7aa-494b-86ba-ca0d20244af8",
              "operator": {
                "type": "dateTime",
                "operation": "before"
              },
              "leftValue": "={{ $json[\"Due Date\"] }}",
              "rightValue": "={{ new Date(Date.now())}}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b27e44f5-db46-4885-9f4a-c65ebecaeff7",
      "name": "Note - Overdue Check",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1152,
        -992
      ],
      "parameters": {
        "width": 262,
        "height": 261,
        "content": "## \u23f0 Overdue Filter\n\n**Logic:** Checks if Due Date is before today\n\n**True Branch:** Overdue tasks\n- Sends Jira notification\n- Posts Slack alert\n\n**False Branch:** Not overdue\n- Continues to priority check"
      },
      "typeVersion": 1
    },
    {
      "id": "11751464-7ff3-40fa-8dd1-c78b008a0dd2",
      "name": "Notify Issue Owner",
      "type": "n8n-nodes-base.jira",
      "position": [
        -720,
        -896
      ],
      "parameters": {
        "issueKey": "={{ $json.key }}",
        "resource": "issue",
        "operation": "notify",
        "jiraVersion": "cloud",
        "jsonParameters": false,
        "additionalFields": {
          "subject": "Overdue Task: {{ $json.Summary }}",
          "textBody": "This issue is overdue and requires immediate attention. Please review and update the status or due date."
        },
        "notificationRecipientsUi": {
          "notificationRecipientsValues": {
            "users": [],
            "groups": [],
            "voters": false,
            "assignee": true,
            "reporter": true,
            "watchers": false
          }
        },
        "notificationRecipientsRestrictionsUi": {}
      },
      "typeVersion": 1
    },
    {
      "id": "d52caf19-6f96-4565-be5d-ed34d3f55158",
      "name": "Note - Jira Notify",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        -1168
      ],
      "parameters": {
        "width": 262,
        "height": 253,
        "content": "## \ud83d\udce7 Jira Notification\n\n**Setup Required:**\n1. Uses same Jira credentials\n2. Removed hardcoded user/group IDs\n\n**Sends:** In-app Jira notification to reporter and assignee for overdue tasks"
      },
      "typeVersion": 1
    },
    {
      "id": "ef9c4252-1781-4ee0-b0c7-583765206a89",
      "name": "Slack Alert - Overdue",
      "type": "n8n-nodes-base.slack",
      "position": [
        -720,
        -704
      ],
      "parameters": {
        "text": "=\ud83d\udd34 *Overdue Backlog Item*\n\n*Summary:* {{ $json.Summary }}\n*Issue:* {{ $json.key }}\n*Due Date:* {{ $json['Due Date'] }}\n*Assignee:* {{ $json.Assignee }}\n*Status:* {{ $json.Status }}\n\nThis item is overdue and needs immediate attention.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_CHANNEL_ID",
          "cachedResultName": "backlog-alerts"
        },
        "otherOptions": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "30057434-63d2-4d55-a527-a7f20d9233c3",
      "name": "Note - Slack Overdue",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -752
      ],
      "parameters": {
        "width": 262,
        "height": 221,
        "content": "## \ud83d\udcac Slack - Overdue\n\n**Setup Required:**\n1. Replace `YOUR_CHANNEL_ID` with Slack channel ID\n2. Connect Slack API credentials\n\n**Posts:** Real-time alert for overdue items with full context"
      },
      "typeVersion": 1
    },
    {
      "id": "1e90d54a-7e05-4cce-859c-ddd62cb498d6",
      "name": "Check Missing Priority",
      "type": "n8n-nodes-base.if",
      "position": [
        -720,
        -512
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "630bf2fe-1811-4058-846e-04563f4d8530",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Priority }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "198c9966-323e-45a6-bdef-3dadb6c01105",
      "name": "Note - Priority Check",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -768,
        -320
      ],
      "parameters": {
        "width": 262,
        "height": 309,
        "content": "## \ud83c\udff7\ufe0f Priority Check\n\n**Logic:** Checks if Priority field is empty\n\n**True Branch:** Missing priority\n- Tags issue with \"Needs-Priority\" label\n- Posts Slack alert\n\n**False Branch:** Priority exists\n- No action needed"
      },
      "typeVersion": 1
    },
    {
      "id": "cfca36aa-3f46-4027-8d29-5ef5137e338c",
      "name": "Tag with 'Needs-Priority'",
      "type": "n8n-nodes-base.jira",
      "position": [
        -432,
        -608
      ],
      "parameters": {
        "issueKey": "={{ $json.key }}",
        "operation": "update",
        "updateFields": {
          "labels": "={{ [\"Needs-Priority\"] }}"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f02e8cae-0ec8-4779-a5b2-6a48ede692ea",
      "name": "Note - Tag",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        -832
      ],
      "parameters": {
        "width": 262,
        "height": 205,
        "content": "## \ud83c\udff7\ufe0f Auto-Tag Issue\n\n**Setup Required:**\n1. Uses same Jira credentials\n\n**Action:** Automatically adds \"Needs-Priority\" label to issues missing priority field for easy filtering"
      },
      "typeVersion": 1
    },
    {
      "id": "11cc0368-975c-4bc0-a2ef-c467df83569d",
      "name": "Slack Alert - Missing Priority",
      "type": "n8n-nodes-base.slack",
      "position": [
        -432,
        -416
      ],
      "parameters": {
        "text": "=\u26a0\ufe0f *Missing Priority*\n\n*Summary:* {{ $json.Summary }}\n*Issue:* {{ $json.key }}\n*Assignee:* {{ $json.Assignee }}\n*Status:* {{ $json.Status }}\n*Due Date:* {{ $json['Due Date'] }}\n\nThis issue has been tagged with \"Needs-Priority\" label. Please assign a priority.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_CHANNEL_ID",
          "cachedResultName": "backlog-alerts"
        },
        "otherOptions": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "39461f27-b8b4-4d4c-baa9-bbc5f4ed29cc",
      "name": "Note - Slack Priority",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        -416
      ],
      "parameters": {
        "width": 262,
        "height": 221,
        "content": "## \ud83d\udcac Slack - Priority\n\n**Setup Required:**\n1. Use same Slack channel ID and credentials\n\n**Posts:** Alert for issues missing priority with action taken (tagged with label)"
      },
      "typeVersion": 1
    },
    {
      "id": "be03f5d0-6e99-44a8-8d3c-3c293fe58602",
      "name": "Aggregate All Items",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        -1008,
        -176
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "5a04bac2-e1c5-4715-8413-776e5cd7f846",
      "name": "Note - Aggregate",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1152,
        64
      ],
      "parameters": {
        "width": 262,
        "height": 258,
        "content": "## \ud83d\udce6 Combine Data\n\nAggregates all backlog items into single payload for AI analysis.\n\n**Purpose:** Prepares comprehensive dataset for AI to analyze patterns and generate insights"
      },
      "typeVersion": 1
    },
    {
      "id": "289d850d-aeb2-475e-a810-822204ac98a6",
      "name": "Generate AI Digest",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -784,
        -176
      ],
      "parameters": {
        "text": "=Analyze the following Jira backlog items and generate an email for the project manager.\n\nEach item includes: issue ID, key, assignee, status, due date, priority, and summary.\n\nYour goal:\n- Identify overdue tasks (due date before today).\n- Highlight items with missing priority.\n- Summarize the overall backlog health.\n- Suggest 2-3 actionable steps to improve backlog hygiene.\n- Mention how many issues fall into each category.\n\nBacklog data:\n{{ JSON.stringify($json) }}",
        "options": {
          "systemMessage": "You are an automation assistant for project management and engineering teams.\nYour role is to analyze Jira backlog data and generate a professional HTML email for a project or engineering manager that summarizes the backlog health and highlights key actions.\n\nOutput Requirements:\n- The output must be a valid JSON object with two keys:\n  {\n    \"Subject\": \"<email subject line>\",\n    \"Body\": \"<HTML formatted email body>\"\n  }\n\nFormatting & Tone Guidelines:\n- Maintain a clear, concise, and professional business tone.\n- Use semantic HTML tags such as <p>, <ul>, <li>, <strong>, <em>, and <table> for readability.\n- Do not include any Markdown or code formatting.\n- The HTML should be visually structured and ready to send directly via email.\n- Always start with a short greeting (e.g., \"Dear Project Manager,\").\n- Follow with a summary paragraph that states the purpose of the email (e.g., \"Here's the latest Jira backlog summary for this week.\").\n- Include clearly formatted sections for:\n  1. Overdue Tasks\n  2. Missing Priorities\n  3. General Backlog Health\n- Add an HTML table if helpful for listing issue details (Key, Summary, Assignee, Due Date, Priority).\n- End the email with an \"Actionable Recommendations\" section listing 2-3 clear next steps.\n- Close politely (e.g., \"Regards, Backlog Hygiene Assistant\").\n- Keep the email content under 300 words.\n\nBehavior:\n- Analyze patterns and highlight areas needing attention.\n- Summarize counts of overdue, missing priority, or stale issues.\n- Suggest actionable next steps to improve backlog hygiene.\n- The output must be clean, valid JSON and contain no Markdown or triple backticks."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "3a297cb4-3dde-4a58-88a1-a127062b3fca",
      "name": "Note - AI Analysis",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        32
      ],
      "parameters": {
        "width": 262,
        "height": 309,
        "content": "## \ud83e\udd16 AI Analysis Engine\n\n**What it does:**\n- Analyzes all backlog items using AI\n- Identifies patterns and trends\n- Generates structured JSON output with Subject and HTML Body\n\n**Requires:** Azure OpenAI credentials and structured output parser"
      },
      "typeVersion": 1
    },
    {
      "id": "53379a85-d8d5-4be5-bf67-e8df4e4098d7",
      "name": "Azure OpenAI Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        -768,
        64
      ],
      "parameters": {
        "model": "gpt-4o-mini",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "c78017ec-f5b1-48ce-8586-fef3d75e35a3",
      "name": "Note - Azure",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -176
      ],
      "parameters": {
        "width": 262,
        "height": 237,
        "content": "## \ud83d\udd17 AI Model Config\n\n**Setup Required:**\n1. Replace credential ID with your Azure OpenAI credentials\n2. Model: gpt-4o-mini (cost-effective)\n\n**Connects:** To AI agent for language processing"
      },
      "typeVersion": 1
    },
    {
      "id": "6364596e-43e2-402a-a285-1740094c475f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -640,
        64
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"Subject\": \"\",\n\t\"Body\": \"\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "8a53abde-9f29-41c7-9917-ccee228748a4",
      "name": "Note - Parser",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -592,
        64
      ],
      "parameters": {
        "width": 262,
        "height": 205,
        "content": "## \ud83d\udccb Output Parser\n\nEnsures AI returns valid JSON with:\n- Subject: Email subject line\n- Body: HTML formatted email\n\n**No setup required** - connects to AI agent automatically"
      },
      "typeVersion": 1
    },
    {
      "id": "32153f43-2620-40d6-98d9-7793d756d206",
      "name": "Email Weekly Digest",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -432,
        -176
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "={{ $json.output.Body }}",
        "options": {},
        "subject": "={{ $json.output.Subject }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "e71a8d4b-aff9-457c-bcbb-b521f9333bd2",
      "name": "Note - Email",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -80
      ],
      "parameters": {
        "width": 262,
        "height": 301,
        "content": "## \ud83d\udce7 Send AI Digest\n\n**Setup Required:**\n1. Replace `YOUR_EMAIL@example.com` with manager's email\n2. Connect Gmail OAuth2 credentials\n\n**Sends:** AI-generated HTML email with backlog summary and actionable recommendations"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a3faef09-d8b1-4083-baab-1ec097f35b4e",
  "connections": {
    "Azure OpenAI Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate AI Digest",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Jira Backlog": {
      "main": [
        [
          {
            "node": "Extract Jira Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate AI Digest": {
      "main": [
        [
          {
            "node": "Email Weekly Digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate All Items": {
      "main": [
        [
          {
            "node": "Generate AI Digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Overdue Tasks": {
      "main": [
        [
          {
            "node": "Notify Issue Owner",
            "type": "main",
            "index": 0
          },
          {
            "node": "Slack Alert - Overdue",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check Missing Priority",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Jira Fields": {
      "main": [
        [
          {
            "node": "Aggregate All Items",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check Overdue Tasks",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Missing Priority": {
      "main": [
        [
          {
            "node": "Tag with 'Needs-Priority'",
            "type": "main",
            "index": 0
          },
          {
            "node": "Slack Alert - Missing Priority",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Schedule Trigger": {
      "main": [
        [
          {
            "node": "Fetch Jira Backlog",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Generate AI Digest",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

Automate Jira backlog management with intelligent cleanup, prioritization, and AI-powered reporting. This workflow scans daily to identify stale issues, missing priorities, and overdue tasks — auto-updates Jira with corrective labels, logs everything into Google Sheets for…

Source: https://n8n.io/workflows/9827/ — 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 workflow automates end-to-end pre-surgery checklist reminders and confirmation tracking for healthcare operations teams. It ensures patients receive timely preparation instructions, can confirm c

Google Calendar, Agent, Lm Chat Azure Open Ai +4
AI & RAG

Automates daily EOD summaries from Jira issues into an Excel sheet, then compiles a weekly summary using Azure OpenAI (GPT-4o-mini) and delivers it to stakeholders via email. Gain consistent reporting

Lm Chat Azure Open Ai, Output Parser Structured, Jira +3
AI & RAG

Created by: Peyton Leveillee Last updated: October 2025

OpenAI Chat, Google Sheets, HTTP Request +5
AI & RAG

Automate post-purchase workflows by instantly fetching successful Stripe payments, matching them to corresponding automation templates in Google Sheets, and sending customers personalized access email

Lm Chat Azure Open Ai, Output Parser Structured, Google Sheets Tool +5
AI & RAG

This workflow automates end-to-end ESG (Environmental, Social, and Governance) sustainability reporting for enterprise sustainability teams, compliance officers, and green governance leads. It solves

Agent, OpenAI Chat, Output Parser Structured +12