AI-powered task management from Slack. Mention @Norbot in any channel to automatically extract tasks, prioritize them, and add them to your Kanban board.
Live at norbot.vercel.app
- Slack Bot: @mention Norbot to create tasks, update status, assign, and summarize
- Projects: Organize tasks with short codes (TM-123), keywords for auto-detection
- Channel Mappings: Link Slack channels to GitHub repos and projects
- AI Task Extraction: Extracts title, priority, type, and asks clarifying questions
- GitHub Integration: Create issues with @claude mention, link repos to projects
- Kanban Dashboard: Visual task board organized by status
- Team Management: Invite members, assign roles (admin/member/viewer)
- Thread Context: Bot understands full thread history when mentioned in replies
- File Attachments: Screenshots and files from Slack attached to tasks
- AI Usage Limits: Per-workspace monthly limits
┌─────────────────────────────────────────────────────────────┐
│ 1. AGENTIC INTAKE │
│ User: "@norbot there's a bug" │
│ Bot: "What's happening? Screenshot?" │
│ User: [image] [more text] │
│ Bot: "Got it. Which project?" → collects into structure │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2. TASK CREATED │
│ Structured: title, description, images, code context │
│ Assigned to project, tagged, prioritized │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3. GITHUB ISSUE (optional) │
│ Creates GitHub issue with full context │
│ Includes @claude mention for AI coding agents │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 4. TRIGGER AI CODER │
│ Automatically triggers Claude Code / Cursor / etc. │
│ AI starts working on the fix │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 5. VERIFICATION / HANDOVER │
│ AI verifies: "I can reproduce this" │
│ AI prepares: "Here's what I found, files involved" │
│ Best case: "Here's the fix" │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 6. PR │
│ Vercel/Netlify: just merge and done │
│ Complex: handover to human with full context │
└─────────────────────────────────────────────────────────────┘
- Frontend: Next.js 16, React 19, shadcn/ui (base-ui)
- Backend: Convex (real-time database + serverless functions)
- AI: Claude via Convex Agents (@convex-dev/agent)
- Auth: GitHub OAuth
pnpm installpnpm convex devThis will:
- Create a new Convex project (or connect to existing)
- Generate
convex/_generated/files - Give you your deployment URL (e.g.,
https://helpful-horse-123.convex.site)
- Open
slack-app-manifest.yaml - Replace
YOUR_CONVEX_URLwith your Convex deployment name (e.g.,helpful-horse-123) - Go to api.slack.com/apps → Create New App → From a manifest
- Select your workspace, paste the YAML, create the app
- Click Install to Workspace
In the Convex Dashboard, add these environment variables:
| Variable | Where to find it |
|---|---|
SLACK_CLIENT_ID |
Slack App → Basic Information → App Credentials |
SLACK_CLIENT_SECRET |
Slack App → Basic Information → App Credentials |
SLACK_SIGNING_SECRET |
Slack App → Basic Information → App Credentials |
ANTHROPIC_API_KEY |
console.anthropic.com |
Also add to .env.local:
NEXT_PUBLIC_CONVEX_URL=https://YOUR_DEPLOYMENT.convex.cloud
NEXT_PUBLIC_APP_URL=http://localhost:3000
# GitHub OAuth (create at github.com/settings/developers)
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...pnpm dev- Login with GitHub
- Create workspace or accept an invite
- Setup wizard: Connect Slack app, link GitHub repos, map channels
- Configure: Set up projects with short codes and keywords
- Use Norbot in Slack:
@Norbot The login button is broken on mobile→ creates task@Norbot summarize→ shows task overview@Norbot mark TM-123 as done→ updates status@Norbot assign TM-123 to @user→ assigns task@Norbot send TM-123 to github→ creates GitHub issue
├── src/
│ ├── app/ # Next.js pages
│ │ ├── w/[slug]/ # Workspace dashboard + settings
│ │ ├── invite/[token]/ # Invitation acceptance
│ │ └── login/ # GitHub OAuth
│ ├── components/
│ │ ├── kanban/ # Kanban board
│ │ └── ui/ # UI components
│ └── hooks/ # React hooks
├── convex/
│ ├── agents/ # Norbot agent + tools
│ │ ├── taskExtractor.ts # Agent definition
│ │ └── tools.ts # Agent capabilities
│ ├── schema.ts # Database schema
│ ├── slack.ts # Slack event handlers
│ ├── projects.ts # Projects management
│ ├── channelMappings.ts # Channel-repo-project links
│ ├── github.ts # GitHub integration
│ └── http.ts # Webhook endpoints
└── slack-app-manifest.yaml # Slack app setup
MIT