What You Get
- Real-time alerts — New radar and signal events posted as they arrive
- Rich formatting — Organization name, category tags, summary, source links
- Slash commands —
/shoal brief <org>,/shoal radar,/shoal signal,/shoal usage - Socket Mode — No public URL required, runs behind your firewall
Setup
1. Create a Slack App
Go to api.slack.com/apps and create a new app for your workspace. Required Bot Token Scopes (OAuth & Permissions):chat:write— Post messages to channelscommands— Register slash commands
- Toggle on, generate an app-level token with
connections:writescope - This gives you an
xapp-token
- Command:
/shoal - Description:
Shoal Intelligence — briefs, radar, signal - Leave Request URL blank (Socket Mode handles routing)
xoxb-...).
2. Configure Environment
3. Install and Run
Event Card Format
Each event is posted as a standalone message with this layout:Slash Commands
| Command | Description |
|---|---|
/shoal | Show help and available commands |
/shoal brief <org> | 7-day intelligence brief for an organization |
/shoal radar [category] | Latest radar events, optionally filtered by category |
/shoal signal | Latest signal intelligence events |
/shoal usage | Your API usage stats (today, week, month) |
Example: On-Demand Brief
Architecture
.last_poll.json) to track which events have been posted, preventing duplicates across restarts.
Source Code
Full source:slack_bot/bot.js
The bot is ~200 lines of JavaScript using @slack/bolt for Socket Mode and the Shoal REST API for intelligence data.