CASE STUDY

AI-Powered Slack-to-Jira Workflow Automation with Voice Input & Daily Digests

Background

The client runs a analytics agency serving a portfolio of concurrent clients each with its own team-managed Jira project on client.atlassian.net. Day-to-day coordination happens almost entirely in Slack: internal standups. Execution, however, lives in Jira. Bridging the two without creating administrative drag was the core motivation for this automation suite.

Problem Statement

Before automation, the Slack-to-Jira handoff created three recurring pain points:

1.

High friction at capture.
Creating a Jira task from a Slack conversation meant leaving the discussion, navigating to the right project, filling in summary/assignee/priority/due date, and returning to post the link. Action items frequently disappeared into chat scroll.

2.

Inconsistent task hygiene.
When tasks were created manually, assignees, priorities, and due dates were often omitted, which degraded downstream reporting and capacity planning.

3.

No ambient awareness.
The team had no daily visibility into what was open, late, or newly commented on across every client's Jira project without actively opening the board for each one.

4.

Onboarding overhead.
Spinning up a new client involved manually creating a Jira project with the right template, key, and lead.

The goal was a Slack-native automation layer that removed friction at every touchpoint of the task lifecycle from project creation through daily status reporting.

Solution

The suite consists of five interconnected n8n workflows, each solving one part of the lifecycle. They share a common tech stack, authentication pattern, and conventions so the system behaves as one product even though it is built from independent workflows.

Tech Stack
Layer Technology
Orchestration Self-hosted n8n on AWS EC2 (Amazon Linux 2023), behind Nginx with SSL at client-n8n.duckdns.org
Messaging Slack Events API (app_mention, file_shared), Slash Commands, Web API (chat.postMessage, users.list, files.info, conversations.info, canvases.edit)
Issue Tracking Jira REST API v3 on client.atlassian.net, Basic Auth (Atlassian email + API token)
AI Anthropic Claude API Haiku for intent parsing and classification, Sonnet for audio transcription and the daily digest narrative
Scheduling n8n Cron trigger (9 AM and 6 PM IST, Mon–Fri)

The Five Workflows

The suite consists of five interconnected n8n workflows, each solving one part of the lifecycle. They share a common tech stack, authentication pattern, and conventions so the system behaves as one product even though it is built from independent workflows.

1. Create Client Space from Slack

Trigger: /create-client [client name] slash command.

Purpose: Onboard a new client by spinning up a Jira project in one step.

The workflow parses the URL-encoded form body from Slack, derives an uppercase alphanumeric project key (2–6 chars), and POSTs to /rest/api/3/project using the
Scrum template with a configured lead account. On success it replies in-channel with the board URL; on failure (usually a duplicate key) it returns a readable error and suggests a fix.

2. Create Jira Task from Slack Command

Trigger: /create-task slash command plus file_shared event for voice input.

Purpose: Text and voice task creation with structured output.

The text path parses the slash command payload. The voice path handles an interesting Slack quirk: the file_shared event returns only a file_id, so the workflow calls files.info to retrieve the full metadata, filters on audio MIME types, downloads the binary, and sends it to Claude Sonnet for transcription and intent extraction. Both paths converge on the shared create pipeline: project match → Slack user resolution → Jira user lookup (by email first, falling back to display name because email lookup is often blocked by Jira user visibility settings) → ADF-formatted payload → POST /rest/api/3/issue → threaded confirmation in Slack.

3. JiraFlow Bot

Trigger: @jiraFlow app_mention.

Purpose: Conversational, in-thread task creation and lookups.

Unlike the slash-command workflows, JiraFlow Bot handles free-form natural language. A Claude Haiku call parses the message into one of four intents create_task, my_tasks, show_report, or help and extracts structured fields (summary, assignee, client, due date, priority). The router then dispatches to the appropriate branch: create_task reuses the same pipeline as workflow #2; my_tasks queries Jira for the caller’s open issues; show_report returns a mini-digest for the channel’s client; help returns usage examples.

4. List Tasks from Slack

Trigger: Slash command.
Purpose: On-demand Jira queries from Slack for quick status checks.
A lightweight lookup workflow that accepts a user or client argument, queries Jira with a JQL filter scoped to the right project and assignee, and posts a formatted list back to the channel. Useful for “what’s on my plate” and “what’s open for Tendium” style questions without waiting for the daily digest.

5. Notification Flow

Trigger: Cron 9 AM and 6 PM IST, Monday to Friday.
Purpose: Daily Jira status digest delivered to Slack.

This is the most complex workflow in the suite. It pulls all active issues across every client project, organises them by client and assignee into status buckets (overdue, blocked, in progress, in review, client review, to do, done), tracks changelog-based late-detection, and uses a Claude Classify Comments node to categorise recent comments into urgency tiers. Output goes to two surfaces:

  • A per-client table posted to channel
  • A full markdown report written to canvas via edit

The digest also surfaces due-date changes, computes per-person urgency-ranked execution plans, and flags stalled items. One operational note that caused real bugs early on: Code nodes in n8n must never convert \n to literal newlines inside string payloads — Slack and Jira both reject the resulting malformed JSON.

A task flows cleanly from the moment it’s mentioned in Slack through to the next morning’s digest without anyone leaving Slack.

Results and Impact

Task capture rate improved significantly.

Action items that previously died in chat scroll now reach Jira consistently, because capture takes ~5 seconds instead of ~60.

Voice-based capture.

Enables hands-free task creation during client calls and on mobile, which opened the tool to non-technical collaborators who had previously avoided Jira’s UI.

Standardised issue hygiene.

Every task created through the suite has an assignee, priority, and due date populated, which improved the fidelity of the daily digest and capacity planning.

Ambient awareness.

The twice-daily notification flow gives the whole team a shared view of what is overdue, newly commented, or newly assigned across every client no board-hopping required.

Cost is negligible.

Roughly $0.001 per text task (Haiku), ~$0.003 per voice task (Sonnet), and a few cents per daily digest effectively free relative to the time saved.

Reusable scaffolding.

The Slack-event → Claude-parse → external-API pattern established here now underpins adjacent internal tools (Kai, the client’s Slack assistant) and can be extended to HubSpot, BigQuery, or any other service without rebuilding the webhook, auth, or error-handling plumbing.
Shopping Basket