TPM Signal Intelligence Platform — aggregate signals, surface converging issues, and make evidence-backed roadmap decisions.
ClawDesk is a decision-support tool for Technical Program Managers. It ingests signals from engineering sources (GitHub, Sentry, Slack, Telemetry, CI, etc.), clusters related signals into actionable items, tracks technical debt, and helps teams decide what belongs on the roadmap — backed by evidence, not gut feel.
The core loop:
Signals → Clusters → Tech Debt / Roadmap Candidates → Decision
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript 5 |
| Styling | Tailwind CSS 4 + CSS custom properties |
| Icons | Lucide React |
| Persistence | LocalStorage (demo) |
npm install
npm run devOpen http://localhost:3000.
Dashboard with KPI cards (Active Signals, Open Clusters, Tech Debt Items, Decision Readiness %) and live feeds for intake, converging clusters, alerts, and the tech debt hotlist.
Triage view for all incoming signals. Signals arrive from sources like GitHub, Sentry, Telemetry, Ops, and Discord. Each signal carries a source, type, module, impact (1–5), and confidence level.
Lists signal clusters — groups of related signals that have converged around a common issue. Each cluster has a score, signal count, trend sparkline, and status (Escalate / Watch / Investigate / Resolved).
Full decision brief for a single cluster: problem statement, evidence, options, tradeoffs, signals table, timeline, and decision controls. Clusters can be promoted directly to Roadmap Candidates from here.
Tracks debt items using a financial metaphor — principal (size of the debt: S/M/L/XL) and interest (ongoing cost per week). Each item has a details panel with summary, evidence, decision readiness checklist, owner assignment, and success metric definition.
Evidence-backed shortlist of problems ready for roadmap consideration. Supports a full decision workflow: Proposed → Approved / Deferred / Rejected. Clusters promoted from the Clusters view appear here automatically.
Manage connections to external tools: GitHub, Sentry, Slack, Jira, Grafana, Discord, Linear, Datadog, and more.
app/ # Next.js App Router pages
├── layout.tsx # Root layout (Sidebar + TopBar)
├── page.tsx # Overview dashboard
├── intake/
├── clusters/
│ └── [id]/ # Cluster detail (dynamic route)
├── tech-debt/
├── roadmap-candidates/
└── integrations/
components/
├── sidebar.tsx # Left nav
├── topbar.tsx # Top bar with search + Add Signal
├── add-signal-modal.tsx # Manual signal creation modal
├── promote-modal.tsx # Promote cluster to roadmap candidate
└── openclaw-panel.tsx # OpenClaw AI agent status panel
lib/
├── store.ts # LocalStorage helpers
└── mock/ # Typed mock data
├── signals.ts
├── clusters.ts
├── debt.ts
├── candidates.ts
└── alerts.ts
Signal — A raw data point from any source (crash report, GitHub issue, Slack message, telemetry spike). Carries source, type, module, impact, and confidence.
Cluster — A group of signals that converge around a shared problem. Scored by severity and signal density. The primary unit for decision-making.
Tech Debt Item — A known code quality issue tracked with principal (size) and interest (ongoing cost per week). Can be promoted to a roadmap candidate.
Roadmap Candidate — A cluster or debt item with enough evidence to warrant a roadmap decision. Goes through a Proposed → Approved / Deferred / Rejected workflow.
OpenClaw — The AI agent layer that classifies incoming signals, surfaces converging clusters, and pre-fills decision briefs.
All data is currently mocked in lib/mock/. The interfaces are designed to match a real backend schema — replacing the mock imports with API calls is the primary integration path.
Promotions (cluster → roadmap candidate) are persisted to localStorage so they survive page refreshes within a session.
npm run dev # Development server (localhost:3000)
npm run build # Production build
npm start # Start production server
npm run lint # ESLint