Use case

Cake Day for Engineering Teams — A Celebration Bot That Passes the Smell Test

Why engineering teams roll their eyes at celebration bots

Engineers are pattern-matching machines. After the third Birthday Bot post that opens with "🎂 Happy birthday <first_name>!" and a string of emojis someone clearly picked from a dropdown, they figure out what's happening: a string-template renderer is iterating over a roster CSV and the messages are not, in any meaningful sense, written.

The reaction isn't unfair. Template-based recognition is functionally equivalent to no recognition — once the team identifies the pattern, the messages stop landing. Reactions drop. Nobody replies. The bot becomes scrolled-past wallpaper.

The deeper problem: a teammate seeing their own birthday template-rendered into the celebration channel often feels worse than not being celebrated at all. It's the corporate-cringe version of "thoughts and prayers" — the appearance of caring without the substance. Engineers, who tend to be sensitive to this kind of mismatch between form and content, register that signal accurately.

How Cake Day clears the eng-team smell test

Cake Day is the result of asking: what would a celebration bot have to look like for a senior IC to install it without rolling their eyes?

The answers, all of which are visible in the product:

1. No templates. Every message is generated fresh.

There is no messages.json file with 50 hand-written variants and a random pick. Each shoutout is generated by an LLM (routed via OpenRouter, so the underlying model is whatever's currently best for short creative writing) using only the teammate's first name and the occasion type. No two messages match. The team will not pattern-match the bot for at least the first few hundred posts — and even then, the variance is high enough that there's no recognizable structure to identify.

2. /cakeday test lets you preview before committing.

Before the bot posts publicly, run /cakeday test @yourself in any channel. The bot DMs you a sample shoutout with your name and a placeholder occasion. You see exactly what your team will see. Most engineering leads do this five or six times before approving the install.

3. Privacy posture you can read in 30 seconds.

The database has no column for year of birth. This is enforced at the schema level, not via "we promise not to query it." If a celebration tool stored year of birth, it would enable age inference, which is a protected characteristic under U.S. ADEA and EU GDPR Article 9. Cake Day doesn't collect what it can't defend.

Per-workspace bot tokens are encrypted at rest with workspace-scoped keys. The data sent to the AI provider per shoutout is first name + handle only — no email, no role, no manager, no team membership.

4. Minimal OAuth scopes, listed on the install screen.

The Slack OAuth install screen lists every scope the bot is requesting. There is nothing hidden. Your platform/security lead can review before approving install. We've kept the scope list as small as possible: read users, post messages, read channel membership for the celebration channel. We do not request DM read, file read, or any private channel access we don't need.

See our privacy policy → | See our security page →

The case for installing it on an engineering team

Engineering teams are not anti-celebration. They're anti-low-effort-celebration. The framing that works:

We're going to install a bot that posts birthdays and work anniversaries automatically. The messages are AI-generated and not templates — every one is fresh per teammate. Privacy is month/day only. We can preview the output before committing. If the team hates it after a month, we turn it off — there's no per-seat contract and no "growth in deployment" to undo.

That framing tends to land. The objections that don't survive a 5-minute conversation:

  • "AI is going to write something weird." Run /cakeday test. You'll see the output. You can also use the Pro plan's custom prompt feature to feed in your team's voice/tone if you want tighter control.
  • "We don't trust giving a third party our roster." The roster is the same data Slack already has. Cake Day stores month/day for birthdays and start date for anniversaries — that's it.
  • "We don't have budget for another tool." Free tier is permanent. 30 celebrations/year. Most teams under ~30 people never pay.

Why engineering orgs get penalized by per-seat pricing

This is a quiet truth about most recognition tools: engineering is the most expensive department to put on a per-seat tool, because eng tends to be the largest function and grows fastest in successful companies.

A peer-recognition tool at $5/seat/month adds up to $60/year × headcount. For a 200-person eng org, that's $12,000/year for a recognition tool nobody will be sad if you cancel.

Cake Day is priced by celebrations per year, not seats:

PlanCostCelebrations/yrBest for
Free$030Eng teams under ~30
Starter$19/mo150Eng teams up to ~75
Growth$49/mo500Eng teams up to ~250
Pro$99/moUnlimitedLarger orgs + custom AI prompts

The math: a 200-person eng org with 400 annual celebrations fits on Growth at $49/mo — about $588/year. Same value, ~95% lower cost. See full pricing →

Setup that respects engineering attention

The whole install is single-digit minutes:

  1. OAuth install at cakeday.io. Review the scope list during the consent screen.
  2. Pick the celebration channel (#team-celebrations is standard). Pick the post time (9–10am local is the default answer).
  3. Run /cakeday test @yourself to preview the output. Do this multiple times.
  4. Add your own date with /cakeday me.
  5. Send one comms message in the celebration channel: "Cake Day is running here now. /cakeday me to add your date. /cakeday optout to skip."

Total founder/eng-lead time: under 15 minutes including the preview round. Total ongoing time: zero — the bot has no admin work to do.

Common engineering team concerns

"We have a no-bots-in-Slack policy."

Most "no bots" policies actually mean "no chatbots that interrupt humans." Cake Day posts approximately 2–3 messages per week per workspace at the high end, exclusively in a single celebration channel. It does not DM anyone unsolicited. It does not interrupt anything.

"Can we self-host this?"

The SaaS version runs in our infrastructure. The original (single-workspace) version of Cake Day is still self-hosted at Uscreen and the multi-tenant SaaS is built on the same patterns. Self-hosting isn't currently offered as a SKU — it would significantly raise the price and most teams don't want the operational overhead.

"What model is generating the shoutouts?"

Cake Day routes through OpenRouter, which dynamically selects the best upstream provider per request (currently a mix of Claude, Gemini, and GPT depending on availability). The data sent is first name + handle only.

"Where can I read the source / verify behavior?"

The bot is closed-source today. The behavior is observable: every shoutout it generates posts publicly in the channel you control, and /cakeday test shows you the output before commitment.

See also

Frequently asked

How do I know the AI won't generate something embarrassing?

Run /cakeday test @yourself before turning the bot on for the team. The test command DMs you a sample shoutout — you see exactly what would post publicly. On the Pro plan, custom prompts let you feed in tone constraints directly.

What's the OAuth scope list?

Read users (to know who's in the workspace), write messages (to post in the celebration channel), and read channel membership for the celebration channel. The full scope list is shown on the Slack install consent screen before you approve.

What data leaves the workspace?

Per shoutout, the AI provider receives the teammate's first name and handle plus the occasion type. No email, no role, no manager, no team affiliation. The full roster is stored encrypted in our database and never shipped to third parties.

Can we audit what gets posted?

Every shoutout posts publicly in the celebration channel you configure — Slack's native audit log shows you everything. There are no shadow DMs or private posts.

Is the bot Slack-native or does it require a separate dashboard?

Daily use is in Slack via slash commands (/cakeday me, /cakeday optout, /cakeday test). The web dashboard exists for admin tasks (channel selection, billing, CSV import) but isn't something teammates need to log into.