How to Build an AI Stand-Up Report Generator
Generate daily stand-up reports from project management tool activity.
Jay Banlasan
The AI Systems Guy
Daily standups waste time when everyone just reads off their task list. I built an ai standup report generator that pulls yesterday's activity from your project management tool, summarizes what each person accomplished, and posts the compiled report to Slack. No meeting required.
Async standups that write themselves from real data.
What You Need Before Starting
- Python 3.8+
- API access to your PM tool (Jira, Asana, ClickUp, Linear)
- An AI API key (Claude)
- Slack bot token
Step 1: Pull Activity from Your PM Tool
import requests
from datetime import datetime, timedelta
def fetch_yesterday_activity(api_token, base_url):
yesterday = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")
today = datetime.now().strftime("%Y-%m-%d")
headers = {"Authorization": f"Bearer {api_token}"}
response = requests.get(
f"{base_url}/tasks?updated_after={yesterday}&updated_before={today}",
headers=headers
).json()
by_user = {}
for task in response.get("data", response if isinstance(response, list) else []):
user = task.get("assignee", {}).get("name", "Unassigned")
if user not in by_user:
by_user[user] = {"completed": [], "in_progress": [], "created": []}
status = task.get("status", "")
if status == "complete":
by_user[user]["completed"].append(task["name"])
elif status == "in_progress":
by_user[user]["in_progress"].append(task["name"])
return by_user
Step 2: Generate the Standup Summary with AI
import anthropic
import json
client = anthropic.Anthropic()
def generate_standup(activity_data, team_name):
prompt = f"""Generate a concise daily standup report for the {team_name} team.
Activity data:
{json.dumps(activity_data, indent=2)}
Format each person's update as:
**Name**
- Done: bullet list of completed tasks
- Working on: current tasks
- Blocked: any blockers (if none, skip this line)
Keep it concise. One line per task. No fluff."""
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1500,
messages=[{"role": "user", "content": prompt}]
)
return message.content[0].text
Step 3: Post to Slack
import requests as req
def post_standup_to_slack(report, channel, slack_token, team_name):
date_str = datetime.now().strftime("%A, %B %d")
header = f"Daily Standup: {team_name} - {date_str}"
req.post(
"https://slack.com/api/chat.postMessage",
headers={"Authorization": f"Bearer {slack_token}"},
json={
"channel": channel,
"blocks": [
{"type": "header", "text": {"type": "plain_text", "text": header}},
{"type": "section", "text": {"type": "mrkdwn", "text": report}},
{"type": "divider"},
{"type": "context", "elements": [
{"type": "mrkdwn", "text": "Auto-generated from project activity. Reply in thread to add context."}
]}
]
}
)
Step 4: Allow Manual Additions
from slack_bolt import App
app = App(token="xoxb-your-bot-token")
@app.command("/standup-add")
def add_standup_note(ack, command, client):
ack()
user = command["user_id"]
note = command["text"]
client.chat_postMessage(
channel=command["channel_id"],
text=f"<@{user}> added: {note}",
thread_ts=get_latest_standup_ts(command["channel_id"])
)
Step 5: Schedule and Run
def run_daily_standup(config):
activity = fetch_yesterday_activity(config["pm_token"], config["pm_url"])
report = generate_standup(activity, config["team_name"])
post_standup_to_slack(report, config["slack_channel"], config["slack_token"], config["team_name"])
print(f"Standup posted for {config['team_name']} at {datetime.now().isoformat()}")
# Schedule: weekdays at 9:30am
# 30 9 * * 1-5 python3 /path/to/standup_bot.py
What to Build Next
Add weekly velocity tracking that compares this week's completion count to last week. Surface patterns like "the team completed 40% fewer tasks this week" so managers catch slowdowns early.
Related Reading
- AI-Powered Reporting That Actually Gets Read - reports that drive action
- Cost of Manual vs Cost of Automated - the cost of daily standup meetings
- Building Your First Automation: A Complete Guide - automation fundamentals
Want this system built for your business?
Get a free assessment. We will map every system your business needs and show you the ROI.
Get Your Free Assessment