From Slack to Jira, support internal users where they are!
Tired of "can you create me a ticket?" when people ask a question on Slack? SupportHero is your support companion that removes friction for users who request support and keeps the processes for the teams that provide support.
- Configure emoji reactions (like ๐ซ
:ticket:or ๐ฅ:fire:) that automatically create Jira tickets - Support for user-specific and user group-specific configurations
- Channel-specific or workspace-wide reaction setups
- Optional AI summarization for intelligent ticket titles
- Converts long Slack messages into concise, meaningful Jira ticket summaries
- Graceful fallback to text truncation if AI fails
- Automatic CSAT surveys sent to ticket reporters
- Configurable reminder system for pending surveys
- Analytics and reporting on support quality
- Slack: Native app with shortcuts, interactive messages, and reaction handling
- Jira: Full OAuth integration with automatic token refresh
- Multi-tenant: Support for multiple Slack workspaces and Jira instances
- Per-reaction configuration with project mapping
- Custom feedback messages with variable substitution
- Label and component assignment
- Issue type customization
๐ค User: "Hey, I can't access the VPN from home. It keeps timing out."
๐ซ Someone reacts with :ticket:
๐ค SupportHero creates Jira ticket: "VPN connection timeout issue from home office"
๐ฌ Automated response: "Hi @user! We've created ticket IT-123 for your VPN issue."
๐ CSAT survey sent after ticket resolution
๐ค Employee: "I need help updating my emergency contact information in the system."
๐ฅ HR team member reacts with :fire: (urgent HR requests)
๐ค Creates ticket: "Emergency contact information update request"
๐ Automatically assigned to HR project with "Personal Info" component
๐ค Developer: "Production API is returning 500 errors for all /users endpoints since 2PM"
๐จ DevOps reacts with :rotating_light:
๐ค Creates P1 incident: "Production API 500 errors on /users endpoints"
โก Instantly routed to DevOps project with "Critical" priority
๐ค Manager: "I need access to the finance dashboard for Q4 reporting"
๐ Security team reacts with :lock:
๐ค Creates access request: "Finance dashboard access for Q4 reporting"
๐ Auto-tagged with "access-request" and "finance" labels
Available infrastructure diagram.
- Slack Integration: Event handling, OAuth, message processing
- Jira Integration: Ticket creation, project management, OAuth token refresh
- AI Summarization: LangChain4j integration for intelligent title generation
- CSAT Management: Survey delivery and reminder scheduling
- Configuration Management: Reaction mappings, user permissions, project settings
- Event Processing: Reaction events, ticket lifecycle, user interactions
- Multi-tenancy: Isolated configurations per Slack workspace
- Database: PostgreSQL with JOOQ for type-safe queries
- Caching: Redis for event deduplication and temporary data
- Security: Per-tenant encryption for OAuth tokens
- External APIs: Slack SDK, Jira REST API, AI services
-
Install the Slack App
# Configure your Slack app using the manifest cp slack-app-manifest.json your-app-manifest.json # Update URLs in the manifest for your deployment
-
Connect to Jira
- Use the global shortcut "Configure new reaction"
- Authenticate with your Jira instance
- SupportHero handles OAuth flow automatically
-
Configure Reactions
/shortcut "Configure new reaction" ๐ Select Jira Project: "IT Support" ๐ฏ Choose Reaction: ๐ซ :ticket: ๐ฅ Assign to User/Group: @it-support-team ๐ Issue Type: "Task" ๐ฌ Feedback Message: "Hi $reporter! Created ticket $issue for you." ๐ค AI Summarizer: โ Enabled ๐ Send CSAT: โ Enabled -
Start Using
- React to any Slack message with your configured emoji
- SupportHero automatically creates Jira tickets
- Users get instant feedback with ticket links
- Project Mapping: Link reactions to specific Jira projects
- User/Group Permissions: Control who can create tickets
- Channel Scope: Global or channel-specific reactions
- AI Summarization: Enable intelligent title generation
- CSAT Surveys: Automatic customer satisfaction tracking
Support dynamic variables in feedback messages:
$reporter- @mention of the ticket reporter$issue- Jira ticket key (e.g., IT-123)
Example:
"Thanks $reporter! ๐ซ Created $issue for your request. We'll get back to you soon!"
- Java 17+
- Kotlin 1.9+
- PostgreSQL 16+
- Redis 7+
- Slack App with appropriate permissions
- Jira Cloud instance with API access
-
Database Setup
# Start dependencies ./deps start # Run migrations ./gradlew liquibaseUpdate
-
Environment Configuration
# Copy and configure environment cp .env.properties.example .env.properties # Required variables: ENCRYPTION_MASTER_KEY=your-secure-master-key SLACK_CLIENT_SECRET=your-slack-client-secret SLACK_SIGNING_SECRET=your-slack-signing-secret SLACK_REDIRECT_HOST=https://your-ngrok-url.ngrok.io JIRA_CLIENT_SECRET=your-jira-oauth-secret ANTHROPIC_API_KEY=your-ai-api-key
-
Slack App Configuration
# Generate environment-specific manifest ./configure-slack-app dev # Use the generated manifest in Slack App settings cat slack-app-dev-manifest.json
-
Run Application
./gradlew bootRun
# Run all tests
./gradlew test
# Run specific test suites
./gradlew test --tests "*CreateJiraFromReactionTest*"
./gradlew test --tests "*TenantEncryptionServiceTest*"- OAuth tokens encrypted with tenant-specific keys
- AES-256-GCM encryption with PBKDF2 key derivation
- Cross-tenant isolation prevents data leaks
See encryption setup for detailed security configuration.
- Ticket Creation Rate: Reactions โ Jira tickets per period
- CSAT Scores: Average satisfaction ratings per configuration
- Response Times: Time from reaction to ticket resolution
- User Adoption: Active users and reaction usage patterns
-
Clone and Setup
git clone https://github.com/abistama/supporthero.git cd supporthero ./deps start -
Make Changes
- Follow Kotlin coding conventions
- Add tests for new features
- Update documentation as needed
-
Test and Deploy
./gradlew test ./gradlew build
- Kotlin + Spring Boot: Type safety, coroutines, reactive programming
- JOOQ: Type-safe SQL with compile-time verification
- Arrow: Functional programming for error handling
- LangChain4j: AI integration with multiple provider support
- Issues: Create GitHub issues for bugs and feature requests
- Discussions: Use GitHub Discussions for questions and ideas
- Contact: Reach out via email at contact at abistama dot com.
Made with โค๏ธ for support teams everywhere
SupportHero - Because great support starts where your users are