# The social listening play

> Everyone who engages with a post is checked against six facts and handed to the right campaign with a message written for them.

- Canonical page: https://warmup.ai/library/social-listening-play
- By Mike Hurley, founder of WarmUp. This runs our own pipeline. It is not a demo build.
- Version 1.3. Last updated 2026-09-24. About 8 minutes.
- Board: https://warmup.ai/library/social-listening-play.webp
- Full build guide: https://warmupai.notion.site/The-social-listening-play-3ecde1f21b8f814aa026d0984058a63d

**LinkedIn engagers to a message written per person. Every morning.**

How to read the board: Left to right, following the numbers: the authors we watch, the routine, Stage 1 (protect, then the six facts), Stage 2 (route, then write), the verdict. The strip under the legend follows one engager through.

## Why it helps

People who comment on, repost or react to a post about GTM engineering are telling you what is on their mind this week. Every morning the play collects them from eight authors (my own posts, two competitors, and Clay's people), checks six facts about each person and their company, blocks anyone we must never message, and writes a first message and a follow-up for each person who passes. Most engagers fail a known fact and never see a message. Someone on the team reads the first batch and starts each campaign by hand. Nothing sends on its own.

Spend is set in advance: one monthly ceiling for the whole play and a day cap for each step. When the ceiling is reached the paid steps stop for the month and the free ones keep running. Most of the six facts come from memory or sources with no provider credits, so the paid look-up is the exception, whichever tool answers it.

## Why we built it this way

- **The blocklist comes before the watcher.** Every customer, open deal, partner, vendor, competitor and do-not-contact person is on the sender's blocklist before a single lead is added, and our own filter runs on top. A list built by hand cannot leak either.
- **Four of the six facts must be known. Two may be unverified.** Company size, HQ country, the person's country and the person's role must be known and true. Whether they sell to businesses, and whether they are privately owned, may pass unverified after one attempt, with a tag that stays on the lead so any send can be traced back.
- **A person is matched by profile URL or work email, never by name.** On the first live run, name matching paired an employee of a legal-software company with a whiteboard company. We withdrew the rule the same day.
- **The message talks about the topic and never mentions the click.** For competitor and creator audiences it never names the post, the reaction or the author. Connection requests go out blank.
- **Code checks every draft before a person sees it.** Three sentences, one question, 320 characters, no pitch words, no link, no exclamation mark, no fact that is not in the inputs. A draft that fails keeps the approved template, with a tag, and is never dropped.
- **A person starts every campaign.** After reading its first batch. And a person reads the ledger every morning after that.

## How to build it

1. **Choose the authors and set a date floor.** One file: each author's URL, their bucket (own, competitor, creator), the staff domains to exclude, and the copy rule (direct for your own posts, topic only for everyone else). Nothing before the floor is ever replayed.
2. **Build the never-message list before the watcher.** Customers, open deals, partners, vendors, competitors, do-not-contact people. Push it to your sender's blocklist and keep your own copy as a second filter.
3. **Watch the posts.** Two days back. Comments, reposts and reactions. Page past the first hundred. A reaction carries a member id, not a profile, so resolve it to one. Land every engagement in the signals table with the post text and the comment text.
4. **Judge one person per run, cheapest source first.** Memory, then sources with no provider credits, then one paid look-up per missing fact. The four hard facts hold the person on unknown. The two soft facts may pass with a tag. Write the verdict, the facts and every attempt down.
5. **Route by author bucket and engagement type.** To a standing campaign per audience: your own posts, competitor audiences, creator audiences, reactors (after they accept), and a nurture lane with no message.
6. **Write per person, then check by code.** One research call with browsing off, given only what you hold on the person, the post and the comment. Run the checker on the output. On any failure, keep the template.
7. **Never start a campaign from code.** Create every campaign as a draft. A person reads the first batch and presses start in the app. Replies are answered by a person.
8. **Run the five steps as one routine.** In order: blocklist, watcher, gate, handoff, writer. A cap per step, a monthly ceiling shared by all of them, and a ledger someone reads.

## Copy this: The six facts and the message checker

```yaml
# the six facts (hard = must be known and true; soft = may pass unverified after one attempt)
[hard]  the company has 25 to 500 employees
[hard]  the company's HQ is in the US or Canada
[hard]  the person lives in the US or Canada
[hard]  the person is a founder, C-suite, or a marketing, GTM, revenue or sales leader
[soft]  the company sells to businesses (a quoted sentence from its own site, or "unverified")
[soft]  the company is privately owned
sources, cheapest first: your own tables -> the CRM -> previews with no provider credits -> one paid look-up per missing fact

# the message checker (a draft that fails any line keeps the template)
first message:  at most 3 sentences, 320 characters, 1 or 2 question marks
follow-up:      at most 4 sentences, 400 characters, exactly 1 question mark
never:          an exclamation mark, a URL, or "book", "demo", "pricing", "offer", "call" in the first message
never (competitor and creator audiences): "saw you", "noticed you", "your comment", "liked", "your post", the author's name
never:          a company name, number or product that is not in the inputs
```

## Words we use

- **Signal:** Something a company or a person did that suggests now is a good time to talk: a job posting, a comment on a post, a form, a reply.
- **Blocklist:** The companies and people we must never contact. One tool writes it, and every sender reads the same copy.
- **Sender:** A tool that delivers messages or calls on one channel: email, LinkedIn or the phone.
- **Cap:** A spending limit per day or per month. Over the cap, the routine stops and says so.
- **Ledger:** The place the receipts are read. One row per run, read by a person every morning.
- **Unknown:** The answer a check gives when it cannot tell. An unknown is never counted as a pass. It waits for a person or for a missing fact.

## Talk to a person

Want the play running on your authors and your sender? WarmUp builds these systems for companies, or places a verified GTM engineer to run them: https://warmup.ai/gtm-systems and https://warmup.ai/hire. WarmUp publishes no pricing.
