The tastiest way to build a culture of gratitude in your Slack workspace.
Bravocado is a gamified peer-to-peer recognition bot for Slack. We believe feedback shouldn't be boring formsβit should be fun!
When a teammate helps you out, simply send them an avocado emoji. Bravocado tracks these interactions, manages daily allowances, and helps team members grow from a tiny "Seed" to "Holy Guacamole" status.
- Simple Syntax: Mention teammates and add
π₯(or:avocado:) to your message. - Multi-User Support:
@Alice @Bob π₯sends 1 avocado to each person. - Multi-Avocado Support:
@Alice π₯π₯sends 2 avocados at once. - Reaction Support: Add
:avocado:reaction to any message to send 1 avocado.- React to someone else's message β sends to the message author.
- React to your own message with mentions β sends to the mentioned users.
- Smart Notifications: Recipients get a DM with the sender's name, channel, and original message.
To ensure fairness, Bravocado uses all-or-nothing logic:
- If you try
@Alice @Bob @Charlie π₯but only have 2 avocados left, the transaction is cancelled. - This prevents scenarios where only the first few people receive rewards while others don't.
- You'll receive an ephemeral error message visible only to you.
- Every user receives 5 avocados daily to give away.
- Balances reset at midnight KST.
- Self-Gifting Prevention: You cannot give avocados to yourselfβthey're for sharing!
Click on the Bravocado app in Slack to view your App Home:
- My Stats: Total received, total given, and remaining daily balance.
- Top Givers: Leaderboard of the most generous teammates.
- Top Receivers: Leaderboard of the most recognized teammates.
Users earn titles based on their activity:
| Count | Giver Title | Receiver Title |
|---|---|---|
| 500+ | Master Farmer π¨βπΎ | Holy Guacamole π |
| 250+ | Harvest Machine π | Certified Fresh β¨ |
| 100+ | Tree Hugger π³ | Big Avo Energy π³ |
| 50+ | Green Thumb πͺ΄ | Warming Up βοΈ |
| 10+ | First Rain π§οΈ | Just Watered π§ |
| 0β9 | Dirt Digger βοΈ | Seed Mode π± |
Every Monday at 09:00 KST, each user receives a DM summarizing the past week:
- Top 5 global givers and receivers
- Your personal top 5 recipients
Mention Bravocado with a trigger phrase to get a random avocado joke:
- Korean triggers:
@Bravocado μ μ΅μλ?or@Bravocado λλ΄ - English triggers:
@Bravocado make it ripeor@Bravocado tell a joke
- Runtime: Node.js (Vercel Serverless Functions)
- Framework: @slack/bolt v4
- Database: Supabase (PostgreSQL + RPC)
- Deployment: Vercel
Run supabase/schema.sql in your Supabase SQL Editor. It creates:
profilesβ Per-user give/receive counts and daily balancetransactionsβ Logs every avocado transfer with contextgive_avocado()β Transactional RPC for atomic transfersreset_daily_avocados()β Scheduled function to reset balances at midnight KST
Configure the following in your .env file or Vercel Dashboard:
# Slack API
SLACK_BOT_TOKEN=xoxb-your-token
SLACK_SIGNING_SECRET=your-signing-secret
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-key
# Cron Authentication
CRON_SECRET=your-cron-secretBot Token Scopes:
app_mentions:readβ Detect @Bravocado mentions for joke requestschannels:historyβ Read message content for reaction handlingchat:writeβ Post messages and ephemeral messagesreactions:readβ Detect avocado emoji reactionsusers:readβ Fetch user display names
Event Subscriptions:
message.channelsβ Detect avocado messagesreaction_addedβ Detect avocado reactionsapp_home_openedβ Render the Home tab dashboardapp_mentionβ Respond to joke requests when mentioned
- Link the repo to a Vercel project.
- Add environment variables in the Vercel dashboard.
- Deploy β
vercel.jsonhandles routing and cron scheduling automatically.
The cron job (0 0 * * 1) triggers /api/weekly-report every Monday at 00:00 UTC.
You can manually trigger the weekly report endpoint for testing:
curl -X POST https://your-app.vercel.app/api/weekly-report \
-H "Authorization: Bearer your-cron-secret"Replace your-cron-secret with your actual CRON_SECRET environment variable value.
