PM Slack standup bot
Create an AI-powered bot that collects daily standup responses, analyzes team progress, and posts executive summaries
Build an AI-powered Slack standup bot that posts daily standup prompts to your team channel, collects responses in organized threads, analyzes progress and blockers, and posts executive summaries to leadership channels — tracking recurring blockers and patterns over time.
What you'll learn
- Configuring the Slack provider
- Setting up OAuth for Slack workspace access
- Creating an AI agent that processes team updates
- Posting and reading Slack messages programmatically
Before you begin
- Review Workforce concepts
- Create API keys
- Slack workspace with admin access
- Anthropic API key (Claude Sonnet 4 or newer recommended)
Time to complete: 10-15 minutes
Prerequisites
Before building the standup bot, ensure you have:
-
Metorial setup:
- Active Metorial account at platform.metorial.com
- Project created in your organization
- Metorial API key (generate in Dashboard → Developer → API Keys)
-
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
Tools used: Slack provider (post messages, read threads) + AI Model (analysis and summarization)
Step 1: Configure Slack provider
Configure the Slack provider from Metorial's catalog to enable your bot to interact with Slack.
Navigate to provider catalog
In the Metorial Dashboard, go to Providers and search for "Slack".
Create a Slack integration
Click the Slack provider, then click Use Provider → Integration.
Choose the Slack auth method, create or select auth credentials, and review tool filters for message and channel access.
Note your deployment ID
After setup, copy the provider deployment or integration ID shown in the dashboard. You'll need this for OAuth setup and in your bot code.
Info
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.
Install dependencies
Install the Metorial SDK and Anthropic:
Create OAuth session
Run this code to generate the Slack OAuth URL:
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)
Store auth config ID
Save the auth config ID securely. You'll reuse it for all future bot operations without re-authorizing.
For production apps, store auth config IDs in your database or environment variables.
Note
Required OAuth Scopes:
The Slack provider 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
The required scopes are automatically requested when you authorize via the OAuth URL.
Step 3: Build the standup bot
Create the main bot that collects standup responses and generates summaries.
What this code does:
- Posts standup prompt to the team channel with clear instructions
- Waits for responses (configurable time)
- Collects all thread replies using the Slack provider
- 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
Info
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:
Run the bot:
Expected behavior:
- 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:
Note
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:
Customize standup questions for your team's needs (e.g., "What are you learning today?", "Team shoutouts", "Health check: 1-5").
Run standups across multiple teams with different channels and schedules. Store team configs in a database.
Store historical standup data to track:
- Recurring blockers
- Team velocity trends
- Common challenges Generate weekly/monthly reports
Send DMs to team members who haven't responded. Use Slack's users.list to track participation rates.
Connect with project management tools (Linear, Jira) to:
- Link updates to specific tasks
- Auto-update task status
- Cross-reference blockers with tickets
Track team morale over time by analyzing sentiment in standup responses. Alert leadership to significant drops.
Example: Custom questions
Update the standup prompt:
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
Info
Scheduling Tip:
Use a scheduling service to trigger the bot daily: