---
name: email-preflight-check
description: Auto-trigger before ANY outbound email. Searches all 9 accounts for prior contact, prevents duplicates, logs every send. Use before gog gmail send, email drafts, or outbox work.
metadata:
  openclaw:
    emoji: "✉️"
---

# Email Preflight Check

## Purpose
Prevent duplicate outreach, maintain institutional memory across 9 email accounts and multiple Telegram topics. Born from the Ramon Bartl near-duplicate incident (Feb 25, 2026).

## When to Use
**ALWAYS — before ANY outbound email.** No exceptions except spam/promo auto-replies.

Triggers:
- Before any `gog gmail send` command
- Before drafting emails in `~/clawd/outbox/`
- Before composing replies to external contacts
- Before any follow-up or outreach message

## Step 1: Search All Accounts

Before composing or sending to ANY recipient, run:

```bash
RECIPIENT="person@example.com"
DOMAIN="example.com"

# Search all 9 accounts for prior contact
for acct in actorlab.io@gmail.com tombstonedash@gmail.com hudtaylor@gmail.com hudmazon@gmail.com hudbeer@gmail.com clinisyslims@gmail.com hudbrew@gmail.com; do
  echo "=== $acct ==="
  gog gmail search --account $acct --query "to:${RECIPIENT} OR from:${RECIPIENT}" --max 5
done

# Also search by domain for company-wide contact
for acct in actorlab.io@gmail.com tombstonedash@gmail.com hudtaylor@gmail.com; do
  echo "=== $acct (domain: $DOMAIN) ==="
  gog gmail search --account $acct --query "${DOMAIN}" --max 5
done
```

## Step 2: Evaluate Results

### If prior emails found:
1. Read the **most recent 3 messages** in the thread
2. Summarize:
   - What was said
   - When it was sent
   - From which account
   - What the tone/intent was
3. Present this context **BEFORE drafting** the new email
4. **BLOCK if:** A similar pitch/message was sent in the last 30 days → alert HT
5. **REFERENCE** the prior thread in any new email (maintain continuity)

### If no prior emails found:
- Confirm: "No prior emails found to {recipient} across all accounts. Clear to send."
- Proceed with draft

## Step 3: Cross-Reference Trackers

Before sending, also check:
- `~/clawd/memory/OUTREACH_TRACKER.md` — active follow-up sequences, cold contacts, scheduled follow-ups
- `~/clawd/memory/EMAIL_SENT_LOG.md` — recent sends, thread history

Flag if:
- Contact is in an active follow-up sequence (don't interrupt cadence)
- Contact marked "cold" or "no response" (flag before re-engaging)
- Contact has a scheduled follow-up date (don't send early)

## Step 4: Log Every Send

After ANY email is sent, immediately update:

### OUTREACH_TRACKER.md
```markdown
| Date | Recipient | Subject | Account Sent From | Topic/Context | Follow-up Date |
|------|-----------|---------|-------------------|---------------|----------------|
| 2026-02-25 | person@example.com | Subject line | actorlab.io@gmail.com | JCal pitch | 2026-03-04 |
```

### EMAIL_SENT_LOG.md
```markdown
## 2026-02-25
- TO: person@example.com
- FROM: actorlab.io@gmail.com
- SUBJECT: Subject line
- CONTEXT: Why we sent this
- THREAD: New thread / Reply to existing
- FOLLOW-UP: 2026-03-04 / none
```

## Failure Mode

If `gog gmail search` fails or times out:
- **DO NOT send the email**
- Log the failure
- Alert: "⚠️ Email preflight check failed for {recipient}. Holding email until search works."

## Email Freeze Check

Before any send, verify email freeze status:
- Check `~/clawd/HEARTBEAT.md` for active email freeze
- If freeze active: **BLOCK all outbound** except urgent operational (password resets, etc.)
- Currently: Email freeze ACTIVE (since Feb 12, 2026)

## Account Registry

All 9 accounts to search:
1. `actorlab.io@gmail.com` — ActorLab product
2. `tombstonedash@gmail.com` — TombStone Dash LLC
3. `hudtaylor@gmail.com` — HT personal
4. `hudmazon@gmail.com` — HT secondary
5. `hudbeer@gmail.com` — HT hobby
6. `clinisyslims@gmail.com` — LIMS/professional
7. `hudbrew@gmail.com` — HT hobby
8. `info@tombstonedash.com` — Forwards to tombstonedash@gmail.com
9. `casting@actorlab.io` — Forwards to actorlab.io@gmail.com

## History
- 2026-02-25: Created per DAISY_DIRECTIVE_EMAIL_PREFLIGHT_AND_JCAL_REVISIONS.md
- Reason: Near-duplicate email to Ramon Bartl — LIMS topic didn't know Ops HQ had already sent
