whatsapp-outreach-run

$npx mdskill add aAAaqwq/AGI-Super-Team/whatsapp-outreach-run

Execute automated WhatsApp campaigns with personalized messaging.

  • Sends mass messages to filtered recipients using templates.
  • Depends on Baileys session and YAML campaign configurations.
  • Validates filters and personalization before execution.
  • Outputs dry-run logs and recipient counts for verification.

SKILL.md

.github/skills/whatsapp-outreach-runView on GitHub ↗
---
name: whatsapp-outreach-run
description: Automatic WhatsApp outreach agent run
---
# WhatsApp Outreach Agent - Run Skill

> Run the agent for mass WhatsApp message sending

## When to use

- "run WhatsApp outreach for X"
- "send WhatsApp messages for campaign Y"
- "build and run WhatsApp campaign"

## Before running

1. **Check WhatsApp session:**
   ```bash
   ls $SALES_PATH/whatsapp/baileys_session/
   ```
   If empty -> authenticate first:
   ```bash
   cd $SALES_PATH/whatsapp
   node index.js
   # Scan QR code
   ```

2. **Check setup:**
   ```bash
   cd $AGENTS_PATH/whatsapp-outreach
   python3 test_setup.py
   ```

## How to run

### Step 1: Create or select a campaign

If no campaign exists -- create a config:

```yaml
# $AGENTS_PATH/campaigns/my-campaign.yaml
campaign_name: "Campaign Name"

filters:
  company_id: ["comp-XXX"]      # Optional
  product_id: ["prod-XXX"]      # Optional
  stage: ["new", "qualified"]   # Optional
  preferred_channel: "whatsapp" # Optional

message_template: |
  Hi, {first_name}!

  This is Ivan from WeLabelData.

  Your message here...

variables:
  custom_var: "value"
```

### Step 2: Dry-run (mandatory!)

```bash
cd $AGENTS_PATH/whatsapp-outreach

python3 whatsapp_outreach_agent.py \
  --dry-run \
  --campaign campaigns/my-campaign.yaml
```

Check:
- Number of recipients
- Message personalization
- Filters are working correctly

### Step 3: Test with one recipient

```bash
python3 whatsapp_outreach_agent.py \
  --test-recipient p-XXX
```

Check:
- Message was sent
- Activity was logged
- Git branch was created

### Step 4: Small batch (3 people)

```bash
python3 whatsapp_outreach_agent.py \
  --limit 3 \
  --campaign campaigns/my-campaign.yaml
```

Check:
- 60 second delay is working
- All activities were logged
- Git branch is correct

### Step 5: Full run

```bash
python3 whatsapp_outreach_agent.py \
  --campaign campaigns/my-campaign.yaml
```

- Agent shows preview (first 3 messages)
- Agent asks for confirmation: `[y/N]`
- If `y` -> starts sending
- Progress: `[X/Y] Name → +phone... OK/FAIL`

### Step 6: Review and merge

```bash
cd $PROJECT_ROOT

# Check changes
git diff main

# If OK -> merge
git checkout main
git merge whatsapp-outreach-YYYY-MM-DD-HHMM

# If NOT OK -> delete branch
git branch -D whatsapp-outreach-YYYY-MM-DD-HHMM
```

## Flags

| Flag | Description |
|------|-------------|
| `--campaign FILE` | Path to campaign config (YAML) |
| `--dry-run` | Test run (no sending) |
| `--auto-approve` | Skip human approval (use with caution!) |
| `--test-recipient p-XXX` | Send to one person only |
| `--limit N` | Limit to N recipients |

## Environment Variables

```bash
# Delay between messages (seconds)
export WHATSAPP_DELAY_SECONDS=60

# Daily message limit
export WHATSAPP_DAILY_LIMIT=20

# Lookback for idempotency (days)
export IDEMPOTENCY_LOOKBACK_DAYS=7
```

## Output

### Logs

`$AGENTS_PATH/logs/whatsapp_outreach_YYYY-MM-DD_HH-MM.md`

### Git branch

`whatsapp-outreach-YYYY-MM-DD-HHMM`

### CRM changes

- `sales/crm/activities.csv` — added activities
- `sales/crm/relationships/leads.csv` — updated last_contact_date
- `sales/crm/contacts/people.csv` — added notes (if failed)

## Troubleshooting

### "WhatsApp session expired"

```bash
cd $SALES_PATH/whatsapp
node index.js
# Scan QR code
```

### "FloodWait error"

- Increase `WHATSAPP_DELAY_SECONDS`
- Decrease `WHATSAPP_DAILY_LIMIT`
- Wait 24 hours

### "No recipients found"

- Check filters in campaign config
- Check CRM data (people.csv, leads.csv)
- Check phone numbers in people.csv

### Git branch not created

- Check if there were successful sends
- Check `git status` in $PROJECT_ROOT
- Possibly all sends failed

## Examples

### Client D training reminder

```bash
python3 whatsapp_outreach_agent.py \
  --campaign campaigns/clientd-training-reminder.yaml
```

### Quick test

```bash
python3 whatsapp_outreach_agent.py \
  --dry-run \
  --limit 1 \
  --campaign campaigns/example-whatsapp.yaml
```

## Related files

- **Spec:** `$AGENTS_PATH/specs/whatsapp-outreach.spec.md`
- **README:** `$AGENTS_PATH/whatsapp-outreach/README.md`
- **Implementation:** `$AGENTS_PATH/whatsapp-outreach/IMPLEMENTATION.md`

## Important

- **Always --dry-run first**
- **Never --auto-approve without testing**
- **Max 20 messages per day** (WhatsApp may ban)
- **Human approval required** (per owner decision)
- **Review git branch before merge**

More from aAAaqwq/AGI-Super-Team

SkillDescription
a-fund-monitor监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。
add-leadAdd company/person/relationship to CRM
ads-agentAI-агент для управления Facebook рекламой. Вызывай для анализа, оптимизации, создания кампаний и отчётов.
afrexai-compliance-auditRun internal compliance audits against major governance and security
afrexai-personal-financeComplete personal finance system — budgeting, debt payoff, investing, tax optimization, net worth tracking, and financial independence planning. Use when managing money, building wealth, paying off debt, planning retirement, or optimizing taxes. Zero dependencies.
after-salesUse when managing post-purchase experience, building customer loyalty, or increasing repeat purchases
agent-contactsAI agent contacts — add, list, remove MCP contacts. Use when someone gives an agent URL, or when you need to view/remove contacts.
agent-model-switcher批量查看和切换子 agent 的模型配置,用于统一调整多 agent 的 provider/model 设置。
agent-patternsFormat SPAWN REQUEST messages to launch parallel agents, generate structured agent status reports, and define communication protocols within the sprint system. Use when the user needs to coordinate multiple agents, format spawn requests, produce agent reports, or establish inter-agent communication patterns.
agent-task-confirmUse when confirming whether a dispatched agent task was actually received, activated, and progressing after sessions_send or other task handoff actions.