---
name: matchmaker
description: Run matching engine and manage outreach queue — approve leads, check stats, control automation
status: live
user_invocable: true
canonical_path: ~/.claude/skills/matchmaker.md
---

# /matchmaker — Match Engine & Outreach Control

> Vault mirror of `~/.claude/skills/matchmaker.md`. User-level is canonical.

## What to do

| Command | Action |
|---|---|
| `/matchmaker` | Run `node scripts/hunt/matchmaker.js`, show matches |
| `/matchmaker approve` | Update scraped_leads SET status='approved' WHERE status='new' |
| `/matchmaker approve 5` | Same but LIMIT 5 |
| `/matchmaker reject {id}` | Update scraped_leads SET status='rejected' WHERE id={id} |
| `/matchmaker stats` | Query full funnel: scraped → contacted → replied → signed up → hired |
| `/matchmaker pause` | Log that outreach is paused (TODO: implement flag) |
| `/matchmaker resume` | Log that outreach is resumed |
| `/matchmaker auto-enable` | Switch to auto-send mode |
| `/matchmaker auto-disable` | Switch back to manual approval |
| `/matchmaker queue` | Show pending leads: name, email/phone, trade, city, side, source |

For approve/reject, use Supabase directly:

```javascript
require('dotenv').config();
const { createClient } = require('@supabase/supabase-js');
const sb = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_SERVICE_ROLE_KEY);
```

For stats, join across scraped_leads, contact_registry, and platform tables.

## Final step (Wave 2.2 protocol)

```bash
bash scripts/log-event.sh "<agent-id>" "skill_run" "matchmaker" "<ok|fail>" "<sub-cmd> — <records affected>"
```

## Regression fixture

See `fixtures/golden-output.md`.
