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
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.
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 · account-based marketing, end to end
Markdown source: /developers/workflows/spot-a-buying-committee.md