Skip to content

Blog: F*$k youuuu standup bot!#14529

Merged
andrewm4894 merged 17 commits intomasterfrom
blog/standup-bot-revenge
Apr 4, 2026
Merged

Blog: F*$k youuuu standup bot!#14529
andrewm4894 merged 17 commits intomasterfrom
blog/standup-bot-revenge

Conversation

@andrewm4894
Copy link
Copy Markdown
Member

@andrewm4894 andrewm4894 commented Jan 23, 2026

Summary

New engineering blog post about building a multi-agent system to automate daily standups using PostHog LLM analytics for instrumentation.

https://6b09ca6f.posthog-preview.pages.dev/blog/standup-bot-revenge

Covers:

  • Multi-agent architecture with OpenAI Agents SDK (coordinator, data gatherer, summarizer)
  • PostHog LLM analytics integration for tracing, evals, and feedback
  • Real example walkthrough with screenshots
  • Customization via style.md and examples.md config files
  • Three "hot takes" on agents, human-in-the-loop, and the future of standups

Links to open source repo: https://github.com/andrewm4894/github-standup-agent

Checklist

  • Blog post content complete
  • Images uploaded to Cloudinary
  • Featured hero image (TODO in post)
  • Optional: Architecture diagram (TODO in post)

@vercel
Copy link
Copy Markdown

vercel bot commented Jan 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
posthog Error Error Feb 5, 2026 5:53pm

Request Review

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

Deploy preview

Status Details Updated (UTC)
🟢 Ready View preview Apr 04, 2026 02:31PM

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

Vale prose linter → found 46 errors, 25 warnings, 0 suggestions in your markdown

Full report → Copy the linter results into an LLM to batch-fix issues.

Linter being weird? Update the rules!

contents/blog/standup-bot-revenge.mdx — 46 errors, 25 warnings, 0 suggestions
Line Severity Message Rule
11:53 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
11:86 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
43:72 warning 'standups' is a possible misspelling. PostHogBase.Spelling
48:29 warning 'dogfooder' is a possible misspelling. PostHogBase.Spelling
67:4 warning 'The architecture: one agent to rule them all' heading should be in sentence case, and product names should be capitalized. PostHogBase.SentenceCase
69:14 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
71:201 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
73:126 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
77:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
78:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
79:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
80:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
80:26 warning 'standups' is a possible misspelling. PostHogBase.Spelling
81:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
82:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
139:215 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
187:136 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
218:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
219:1 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
220:57 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
228:31 warning 'hardcoding' is a possible misspelling. PostHogBase.Spelling
230:31 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
231:17 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
231:56 warning 'mrkdwn' is a possible misspelling. PostHogBase.Spelling
233:17 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
234:21 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
236:45 warning 'standups' is a possible misspelling. PostHogBase.Spelling
236:201 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
238:212 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
240:55 warning 'vibecoded' is a possible misspelling. PostHogBase.Spelling
244:168 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
244:266 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
250:151 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
256:4 error 'bad' is repeated! Vale.Repetition
257:24 warning 'im' is a possible misspelling. PostHogBase.Spelling
257:49 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
261:144 warning 'dont' is a possible misspelling. PostHogBase.Spelling
261:280 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
268:14 warning 'dogfooding' is a possible misspelling. PostHogBase.Spelling
268:108 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
268:216 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
268:363 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
270:5 warning 'eval' is a possible misspelling. PostHogBase.Spelling
270:97 warning 'mrkdwn' is a possible misspelling. PostHogBase.Spelling
270:234 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
270:424 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
272:71 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
278:182 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
278:250 warning 'eval' is a possible misspelling. PostHogBase.Spelling
282:76 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
282:91 warning Capitalize 'Product Analytics' for PostHog's product. Use 'product analytics' for the general industry concept. PostHogBase.ProductNames
282:269 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
303:304 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
360:53 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
360:112 warning 'standups' is a possible misspelling. PostHogBase.Spelling
360:425 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
391:44 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
392:61 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
393:47 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
394:55 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
395:100 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
396:65 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
402:70 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
407:25 warning 'standups' is a possible misspelling. PostHogBase.Spelling
407:275 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
407:395 warning 'standups' is a possible misspelling. PostHogBase.Spelling
407:493 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
417:78 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
418:98 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
419:6 warning 'learnings' is a possible misspelling. PostHogBase.Spelling
419:90 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash

@andrewm4894 andrewm4894 force-pushed the blog/standup-bot-revenge branch from 84736cc to 22b575e Compare April 2, 2026 10:32
An unhinged, developer-friendly post walking through the github-standup-agent
project - a multi-agent system that automates daily standup generation with
full PostHog LLM analytics instrumentation.

Includes placeholder comments for screenshots and images to be added later.
- Added actual CLI log showing the full agent workflow
- Showcased inferred feedback feature (agent picks up on casual praise)
- Added iterative refinement example (remove ask, add Will Do)
- Added standup-bot-taunt screenshot at the start
- Added standup-bot-output screenshot showing final Slack message
- Reorganized cool features section
- trace-view.png: Full agent workflow trace
- trace-summary.png: AI-generated trace summary
- eval-example.png: Evals showing quality metrics linked to traces

