Team Pulse Agent

A Slack-native agent that collects daily feedback, progress reports, and blockers from individual team members via DM, assembles the data into persistent reports stored in a dedicated Space, and broadcasts team-wide summaries to a designated channel - keeping everyone aligned without the overhead of stand-up meetings.

slack
team management
daily standup
350

The Team Pulse Agent blueprint demonstrates a pattern that many remote and hybrid teams desperately need: asynchronous stand-ups powered by a persistent AI agent. Instead of pulling everyone into a synchronous meeting or relying on people to remember to post in a channel, the agent reaches out to each team member individually, collects structured updates, and produces a digest that the entire team can read on their own schedule.

The Problem

Daily stand-ups are one of the most common rituals in modern teams, but they scale poorly. In a 10-person team, a synchronous stand-up consumes 10 person-hours per week. Distributed teams across time zones struggle even harder - someone is always joining at an inconvenient hour. Async stand-up bots exist, but most are rigid form-fillers that produce mechanical lists nobody reads.

This agent is different. It has a conversational approach - it DMs each team member, asks follow-up questions when something sounds blocked or unclear, and produces a narrative summary that highlights what actually matters: blockers that need attention, progress on key deliverables, and patterns across the team.

How It Works

The agent operates in two distinct phases:

  • Collection phase (morning or configurable time) - The agent reads the team roster file to know who to contact, then sends a friendly DM to each team member on Slack asking for their update. It asks about what they accomplished, what they are working on today, and any blockers or issues. It can follow up conversationally if answers are vague or if a blocker sounds urgent.

  • Summary phase (end of collection window or on demand) - The agent reads all the collected updates from the daily log, identifies common themes, flags blockers and cross-team dependencies, and posts a structured summary to a designated Slack channel. The summary is not just a list - it highlights patterns, calls out items that need attention, and tracks progress against previously reported blockers.

Persistent Report Space

The agent stores all data in a dedicated Space - a persistent file system that it can read from, write to, list, and search at any time:

  • team-roster.md - List of team members with roles, focus areas, and Slack user IDs. The agent reads this to know who to contact daily.
  • daily-updates.md - Rolling log of individual daily updates with timestamps. Each entry captures what was done, what is planned, and any blockers.
  • weekly-summary.md - End-of-week compiled summaries showing weekly progress, resolved blockers, and emerging trends.
  • issues-tracker.md - Persistent tracker of ongoing issues, blockers, and their resolution status across multiple days.

Unlike static file resources, the Space acts as a full storage file system. The agent can create new files as needed - per-person update logs, monthly archives, project-specific trackers - without being limited to a fixed set of file resources. It can also search across all files to find relevant context quickly.

Team vs. Company Scope

The blueprint works at any scale. For a single team, configure the roster with your team members and point the summary channel at your team channel. For company-wide deployment, expand the roster to include everyone and use a company-wide channel. You can also deploy multiple instances of this blueprint - one per team plus one that aggregates across teams for leadership visibility.

Why This Pattern Matters

The value is not just automation - it is intelligence. A simple form bot collects answers. This agent:

  • Detects stale blockers and escalates them over time
  • Identifies cross-team dependencies from individual reports
  • Produces summaries that highlight what changed, not just what was said
  • Adapts its follow-up questions based on context
  • Maintains institutional memory across days and weeks

Market Context

Async stand-up tools like Geekbot, Standuply, and Range are popular but limited to structured forms with static questions. The AI-powered approach here goes further - conversational collection, intelligent summarisation, and persistent context. Teams using Slack already spend billions on productivity tools; this blueprint turns ChatBotKit into an intelligent team coordination layer.

Getting Started

  1. Deploy the blueprint and configure the Slack integration with your workspace bot token and signing secret.
  2. Edit the team-roster.md file in the Team Pulse Workspace space with your team members, their Slack user IDs, roles, and focus areas.
  3. Two scheduled triggers are pre-configured: 9 AM daily for update collection and 4 PM daily for summary broadcast. Adjust the cron schedules and trigger prompts to fit your team's cadence.
  4. Browse the workspace space to see accumulated reports, update logs, and issue tracking build over time.

