# Spot a buying committee

**The job:** notice when three people from the same company show up in a week.
That is not three leads. That is one deal with a committee, and it should be
worked as one.

**Who this is for:** B2B teams with deal sizes big enough to have committees —
which is most of them, and most of them miss this.

---

## The signal

One person reading your pricing page is a maybe. A VP, an engineer and someone
from procurement reading it in the same week is an evaluation, and the right
move is different: one coordinated approach, not three cold emails that each
mention the other two are also looking.

## Finding them

```python
import collections, requests
from datetime import datetime, timedelta, timezone

H = {"Authorization": f"Bearer {KEY}"}
BASE = "https://app.signal.geysera.com/signal-api/v1"

def recent_visitors(days=7, min_intent=40):
    page, out = 1, []
    cutoff = datetime.now(timezone.utc) - timedelta(days=days)
    while True:
        r = requests.get(f"{BASE}/visitors",
                         params={"page": page, "page_size": 200,
                                 "min_intent": min_intent}, headers=H).json()
        out += [v for v in r["visitors"]
                if datetime.fromisoformat(v["last_visit_at"]) >= cutoff]
        if page * r["page_size"] >= r["total"]:
            return out
        page += 1

by_company = collections.defaultdict(list)
for v in recent_visitors():
    if v["company_domain"] != "personal" and not v["is_locked"]:
        by_company[v["company_domain"]].append(v)

committees = {d: p for d, p in by_company.items() if len(p) >= 3}
```

`personal` is excluded deliberately: consumer mailbox domains all roll up under
that one sentinel, so it will otherwise look like the largest buying committee
you have ever seen.

## Deciding whether it is real

Three people is a threshold, not a conclusion. What makes it a committee is a
spread of *roles*:

```
Here are people from {domain} who visited in the last 7 days:
{people_json}

Answer three questions:
1. Does this look like a coordinated evaluation, or unrelated individuals?
   Cite the titles and timing that make you say so.
2. If coordinated, who is most likely the economic buyer and who is the
   champion?
3. What single question would tell a rep whether this is real?

If titles are missing for most of them, say the data cannot support a read.
```

Titles are null more often than you would like. A model asked to identify an
economic buyer from three nulls will invent one; the last line is what stops it.

## Acting on it

The useful output is not an email, it is a change of plan: one account owner,
one thread, one meeting request that names the group. Push the account to your
CRM as a single opportunity rather than three leads — see
[fill your CRM with who is actually visiting](./fill-your-crm-with-who-is-actually-visiting.md).

## What will go wrong

**Agencies and consultancies.** Five people from one domain, none of them
buying anything. Classify the account `excluded` once and it stays out.

**One person, three devices.** Identification is per-email, so this is rarer
than you would expect, but a personal and a work address for the same human
will present as two people.

**Your own team.** Staff traffic from your own domain will form the tightest
committee you have. Exclude it.

---

Next: [notice an account going quiet](./notice-an-account-going-quiet.md) ·
[account-based marketing, end to end](../playbooks/account-based-marketing-end-to-end.md)
