> **DEPRECATION NOTICE:** This skill was created for B2BMX 2026 (March 9-11, Carlsbad, CA). The event has passed. For future events, use `/event-prospect [REP] [EVENT]`. This skill is preserved as a template reference for building event-specific skills.

# B2BMX 2026 -- Event Outreach Generator

## Purpose
One-command outreach generator for **B2B Marketing Exchange 2026** (March 9-11, Carlsbad, CA). Finds contacts at your accounts in the San Diego/Carlsbad metro, then writes a ready-to-use voicemail and email for each one. No research, no briefs -- just hit send.

## Mode Detection

Auto-detect based on current date vs. event dates (March 9-11, 2026):
- **Before March 9:** Pre-event mode (generate pre-event outreach)
- **March 9-11:** During event (generate day-of check-in messages)
- **After March 11:** Post-event follow-up mode (generate follow-up sequence)

## Invocation
```
/b2bmx [REP_NAME]
```

## Team Roster

| Rep | Full Name |
|-----|-----------|
| Andrew | Andrew Young |
| Pat | Pat Oswald |
| Sendu | Sendu Bhakthakumaran |
| Mike | Mike Chen |
| Kim | Kim Corran |

Name matching: Accept first name, last name, or full name (case-insensitive).

---

## Event Details (Hardcoded)

| Field | Value |
|-------|-------|
| Event | B2B Marketing Exchange 2026 |
| Dates | March 9-11, 2026 |
| Location | Omni La Costa, Carlsbad, CA |
| Metro Cities | San Diego, Carlsbad, Encinitas, Oceanside, Del Mar, Escondido |
| LeanData Presence | Booth + speaking session + exec dinner |
| Hashtag | #B2BMX |

---

## Execution Steps

### Step 1: Identify Rep

Match input name to roster. Load their Top 25 accounts from:
```
./data/reports/mid-market/all_reps_top_25_accounts.csv
```

**Kim Corran note:** If no rows match for Kim, load Anna Ayrapetyan rows.

Collect all Account IDs for the rep.

### Step 2: Find Metro Contacts at Rep's Accounts

Query SFDC for contacts at the rep's Top 25 accounts who are in the San Diego/Carlsbad metro AND match buyer personas:

```sql
SELECT c.AccountId, c.Account.Name, c.Name, c.FirstName, c.Title, c.Email,
  c.Phone, c.MobilePhone,
  c.MailingCity, c.MailingState,
  c.Account.NumberOfEmployees, c.Account.Industry,
  c.Account.accountBuyingStage6sense__c, c.Account.accountIntentScore6sense__c
FROM Contact c
WHERE c.AccountId IN ([REP_TOP_25_ACCOUNT_IDS])
  AND c.MailingCity IN ('San Diego','Carlsbad','Encinitas','Oceanside','Del Mar','Escondido')
  AND (
    c.Title LIKE '%Rev%Ops%'
    OR c.Title LIKE '%Revenue%'
    OR c.Title LIKE '%Sales Ops%'
    OR c.Title LIKE '%Marketing Ops%'
    OR c.Title LIKE '%Demand%'
    OR c.Title LIKE '%GTM%'
    OR c.Title LIKE '%Growth%'
    OR c.Title LIKE '%Director%'
    OR c.Title LIKE '%VP%'
    OR c.Title LIKE '%CRO%'
    OR c.Title LIKE '%Chief%'
  )
ORDER BY c.Account.accountIntentScore6sense__c DESC NULLS LAST
```

### Step 3: Widen the Net -- Non-Top-25 Mid-Market Accounts

Also pull contacts from ANY mid-market account (not just Top 25) in the metro matching personas:

```sql
SELECT c.AccountId, c.Account.Name, c.Name, c.FirstName, c.Title, c.Email,
  c.Phone, c.MobilePhone,
  c.MailingCity, c.MailingState,
  c.Account.NumberOfEmployees, c.Account.Industry,
  c.Account.accountBuyingStage6sense__c, c.Account.accountIntentScore6sense__c
FROM Contact c
WHERE c.Account.NumberOfEmployees >= 500
  AND c.Account.NumberOfEmployees <= 2500
  AND c.Account.Type != 'Customer'
  AND c.MailingCity IN ('San Diego','Carlsbad','Encinitas','Oceanside','Del Mar','Escondido')
  AND (
    c.Title LIKE '%Rev%Ops%'
    OR c.Title LIKE '%Revenue%'
    OR c.Title LIKE '%Sales Ops%'
    OR c.Title LIKE '%Marketing Ops%'
    OR c.Title LIKE '%Demand%'
    OR c.Title LIKE '%GTM%'
    OR c.Title LIKE '%Growth%'
    OR c.Title LIKE '%Director%'
    OR c.Title LIKE '%VP%'
    OR c.Title LIKE '%CRO%'
    OR c.Title LIKE '%Chief%'
  )
  AND c.AccountId NOT IN ([REP_TOP_25_ACCOUNT_IDS])
ORDER BY c.Account.accountIntentScore6sense__c DESC NULLS LAST
LIMIT 15
```

