Sec 01 — Status
Every intake, assigned to the right talent.
When a project intake lands in ClickUp, the harness checks the brief, narrows the talent pool by skill, platform and capacity, and assigns the best fit with a short reason. A person can always reassign.
Mode · HARNESS_MODE
Every intake gets a pick, logged only. Nothing is written to ClickUp.
Anything unrecognised reads as shadow, never live.
Sec 02 — Pipeline
One run per intake task
- 01code
Intake lands
ClickUp webhook fires on task creation. Signature checked, answered at once.
- 02agent
Brief check
Flags what is missing from the brief as questions for the PM. Never blocks.
- 03code
Talent profiles
Skills, platforms, timezone, capacity and seniority from the Talent list.
- 04code
Hard filters
Drops anyone inactive, off-platform, missing the skill, or at capacity.
- 05agent
Matcher
Ranks who is left and explains the pick. Falls back to load order.
- 06code
Assign
Re-checks nobody assigned it first, assigns, comments the reason.
Sec 03 — Configuration
All settings in place
| Setting | Variable | Status |
|---|---|---|
| Anthropic API key | ANTHROPIC_API_KEY | Not used |
| DeepSeek API key | DEEPSEEK_API_KEY | Set |
| ClickUp token | CLICKUP_API_TOKEN | Set |
| ClickUp workspace id | CLICKUP_TEAM_ID | Set |
| Webhook secret | CLICKUP_WEBHOOK_SECRET | Set |
| Decision log database | DATABASE_URL | Set |
Runs on the Delegation copy ClickBot creates in list 901518492910. Values are never shown here, only whether they are set.
Sec 04 — Agents
2 agents registered
| Agent | Model | Effort |
|---|---|---|
| brief-check | deepseek-flash | low |
| matcher | deepseek-v4-pro | medium |
Each agent is one entry in lib/agents/registry.ts: model, effort and prompt. Switch every agent between Anthropic and DeepSeek with LLM_PROVIDER.