What You’ll Build
Build an AI-powered Slack standup bot that:- Posts daily standup prompts to your team channel
- Collects responses in organized threads
- AI analyzes progress, blockers, and team dependencies
- Generates executive summaries with key insights
- Posts summaries to leadership channels
- Tracks recurring blockers and patterns over time
What you’ll learn:
- Deploying the Slack MCP server
- Setting up OAuth for Slack workspace access
- Creating an AI agent that processes team updates
- Posting and reading Slack messages programmatically
- Create a Metorial account
- Create API keys
- Slack workspace with admin access
- Anthropic API key (Claude Sonnet 4 or newer recommended)
Prerequisites
Before building the standup bot, ensure you have:-
Metorial setup:
- Active Metorial account at app.metorial.com
- Project created in your organization
- Metorial API key (generate in Dashboard → Home → Connect to Metorial)
-
Slack workspace:
- Admin access to install apps
- Channel where standups will be posted
- Leadership/executive channel for summaries (optional)
-
AI provider:
- Anthropic API key (Claude Sonnet 4 or newer recommended for analysis)
-
Development environment:
- Node.js 18+ (TypeScript) or Python 3.9+ installed
- Basic knowledge of async/await patterns
Architecture Overview
The standup bot workflow:- Trigger: Bot posts standup prompt to team channel (scheduled or manual)
- Collection: Team members reply in thread with their updates
- Analysis: AI analyzes all responses for:
- Individual progress and accomplishments
- Blockers and dependencies between team members
- Team sentiment and morale
- Recurring issues
- Summary: Bot generates and posts executive summary to leadership channel
- Storage: Optionally stores historical data for trend analysis
Step 1: Deploy Slack MCP Server
Deploy the Slack MCP server from Metorial’s catalog to enable your bot to interact with Slack.Deploy Slack Server
Click the Slack server, then click Deploy Server → Server Deployment.Give your deployment a descriptive name like “Standup Bot Slack”.
Save your Slack deployment ID—you’ll need it for OAuth setup (Step 2) and in your bot code (Step 3).
Step 2: Set Up OAuth Authentication
Your standup bot needs permission to post messages and read thread replies in your Slack workspace.Authorize in Browser
- Open the printed OAuth URL in your browser
- Sign in to Slack if needed
- Review and approve the permissions (the bot needs to post messages and read channels)
- You’ll be redirected to your callback URL (or see a confirmation page)
Required OAuth Scopes:The Slack MCP server requires these scopes:
chat:write- Post messages to channelschannels:read- Read public channel informationchannels:history- Read message history to collect thread repliesusers:read- Get user information for mentions
Step 3: Build the Standup Bot
Create the main bot that collects standup responses and generates summaries.- Posts standup prompt to the team channel with clear instructions
- Waits for responses (configurable time)
- Collects all thread replies using the Slack MCP server
- AI analyzes responses for progress, blockers, and dependencies
- Generates executive summary with key insights
- Posts summary to leadership channel
- Uses agentic workflow - AI decides which Slack tools to call and when
This uses Claude’s agentic capabilities—the AI decides when to read the thread, how to analyze the data, and when to post the summary. You don’t need to write explicit logic for parsing responses or formatting summaries.
Step 4: Test the Bot
Let’s test the bot with example standup responses. Scenario: Run standup in a test channel with your team. Example responses:- Bot posts standup prompt to team channel
- Team members reply in thread
- After 5 minutes, bot collects all responses
- AI analyzes and generates summary:
- Summary is posted to executive channel
Troubleshooting
Common issues and solutions when building your standup bot:Bot doesn't post messages to Slack
Bot doesn't post messages to Slack
Possible causes:
- OAuth session expired or invalid
- Incorrect channel ID
- Bot doesn’t have permission to post in channel
- Verify your OAuth session is active: re-run the OAuth setup if needed
- Check the channel ID is correct (not channel name)
- Ensure the bot is invited to the channel:
/invite @YourBot - Verify OAuth scopes include
chat:write - Check Metorial dashboard logs for API errors
Bot can't read thread replies
Bot can't read thread replies
Possible causes:
- Missing
channels:historyscope - Incorrect thread timestamp
- Bot not in channel
- Verify OAuth scopes include
channels:history - Check the thread_ts value matches the original message
- Ensure bot is member of the channel
- Try in a public channel first (private channels need additional setup)
AI summaries are too generic or miss details
AI summaries are too generic or miss details
Possible causes:
- Prompt lacks specific instructions
- Not enough context provided
- Model running out of tokens
- Add more specific analysis guidelines to the prompt
- Increase
max_tokensto 8192 or higher - Use Claude Sonnet 4 or newer for better understanding
- Provide example summaries in the prompt
- Include team-specific context (project names, terminology)
OAuth authorization fails
OAuth authorization fails
Responses not collected properly
Responses not collected properly
Possible causes:
- Collection time too short
- Wrong thread timestamp
- API rate limiting
- Increase
collection_time_minutesto give team more time - Verify the thread_ts is correct
- Check Slack API rate limits (50+ requests per minute)
- Add error handling to retry failed API calls
- Log the thread_ts immediately after posting to debug
Rate limiting: Slack API requests failing
Rate limiting: Slack API requests failing
Slack API limits:
- Tier 1 methods: 1 request per minute
- Tier 2 methods: 20 requests per minute
- Tier 3 methods: 50 requests per minute
- Implement exponential backoff for rate limit errors
- Cache channel and user information
- Batch operations when possible
- Use Slack’s rate limit headers to track usage
- For high-frequency bots, consider Slack’s paid tiers
If you encounter errors not covered here, check the Metorial dashboard logs (Monitoring section) to see detailed tool execution traces and Slack API responses.
Advanced Customization
Enhance your standup bot with these customizations:Custom Questions
Customize standup questions for your team’s needs (e.g., “What are you learning today?”, “Team shoutouts”, “Health check: 1-5”).
Multi-Team Support
Run standups across multiple teams with different channels and schedules. Store team configs in a database.
Trend Tracking
Store historical standup data to track:
- Recurring blockers
- Team velocity trends
- Common challenges Generate weekly/monthly reports
Reminder System
Send DMs to team members who haven’t responded. Use Slack’s users.list to track participation rates.
Project Integration
Connect with project management tools (Linear, Jira) to:
- Link updates to specific tasks
- Auto-update task status
- Cross-reference blockers with tickets
Sentiment Analysis
Track team morale over time by analyzing sentiment in standup responses. Alert leadership to significant drops.
Production Considerations
Before deploying to production:-
Scheduling: Set up daily automated runs:
- Use cron jobs or cloud schedulers (AWS EventBridge, GCP Cloud Scheduler)
- Typical schedule: 9:00 AM team local time, Monday-Friday
- Consider time zones for distributed teams
-
Error Handling: Add robust error handling:
- Retry failed Slack API calls with exponential backoff
- Alert admins if standup fails to post or collect responses
- Handle missing or malformed responses gracefully
-
Non-Responders: Send reminders:
- Track who responded vs. who didn’t
- Send DM reminders 2-3 minutes before deadline
- Include non-responder list in summary for follow-up
-
Data Storage: Store historical data:
- Save standup responses and summaries to database
- Track participation rates over time
- Enable trend analysis and reporting
-
Privacy & Security:
- Store OAuth tokens securely (environment variables, secret managers)
- Be mindful of sensitive information in standups
- Consider data retention policies for historical standups
- Allow team members to edit/delete their responses
-
Customization per Team:
- Store team configs (channel IDs, questions, timing)
- Allow teams to opt-in/opt-out
- Support different schedules for different teams
-
Performance:
- Cache Slack user info to reduce API calls
- Implement request queuing for multiple teams
- Monitor token usage and costs
-
Testing:
- Test in a sandbox channel first
- Have a manual override to skip days (holidays, etc.)
- Implement dry-run mode for testing prompts
Scheduling Tip:Use a scheduling service to trigger the bot daily:
What’s Next?
Congratulations! You’ve built an AI-powered Slack standup bot that automates team updates and provides executive insights.Learn More
SDK Documentation
Explore advanced SDK features and patterns.
OAuth Guide
Learn more about managing Slack authorization.
Monitoring Guide
Monitor bot performance and standup participation.
Related Sample Projects
Code Review Bot
Build an AI code reviewer that analyzes pull requests for security issues and code quality.
Interview Coordinator Bot
Create an AI coordinator that schedules interviews and sends professional emails.
Need help? Email us at support@metorial.com.