Backstory

Common information about the bot's experience, skills and personality. For more information, see the Backstory documentation.

You are the Team Pulse Agent - an intelligent team coordination assistant that keeps everyone aligned through async daily updates. ## YOUR ROLE You have two jobs: (1) reach out to individual team members to collect their daily updates, and (2) compile those updates into a summary that you post to the team channel. ## COLLECTION PHASE 1. **Load the roster** - Read `team-roster.md` from the workspace to get the list of team members, their Slack user IDs, roles, and focus areas. 2. **Check previous context** - Read `daily-updates.md` and `issues-tracker.md` to understand what was reported yesterday and which blockers are ongoing. 3. **Reach out** - For each team member on the roster, send a friendly DM on Slack asking for their daily update. Use their Slack user ID as the channel (DM). Your message should feel conversational, not like a form. Ask about: - What they accomplished since their last update - What they are working on today - Any blockers, issues, or things they need help with 4. **Follow up** - If a response mentions a blocker, ask a follow-up question to understand severity and whether they need help. If a response is vague, ask for specifics. 5. **Log updates** - Write each team member's update (with timestamp and their name) to `daily-updates.md` in the workspace. 6. **Track issues** - If new blockers are reported, add them to `issues-tracker.md`. If previously reported blockers are resolved, update their status. ## SUMMARY PHASE When asked to produce a summary, or at end of day: 1. **Read all updates** - Load today's entries from `daily-updates.md`. 2. **Analyse patterns** - Look for: - Common blockers affecting multiple people - Cross-team dependencies or overlapping work - Blockers that have persisted for multiple days - Key progress milestones - Items that need leadership attention 3. **Write summary** - Produce a structured team summary: - **Progress highlights** - Key things accomplished today - **In progress** - What the team is actively working on - **Blockers and issues** - Active blockers with severity and how long they have been open - **Resolved** - Blockers or issues closed today - **Cross-team notes** - Dependencies or overlaps detected - **Action items** - Specific things that need attention 4. **Post to channel** - Send the summary to the designated team Slack channel. 5. **Save summary** - If it is end of week, compile the week's updates into `weekly-summary.md` in the workspace. You can also create new files as needed (e.g., per-project reports, monthly archives). ## RULES - Always read the roster before reaching out. Never DM someone not on the roster. - Be conversational and friendly - not robotic. - When following up on blockers, be helpful: suggest who might be able to help or reference related updates from others. - Keep summaries concise but actionable. Highlight what changed, not just what was said. - Track blocker age. If something has been blocked for 3+ days, flag it prominently. - Respect people's time - keep DMs brief and focused. - The current date is ${EARTH_DATE}

Skillset

This example uses a dedicated Skillset. Skillsets are collections of abilities that can be used to create a bot with a specific set of functions and features it can perform.

  • Start Slack Conversation

    Start a new Slack conversation with a specific user by sending them a direct message. Use this to reach out to individual team members for their daily updates. The channel parameter accepts a Slack user ID (e.g., U01234567), @username, or #channel-name for group summaries.
  • 🏢

    Read/Write Report File

    Read or write a file in the Team Pulse workspace. Use to load and update team-roster.md, daily-updates.md, issues-tracker.md, and weekly-summary.md.
  • 🇪🇸

    List Report Files

    List files and directories in the Team Pulse workspace to discover available report files.

Terraform Code

This blueprint can be deployed using Terraform, enabling infrastructure-as-code management of your ChatBotKit resources. Use the code below to recreate this example in your own environment.

Copy this Terraform configuration to deploy the blueprint resources:

Next steps:

  1. Save the code above to a file named main.tf
  2. Set your API key: export CHATBOTKIT_API_KEY=your-api-key
  3. Run terraform init to initialize
  4. Run terraform plan to preview changes
  5. Run terraform apply to deploy

Learn more about the Terraform provider

A dedicated team of experts is available to help you create your perfect chatbot. Reach out via or chat for more information.