De-duplicate across both queries.

### Step 4: Check for Existing B2BMX Outreach

Before generating copy, check if the rep already reached out to these contacts about B2BMX:

```sql
SELECT WhoId, Subject, ActivityDate
FROM Task
WHERE WhoId IN ([CONTACT_IDS])
  AND (Subject LIKE '%B2B Marketing%' OR Subject LIKE '%B2BMX%' OR Subject LIKE '%Carlsbad%')
  AND ActivityDate >= 2026-02-01
```

Flag any contacts already touched. Still generate copy but note "ALREADY CONTACTED [date]" so the rep can decide whether to follow up or skip.

### Step 5: Enrich from Top 25 CSV

For contacts at Top 25 accounts, pull the `Key Signal` column from the CSV. Use this to personalize the outreach (e.g., if the signal mentions UserGems, funding, or pain points).

### Step 6: Generate Outreach for Each Contact

**Mode-dependent generation:**

**Pre-Event Mode (before March 9):**
For every contact found, generate THREE pieces:

1. **Voicemail script** (~25-30 seconds)
2. **Email** (subject + body)
3. **LinkedIn connection note** (1-2 sentences)

**Post-Event Follow-Up Mode (after March 11):**
For every contact found, generate a THREE-TOUCH sequence:

1. **Day 1 follow-up email** -- Reference B2BMX, whether you connected or not. Include one proof point relevant to their industry/role.
2. **Day 4 follow-up email** -- Different angle, reference a specific B2BMX session or theme. Shorter, more direct CTA.
3. **Day 8 final follow-up** -- Brief "closing the loop" with a compelling proof point. Offer a resource (case study, ROI calculator).

---

## Tone & Voice Rules

**DO:**
- Be warm, upbeat, and human
- Reference B2BMX by name and the Carlsbad setting
- Keep it light -- "grabbing coffee" not "scheduling a meeting"
- Use the contact's first name
- Weave in ONE specific signal about their company (from CSV or 6sense stage)
- Sound like someone you'd want to meet at a conference
- Keep VMs under 30 seconds when read aloud
- Keep emails under 100 words in the body

**DON'T:**
- Pitch LeanData features
- Use words like "synergy," "leverage," "touch base," "circle back"
- Sound like a template
- Include more than ONE call-to-action
- Write more than 4 sentences in an email body
- Be formal or stiff

---

## Voicemail Template Pattern

```
Hey [FIRST NAME], it's [REP NAME] from LeanData.

[ONE SENTENCE: personalized hook using their title/company/signal -- make it relevant and human]

I'll be at B2BMX in Carlsbad next week and thought it'd be great to connect in person.
[CASUAL CTA -- coffee, quick hello, swing by booth, join dinner].

I'll shoot you an email too. Talk soon!
```

**Key:** Every VM must have a UNIQUE hook sentence. No two contacts get the same hook even if they're at the same company. Pull from:
- Their title/role and what they likely care about
- Company signal (funding, growth, UserGems, 6sense stage)
- Industry-specific angle
- Something timely or relevant to B2BMX themes (ABM, demand gen, revenue ops)

---

## Email Template Pattern

```
Subject: [SHORT, CASUAL -- reference B2BMX or Carlsbad, NOT salesy]

Hey [FIRST NAME],

[1-2 SENTENCES: personalized hook -- same signal as VM but written differently]

I'll be at B2BMX next week -- would love to grab a coffee and swap notes on [RELEVANT TOPIC based on their role].

[CASUAL CTA -- specific and low-commitment]

[REP FIRST NAME]
```

**Subject line examples** (vary these -- never repeat the same subject):
- "B2BMX next week?"
- "Carlsbad coffee"
- "Quick hello at B2BMX?"
- "See you in Carlsbad?"
- "[FIRST NAME] -- B2BMX?"
- "La Costa next week"

---

## LinkedIn Template Pattern

```
Hey [FIRST NAME] -- I see you're in [CITY]. Headed to B2BMX next week at La Costa and would love to connect. Hope to see you there!
```

Keep it 1-2 sentences. Social, not salesy. Just a warm connection.

---

## Post-Event Follow-Up Templates

