A lightweight agent that pulls activity from GitHub and Notion, summarizes each team member’s progress using a language model, and sends a clean Slack update. Designed for teams who want async visibility without the overhead of manual standups.
- Fetches activity from GitHub (commits, PRs) and Notion (task status).
- Maps activity to individual contributors using GitHub usernames and Slack IDs.
- Uses a local or API-based language model to generate clear summaries (what was done, what’s in progress, blockers).
- Formats and sends messages to Slack in a simple, readable format.
The agent runs automatically via GitHub Actions (or can be run manually). Here’s the flow:
flowchart TD
A[Scheduled Trigger - GitHub Action] --> B[Auth & Setup]
B --> C[GitHub API]
C --> C1[Pull commits in last 24h]
C --> C2[Fetch PRs created/merged]
C --> C3[Extract metadata - author, repo, message]
B --> D[Notion API]
D --> D1[Fetch Task DB or Board]
D --> D2[Parse status - In Progress, Blocked, Done]
D --> D3[Match user activity with GitHub if possible]
C3 --> E[Activity Aggregation Engine]
D3 --> E
E --> F[LLM Summarizer - GROQ API]
F --> F1[Prompt engineering - What I did / Doing / Blockers]
F1 --> G[Per-user summaries]
G --> H[Final Stand-Up Builder]
H --> H1[Format per-user messages]
H --> H2[Sort + merge team-wide summary]
H2 --> I[Output to Slack ]
I --> I1[Use Webhook or Bot to send to channel]
I1 --> Z[Done! Daily stand-up delivered]
https://github.com/Personal-AIProjects/Auto-Standup-Agent
cd Auto-Standup-Agent
pip install -r requirements.txtOpen the config.ini file and fill in your team details under [members]. This is how the agent links GitHub activity to Slack updates:
[members]
Om_github = ompatil1906
Om_slack_id = U08TQHQEHV4Add one line per user for both GitHub and Slack. IDs must match exactly.
Also in config.ini, set the language model you’re using under [settings]:
[settings]
model = llama3.3-70b-versatileUpdate the slack channel you want to post the message
[settings]
slack_channel=#daily-standupChoose the GitHub mode:
mode = org — fetch activity from all organization repositories
mode = repo — fetch from a single specified repo
[settings]
mode = org ; or "repo"
organization = my-org-name ; required if mode is "org"
owner = username ; required if mode is "repo"
repo = repo-name You'll need these for the agent to fetch data and send messages.
Go to:
Repository → Settings → Secrets and variables → Actions → New repository secret
Add the following:
| Secret Name | Description |
|---|---|
G_TOKEN |
GitHub Personal Access Token |
SLACK_BOT_TOKEN |
Slack Bot Token |
NOTION_TOKEN |
Your Notion integration token |
GROQ_API_KEY |
API key for LLM summarization |
DATABASE_ID |
Notion database ID (where your tasks live) |
This project includes a GitHub Action that can run the agent automatically every day.
- Open
.github/workflows/standup.yaml. - Uncomment the
schedule:section and keepworkflow_dispatch:to allow both daily automatic runs and manual triggers.
on:
schedule:
- cron: '0 8 * * *' # Runs every day at 8:00 AM UTC
workflow_dispatch: # Allows you to run it manuallyYou can adjust the cron expression to change the time of day when the agent runs. For example, to make it run at 8 AM UTC, change it to:
You can change the schedule timing.
Require Microsoft 365 (business or enterprise) account to use the Teams integration for Webhook.
If you want to test before pushing:
python -m agent.standup_agentMake sure the required environment variables are available. You can use a .env file or export them in your shell.
You can plug in other tools like Jira, Linear, or custom Git sources. Just update the fetchers inside:
tools/
├── github_fetcher.py
├── notion_fetcher.py
├── slack_poster.py
And adjust the prompt logic in:
agent/standup_agent.py
MIT License

