Skip to main content

Buying Groups

Buying group intelligence identifies and tracks the committee of stakeholders involved in a purchase decision. GTM Clarity uses probabilistic role detection from multiple signals, completeness scoring against configurable role templates, and contact discovery from email and intent data.

Core Concepts

Roles

Every member of a buying group is assigned one of these roles:

RoleDescription
championInternal advocate who drives the deal forward
economic_buyerHas budget authority and final sign-off
technical_evaluatorEvaluates technical fit and capabilities
end_userDay-to-day user of the product
legal_procurementHandles contracts, compliance, and procurement
coachProvides insider guidance and navigational help
blockerOpposes or slows the purchase decision
unknownRole cannot be determined from available signals
Probabilistic, Not Deterministic

Every role assignment carries a confidence score (0.0--1.0). The UI always displays roles as "Likely [Role] (N% confidence)" --- never as absolute labels. This reflects the inherent uncertainty of role inference from indirect signals.

Buying Group Scope

A buying group is scoped to an account and optionally to a solution tag:

  • Account-level group: One group per account, covering all products/solutions
  • Solution-level group: One group per account per solution, allowing different buying committees for different products

Multi-Signal Role Detection

Role detection combines four signal sources, each with a different trust level:

Signal SourceWeightDescription
sf_contact_role0.9Salesforce OpportunityContactRole (explicit CRM data)
title_parse0.6Job title heuristic parsing
delivrai0.5Delivr.ai buying unit role data
engagement_pattern0.3Behavioral pattern inference (lowest trust)

Detection Algorithm

The detectRole function merges signals using weighted confidence fusion:

  1. Group signals by role --- Collect all signals that point to each possible role
  2. Compute weighted score per role --- For each role: sum(signal.confidence * SIGNAL_WEIGHTS[signal.source])
  3. Select the winning role --- The role with the highest weighted score
  4. Normalize confidence --- Divide the winning score by the sum of weights for the winning role's sources, then clamp to [0, 1]

Salesforce Role Mapping

When a Salesforce OpportunityContactRole is present, it is mapped to a buying group role:

Salesforce RoleBuying Group Role
Decision Makereconomic_buyer
Economic Buyereconomic_buyer
Executive Sponsoreconomic_buyer
Technical Buyertechnical_evaluator
Technical Evaluatortechnical_evaluator
Evaluatortechnical_evaluator
Business Userend_user
Otherunknown

Title Parsing

Job titles are parsed using pattern matching to infer roles. For example, titles containing "VP Finance" or "CFO" suggest an economic buyer, while "Engineer" or "Developer" suggests a technical evaluator.

Detection Example

A contact with title "VP of Engineering", a Salesforce role of "Technical Evaluator", and a Delivr.ai role of "technical_evaluator":

Signals:
- title_parse → technical_evaluator (confidence 0.8, weight 0.6)
- sf_contact_role → technical_evaluator (confidence 1.0, weight 0.9)
- delivrai → technical_evaluator (confidence 0.8, weight 0.5)

Weighted score for technical_evaluator:
(0.8 * 0.6) + (1.0 * 0.9) + (0.8 * 0.5) = 0.48 + 0.90 + 0.40 = 1.78

Max possible weight: 0.6 + 0.9 + 0.5 = 2.0
Normalized confidence: 1.78 / 2.0 = 0.89

Result: technical_evaluator (89% confidence)

Role Templates

A role template defines which roles are expected for a complete buying group, along with weights and whether each role is required:

interface RoleTemplate {
id: string;
tenantId: string;
name: string;
solutionTag?: string;
roles: Array<{
role: BuyingGroupRole;
required: boolean;
weight: number;
}>;
isDefault: boolean;
}

Example template (Enterprise SaaS):

RoleRequiredWeight
championYes3
economic_buyerYes3
technical_evaluatorYes2
end_userNo1
legal_procurementNo1

Templates are configurable per tenant and optionally per solution tag.

Completeness Scoring

Completeness measures how many of the template's expected roles are filled in the actual buying group.

Algorithm

completenessScore = round(
sum(weight for each filled role in template)
/ sum(weight for all roles in template)
* 100
)

Example

Using the Enterprise SaaS template above (total weight = 10):

RoleFilled?WeightContribution
championYes33
economic_buyerYes33
technical_evaluatorNo20
end_userYes11
legal_procurementNo10
completenessScore = round((3 + 3 + 0 + 1 + 0) / 10 * 100) = 70

Result Structure

The completeness scorer returns:

interface CompletenessResult {
score: number; // 0-100
filledRoles: BuyingGroupRole[];
missingRoles: BuyingGroupRole[];
missingRequired: BuyingGroupRole[];
dataQualityNote?: string; // e.g., "Based on 2 of 6 contacts with role data"
}
Missing Required Roles

The missingRequired array highlights roles that are both required by the template and absent from the buying group. These are the highest-priority gaps to fill.

Data Quality Context

The scorer accepts optional data quality context. If only some contacts have role data, the result includes a note like "Based on 2 of 6 contacts with role data" to flag that the completeness score may be understated.

Contact Discovery

GTM Clarity discovers new contacts that may belong to a buying group from two sources:

SourceDiscovery Method
o365_emailEmail threads involving known contacts
o365_calendarCalendar invitations with unknown attendees
delivraiDelivr.ai contact enrichment data

Discovered contacts are marked with isDiscovered: true and their email is stored in discoveredEmail until they are matched to an existing person record or confirmed by a sales rep.

Member Status

Each buying group member has:

FieldDescription
roleAssigned buying group role
roleConfidenceConfidence score 0.0--1.0
roleSourceWhich signal source determined the role
isConfirmedWhether a sales rep has manually confirmed the role
isDiscoveredWhether the contact was auto-discovered
discoverySourceo365_email, o365_calendar, or delivrai

Configuration

Configure buying groups in Settings > Buying Groups:

  1. Create role templates --- Define which roles matter for your deals
  2. Set the default template --- Applied automatically to new buying groups
  3. Create solution-specific templates --- Different products may have different buying committees
  4. Review discovery settings --- Enable or disable O365 and Delivr.ai discovery