AI-powered customer support issue triage and task management dashboard for StackOne. Automatically analyzes incoming support issues from Pylon, prioritizes them using Claude AI, generates actionable tasks, and provides team visibility into support workload.
- AI Issue Triage - Claude AI analyzes and prioritizes incoming issues (high/medium/low) with confidence scores
- Webhook Integration - Receives issues from Pylon with HMAC signature verification
- Task Generation - Creates actionable todos from triaged issues with investigation steps
- Meeting Actions - Extracts action items from Fireflies meeting transcripts
- Claude Code Prompts - Generates investigation prompts for debugging customer issues
- Response Drafting - AI-generated customer response templates
- Team Management - Assignee tracking with filtering by team member
- Real-time Dashboard - Live statistics and issue tracking with polling updates
- Frontend: React 19, TypeScript
- Backend: Hono (web framework), Bun (local dev), Cloudflare Workers (production)
- Database: Cloudflare D1 (SQLite), KV storage
- AI: Anthropic Claude API
- Auth: Google OAuth 2.0 (domain-restricted to @stackone.com)
- Integrations: StackOne MCP (Pylon, Fireflies)
- Bun runtime
- Wrangler CLI for Cloudflare deployment
- Anthropic API key
- Google OAuth credentials (for production auth)
- StackOne API credentials
-
Clone the repository:
git clone <repository-url> cd stackdash
-
Install dependencies:
bun install
-
Copy the environment template and configure:
cp .env.example .env
-
Configure environment variables (see Environment Variables)
| Variable | Description |
|---|---|
ANTHROPIC_API_KEY |
Claude API key for AI features |
PYLON_WEBHOOK_SECRET |
HMAC secret for webhook verification |
STACKONE_MCP_URL |
StackOne MCP endpoint |
STACKONE_API_KEY |
StackOne API key |
STACKONE_ACCOUNT_ID |
Pylon account ID |
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
AUTH_REDIRECT_URI |
OAuth callback URL |
COOKIE_SECRET |
Secret for signing session cookies |
PORT |
Server port (default: 3000) |
Run the local development server with hot reload:
bun run devOr use Cloudflare Workers local environment:
bun run cf:devBuild and deploy to Cloudflare Workers:
bun run deployThis builds the React frontend, bundles assets, and deploys via Wrangler.
Apply D1 database migrations:
wrangler d1 migrations apply stackdash-dbGET /api/issues- Fetch all triaged issues with statsGET /api/issues/:id- Get single issueGET /api/issues/assignees- Get unique assigneesDELETE /api/issues/:id- Delete issue
POST /api/todos/generate- Generate todo from issue
POST /api/generate/prompt- Generate Claude Code investigation promptPOST /api/generate/response- Generate customer response draft
POST /api/meetings/import-actions- Import Fireflies action items
GET /api/users- Fetch SE team members
POST /api/pylon/webhook- Receive Pylon issues
GET /auth/login- Initiate OAuth flowGET /auth/callback- OAuth redirectGET /auth/logout- Clear session
GET /health- Health check
stackdash/
├── src/
│ ├── index.ts # Bun local dev entry
│ ├── worker.ts # Cloudflare Workers entry
│ ├── frontend/ # React UI
│ │ ├── App.tsx
│ │ ├── components/ # Dashboard, IssueCard, TodoCard, etc.
│ │ └── hooks/ # useIssues, useTodos
│ ├── api/ # API route handlers
│ ├── agent/ # Claude AI logic
│ ├── auth/ # Google OAuth
│ ├── mcp/ # StackOne MCP client
│ ├── pylon/ # Webhook handling
│ └── store/ # Data persistence (D1, KV)
├── migrations/ # D1 database migrations
├── wrangler.toml # Cloudflare Workers config
└── package.json
Proprietary - StackOne