**Day 1 -- Met at B2BMX:**
```
Subject: Great chatting at B2BMX

Hey [FIRST NAME],

Glad we got to connect at B2BMX -- [reference specific thing discussed].
[One sentence with relevant proof point for their situation.]

Would [specific day] work for a quick follow-up call?

[REP FIRST NAME]
```

**Day 1 -- Didn't connect at B2BMX:**
```
Subject: B2BMX follow-up

Hey [FIRST NAME],

Sorry we didn't get to connect at B2BMX -- those events move fast.

[One sentence: signal-based hook about their company]. [One proof point.]

Would a quick call this week make sense?

[REP FIRST NAME]
```

**Day 4 -- No reply:**
```
Subject: Re: B2BMX follow-up

[FIRST NAME] -- quick follow-up from my note after B2BMX.

[Reference a specific B2BMX session or theme relevant to their role.]
[Different proof point than Day 1.]

Worth 15 minutes?

[REP FIRST NAME]
```

**Day 8 -- Final:**
```
Subject: Closing the loop on B2BMX

[FIRST NAME],

Last note from me on B2BMX. [One compelling stat or proof point not yet shared.]

If [topic] is on your radar, happy to send over [specific resource].
If not, no worries at all.

[REP FIRST NAME]
```

---

## Output Format

```markdown
# B2BMX 2026 Outreach -- [REP NAME]
**Generated:** [DATE]
**Event:** B2B Marketing Exchange | March 9-11 | Carlsbad, CA
**Mode:** [Pre-Event / Post-Event Follow-Up]

## Your Accounts ([count] contacts found)

---

### 1. [CONTACT NAME] -- [TITLE]
**Account:** [ACCOUNT NAME] | [EMPLOYEES] emp | [INDUSTRY] | 6sense: [STAGE] (Intent [SCORE])
**Signal:** [KEY SIGNAL from CSV or 6sense]
**City:** [MAILING CITY]
**Phone:** [PHONE or MOBILE -- show both if available, "No phone on file" if neither]
[IF ALREADY CONTACTED: Already reached out [DATE] -- "[SUBJECT]"]

[PRE-EVENT MODE:]
**Voicemail (30 sec):**
> [VM SCRIPT]

**Email:**
**Subject:** [SUBJECT LINE]

[EMAIL BODY]

**LinkedIn:**
> [CONNECTION NOTE]

[POST-EVENT MODE:]
**Day 1 Follow-Up Email:**
**Subject:** [SUBJECT LINE]
[EMAIL BODY]

**Day 4 Follow-Up Email:**
**Subject:** [SUBJECT LINE]
[EMAIL BODY]

**Day 8 Final Follow-Up:**
**Subject:** [SUBJECT LINE]
[EMAIL BODY]

---

### 2. [NEXT CONTACT...]

[Repeat for all contacts]

---

## Bonus: Net-New Metro Accounts ([count] contacts)

[Same format for contacts from Step 3 -- non-Top-25 accounts]

---

## Quick Stats
- Total contacts: [X]
- From your Top 25: [X]
- Net-new accounts: [X]
- Already contacted: [X]
- Decision/Purchase stage: [X]

## Next Steps
[PRE-EVENT:]
- Send emails today -- event is [X] days away
- Drop VMs tomorrow morning for anyone who doesn't open
- Connect on LinkedIn now
- For deeper account briefs: `/account-research-hub [Account]`

[POST-EVENT:]
- Send Day 1 follow-ups today
- Schedule Day 4 follow-ups for [date]
- Schedule Day 8 final follow-ups for [date]
- For accounts that respond: `/deal-review [Opp]` or `/pipe-gen [Rep]`
```

---

## Guardrails

1. **No pitching.** This is event outreach, not a sales sequence. Zero product mentions.
2. **Every hook must be unique.** No two contacts get the same personalized line.
3. **VM <= 30 seconds.** Read it aloud to check.
4. **Email <= 100 words body.** Short and punchy.
5. **One CTA per piece.** Don't stack asks.
6. **Flag active opps.** If a contact's account has an open opportunity, add: "Active opp -- coordinate with opp owner before outreach."
7. **Flag existing outreach.** Don't let reps double-tap without knowing.

## Save Output

Save per save-skill-outputs rule:
```
agents/outputs/skill-runs/b2bmx/[YYYY-MM-DD]-[rep].md
```

## When to Suggest Other Skills

| Situation | Suggest |
|-----------|---------|
| Want a full account brief before reaching out | `/account-research-hub [Account]` |
| Post-event meeting booked -- qualify the deal | `/deal-review [Opp]` |
| Contact is at a competitive account | `/competitive-intel [Account]` |
| Need weekly follow-up sequence after event | `/pipe-gen [Account]` |
| Future event (not B2BMX) | `/event-prospect [Rep] [Event]` |
