The problem
Coaching Corner runs on Slack’s free plan. He writes that free Slack has “a quiet gap nobody warns you about. There is no welcome.” New members land on channels they have never seen. Most lurk for a few days and drift. He kept meaning to greet people himself, but a kid would need a snack or a call would start. He writes, “Do that math across every new member and the warmest part of running a community was the part I was worst at.” He built the agent with Claude Code, and “the first working version took an afternoon.”
The blueprint (as he describes it)
- Send a sequence, not one wall of text. Each new member gets five short notes over five days, one ask each, written in his voice. The agent sends them openly under its own name. He did not want it to look like he personally messaged every new member. Day zero says hi and points them at the introductions channel. The next few days walk them, one room at a time, to the channels that matter.
- Hand the later notes to Slack. The first message goes out on the next sweep, within about half an hour of someone joining. The other four go to Slack for delivery on set days, around mid-morning, “so nobody gets a 2 a.m. ping from me.” Slack holds the scheduled messages on its own servers and sends them whether his laptop is open, asleep or in a bag.
- Sweep instead of listening live. A live listener only hears joins while it is awake. He runs a laptop, not a server, and laptops sleep. So every half hour the agent asks Slack for the full member list, compares it against the people it already knows, and greets whoever is new. If the machine was shut, the next run picks up everyone who joined in the gap. macOS launchd wakes the sweep.
- Never greet the same person twice. State lives in a tiny database on his machine: who has been welcomed, and when. The agent records someone as welcomed the instant the first message sends, before it does anything else. A missed follow-up he can recover, but a double welcome he cannot take back.
- Make the first run silent. The first time the agent looks at the workspace, it messages nobody. It records everyone already there as handled and stops. Only people who join after that get the sequence.
- Greet existing members once, by hand. At launch he sent the fifty-nine people already in the community a single announcement explaining what the agent was. He then logged them so the five-day drip skips them.
- Measure whether the welcome did anything. Later he moved the whole sequence (every message, channel and delay) into one file, so adding a step is “a one-line change.” He wrote a second sweep that reads who is in each channel. He built a small local dashboard. It shows where each member sits in the sequence, how many people the welcome moved into each channel, and the messages going out. A privacy toggle swaps every name for “Member 01.”
- Fail quietly on one locked door. He had forgotten one Slack permission. Until he added it, the channel sweep logged “skipped: missing permission” on every channel and carried on instead of crashing.
The stack, as he lists it: the Slack Web API over plain HTTP with no SDK, Bun for the runtime with its built-in SQLite for storage, zero outside dependencies, and macOS launchd as the half-hourly alarm. Claude Code “wrote nearly all of it, while I made the decisions.”
Stated results
- “The headline stat said 100% of welcomed members were in a channel.” The main room adds everyone automatically, so he says that 100% measures “got auto-added,” not “the welcome worked.”
- Introductions converted well.
- The LinkedIn channel, the events channel and the showcase converted low. “Single digits in a couple of cases.”
- His read: “The welcome gets people in the door and says hello.” It is not yet getting people to act once inside.
- Member counts beyond the 59 at launch: None stated.
- Retention numbers: None stated.
Caveats
- These are early numbers from a single small community. He gives no retention data and no conversion percentages for individual channels.
- He calls the five messages, the channels and their order “my best guess on day one.” The sequence has not yet been revised based on the dashboard.
- The source is his own Substack. It is not hosted by a vendor, and the post does not sell a product, course or kit.
- The post title uses a different word for the agent than Postby uses. That is his wording.
- Handles: LinkedIn linkedin.com/in/williamlowrey and TikTok @build_with_will (verified 2026-10-29: linked from his profile on substack.com/@wlowrey; willlowrey.com links back to the same LinkedIn and Substack). A Bluesky account at wlowrey.bsky.social exists but is not linked from his pages, so it is not tagged. X, Threads, Instagram and Mastodon: not verified, not tagged.
FAQ
What does Will Lowrey’s welcome agent send to new members?
Five short notes over five days, one ask each, written in his voice and sent openly under the agent’s own name. Day zero says hi and points to the introductions channel. Later notes walk people to the channels that matter.
Why doesn’t it react the instant someone joins?
He runs a laptop, not a server, and laptops sleep, so a live listener would miss overnight joins. Instead the agent sweeps the full member list every half hour, woken by macOS launchd.
Did the welcome work?
Partly. The 100% headline stat only measured auto-adds to the main room. Introductions converted well, but the LinkedIn, events and showcase channels converted low, and he states no retention numbers.
How long did it take to build?
He says the first working version took an afternoon, with Claude Code writing nearly all of it while he made the decisions. He added the dashboard and channel sweep later.
Sources
- https://wlowrey.substack.com/p/i-built-a-slack-bot-to-welcome-my (primary: first-person build write-up on his Substack, published 2026-06-19)
Want agents like these working your distribution? Get It Built. Get new teardowns weekly: subscribe (double opt-in).
Get one teardown a week.
Same format, a new operator every issue. Double opt-in.