These showcase the PostHog integration for observability and evals.
Switched all local image references to Cloudinary-hosted versions
and removed the local image files that are no longer needed.
- Added three "Hot take" callout boxes throughout the post:
  1. "Agents are the new scripts" - after the plan section
  2. "Human in the loop matters" - after the real example
  3. "Why are we doing standups" - in the closing section

- Expanded the customization section to cover both style.md and
  examples.md config files with better examples
- Rewrite architecture section with real multi-agent-to-single-agent story
- Update code examples and output to match actual agent behavior
- Add internal links to LLM analytics docs throughout
- Fix broken doc links (/docs/ai-engineering/* -> /docs/llm-analytics/*)
- Add new sections: prompt management, tool usage, clustering, sentiment, evals
- Include real screenshots: trace view, tools tab, sentiment tab, eval results
- Replace hero image with clearer Slack standup bot screenshot
- Update victory lap section with real session log
- Add Claude Code source leak reference in prompts section
- Center-align all images, external links open in new tabs
- Replace CalloutBox with inline styled hot take boxes
- Clean up further reading section to match site conventions
@andrewm4894 andrewm4894 force-pushed the blog/standup-bot-revenge branch from 22b575e to ba56256 Compare April 2, 2026 14:57
@andrewm4894 andrewm4894 marked this pull request as ready for review April 2, 2026 15:01
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ba56256a75

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Contributor

@ivanagas ivanagas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great, some suggested tweaks but basically good to go.

@@ -0,0 +1,445 @@
---
date: 2026-04-01
title: "F*$k youuuu standup bot!"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Too played out?

Suggested change
title: "F*$k youuuu standup bot!"
title: "I hate the standup bot (so I built an agent to do it for me)"

Comment on lines +19 to +21
![The standup bot, taunting me](https://res.cloudinary.com/dmukukwp6/image/upload/q_auto,f_auto/standup_bot_slack_hero_955e94601d.png)

There it is. Staring at me. Sitting there. Goading me.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should do text and then image.

Suggested change
![The standup bot, taunting me](https://res.cloudinary.com/dmukukwp6/image/upload/q_auto,f_auto/standup_bot_slack_hero_955e94601d.png)
There it is. Staring at me. Sitting there. Goading me.
There it is. Staring at me. Sitting there. Goading me.
![The standup bot, taunting me](https://res.cloudinary.com/dmukukwp6/image/upload/q_auto,f_auto/standup_bot_slack_hero_955e94601d.png)


There it is. Staring at me. Sitting there. Goading me.

The day is nearly done. I've reviewed PRs, fixed bugs, hopped on quick calls, commanded my agents and smashed that accept button all day!
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The day is nearly done. I've reviewed PRs, fixed bugs, hopped on quick calls, commanded my agents and smashed that accept button all day!
The day is nearly done. I've reviewed PRs, fixed bugs, hopped on quick calls, commanded my agents, and smashed that accept button all day!


Every time I manually copy-paste into our standup thread, a little part of me dies inside.

We just [passed the Turing test](https://www.reddit.com/r/Futurism/comments/1jpzb8s/an_ai_model_has_officially_passed_the_turing_test/) and here I am copy-pasting GitHub issue URLs into a Slack thread like it's 2010. I'm pulling up tabs, hunting for PR links, navigating all over GitHub, trying to remember what I (my agents) actually did today, and formatting it all nicely in slack.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
We just [passed the Turing test](https://www.reddit.com/r/Futurism/comments/1jpzb8s/an_ai_model_has_officially_passed_the_turing_test/) and here I am copy-pasting GitHub issue URLs into a Slack thread like it's 2010. I'm pulling up tabs, hunting for PR links, navigating all over GitHub, trying to remember what I (my agents) actually did today, and formatting it all nicely in slack.
We just [passed the Turing test](https://www.reddit.com/r/Futurism/comments/1jpzb8s/an_ai_model_has_officially_passed_the_turing_test/) and here I am copy-pasting GitHub issue URLs into a Slack thread like it's 2010. I'm pulling up tabs, hunting for PR links, navigating all over GitHub, trying to remember what I (my agents) actually did today, and formatting it all nicely in Slack.

- Build [instrumentation for it](/docs/llm-analytics/installation/openai-agents) in [`posthog-python`](/docs/libraries/python)
- Create something I can actually use every day
- Write this very blog post
- But most importantly, use AI even if it actually sometimes takes me longer each day than it did before.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand what this sentence is saying


## Try it yourself

The agent is open source: [github.com/andrewm4894/github-standup-agent](https://github.com/andrewm4894/github-standup-agent)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The agent is open source: [github.com/andrewm4894/github-standup-agent](https://github.com/andrewm4894/github-standup-agent)
The agent is open source, [go check it out](https://github.com/andrewm4894/github-standup-agent) or try it yourself:

- **[Clustering](/docs/llm-analytics/clusters)** and **[sentiment](/docs/llm-analytics/sentiment)** - Spot patterns in how your agent is used
- **[User feedback](/docs/llm-analytics/collect-user-feedback)** - Link quality signals to specific traces

The OpenAI Agents SDK integration is [available in posthog-python](https://github.com/PostHog/posthog-python/pull/408). Check out our other integrations for [LangChain](/docs/llm-analytics/installation/langchain), [OpenAI](/docs/llm-analytics/installation/openai), and [many other frameworks](/docs/llm-analytics/installation).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The OpenAI Agents SDK integration is [available in posthog-python](https://github.com/PostHog/posthog-python/pull/408). Check out our other integrations for [LangChain](/docs/llm-analytics/installation/langchain), [OpenAI](/docs/llm-analytics/installation/openai), and [many other frameworks](/docs/llm-analytics/installation).
The OpenAI Agents SDK integration is [available in `posthog-python`](https://github.com/PostHog/posthog-python/pull/408). Check out our other integrations for [LangChain](/docs/llm-analytics/installation/langchain), [OpenAI](/docs/llm-analytics/installation/openai), and [many other frameworks](/docs/llm-analytics/installation).

Comment on lines +423 to +428
- [LLM analytics docs](/docs/llm-analytics) - Instrument your own AI features with tracing, evals, and cost tracking
- [How we caught our AI agent embezzling tokens](/blog/optimizing-agent-cost) - Lessons on tracking and optimizing agent costs
- [How we built automatic clustering for LLM traces](/blog/llm-analytics-clustering-how-it-works) - Deep dive into the clustering pipeline
- [8 learnings from 1 year of agents](/blog/8-learnings-from-1-year-of-agents-posthog-ai) - What we've learned building AI at PostHog
- [OpenAI Agents SDK integration](/docs/llm-analytics/installation/openai-agents) - The integration docs
- [github-standup-agent](https://github.com/andrewm4894/github-standup-agent) - The agent itself, open source
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we mention these three enough times in the actual blog to remove them here and just focus on the other blogs.

Suggested change
- [LLM analytics docs](/docs/llm-analytics) - Instrument your own AI features with tracing, evals, and cost tracking
- [How we caught our AI agent embezzling tokens](/blog/optimizing-agent-cost) - Lessons on tracking and optimizing agent costs
- [How we built automatic clustering for LLM traces](/blog/llm-analytics-clustering-how-it-works) - Deep dive into the clustering pipeline
- [8 learnings from 1 year of agents](/blog/8-learnings-from-1-year-of-agents-posthog-ai) - What we've learned building AI at PostHog
- [OpenAI Agents SDK integration](/docs/llm-analytics/installation/openai-agents) - The integration docs
- [github-standup-agent](https://github.com/andrewm4894/github-standup-agent) - The agent itself, open source
- [How we caught our AI agent embezzling tokens](/blog/optimizing-agent-cost) - Lessons on tracking and optimizing agent costs
- [How we built automatic clustering for LLM traces](/blog/llm-analytics-clustering-how-it-works) - Deep dive into the clustering pipeline
- [8 learnings from 1 year of agents](/blog/8-learnings-from-1-year-of-agents-posthog-ai) - What we've learned building AI at PostHog

Comment on lines +33 to +35
## The breaking point

Every time I manually copy-paste into our standup thread, a little part of me dies inside.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some feedback I regularly give: This second sort of feels like a second introduction. The main part of the post starts with "The plan" and we want to get people there as soon as possible. I think there is a way to blend these two sections together so we have one intro and get right into it.

I love the first two sentences/paragraphs form this section, maybe they can replace:

I'm too good for this. I don't need this corporate nonsense. I'm gonna stick it to the man. I'm not gonna play their silly little games.

I'm going to beat the system.

In the top section to bring things together?


[Clustering](/docs/llm-analytics/clusters) automatically groups similar traces together. For a personal agent like this, the clusters are pretty simple - mostly "standard standup generation" vs "heavy iteration sessions" vs "quick copy-paste runs." But it's useful for spotting patterns in how I use the agent. If you're curious about how the clustering pipeline actually works under the hood, I wrote a [deep dive on how we built it](/blog/llm-analytics-clustering-how-it-works).

### Sentiment
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just because this piece is long, I'd consider dropping this one as it's not super-duper relevant to developing an agent for yourself and it kind of dilutes the other points. I get that you used it and it's part of LLM analytics, but we shouldn't include all the features, just the most powerful/important ones for this use case.

For example, I think the evals on the Slack links is a really great example that deserves people to read it.

I know you're a big fan of clustering but maybe that one too 🙈 (it's ultimately your piece though).


The standup bot still messages me at 6 PM. But now I just smile, run `standup generate`, and let my agent do the talking.

F*$k you, standup bot. I win.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is so good hahahahahha

@andrewm4894 andrewm4894 enabled auto-merge (squash) April 4, 2026 11:19
@andrewm4894 andrewm4894 merged commit 07c4343 into master Apr 4, 2026
19 of 21 checks passed
@andrewm4894 andrewm4894 deleted the blog/standup-bot-revenge branch April 4, 2026 14:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants