Classifying Leads and Contacts

Background and Business Challenge

Understanding the role of an individual in their organization is critical to engaging them effectively with sales and marketing resources. We would not get far sending the CEO and a junior DBA the same marketing messages and engaging with them the same way.

Often the only data element we have that describes an individual’s role in their organization is their title. Unfortunately, title is difficult to work with from a systems standpoint, because it is highly variable - for example the following titles all refer to essentially the same job:

senior developer, senior staff engineer, sr. programmer, principal developer, frontend developer, backend engineer, SDE

So expecting that sales and marketing staff can build effective queries and filters to isolate the Leads and Contacts they care about based on title is unreasonable.

In addition, simple searching by keywords is problematic, as titles are full of phrases that mean something different than their individual words might suggest - for example, “Executive Assistant” contains the word “Executive”, but is a very different role than “Chief Executive” or “Account Executive”.

The variability of job titles makes categorizing people within sales and marketing automation tools difficult and error-prone.

A Solution

I recently implemented a solution to the problem of Lead and Contact classification within Salesforce, based loosely on ideas from this paper by Ron Bekkerman of LinkedIn and Matan Gavish of Stanford University. I’ll explain the basics of this solution below.

The first step was to define three distinct attributes of a person’s job:

The Role attribute is what we think of as the job itself - a person is an engineer, or a manager, or a professor, or a business analyst.

The Seniority attribute defines the person’s level within the role. For example, Associate Vice President, Vice President, and Executive Vice President represent different seniority levels within the same role (“Vice President”).

The Area attribute defines in what part of the organization does the person work - sales, finance, hr, engineering, IT for example.

For each attribute, you then define an ordered set of terms, each of which will be associated with a set of keywords/phrases and “anti-keywords/phrases” (indicated by a preceding “-“). For each attribute, titles are compared against each term in order. For the first term where there is a matching keyword/phrase and no matching “anti-keyword/phrase”, that term is assigned to the title for the particular attribute.

Let’s consider a couple of simple examples. First we need to define our attribute terms and keyword/phrase sets:

Seniority

Order Term Keywords
1 junior deputy,junior,intern,assistant,jr,associate,avp
2 senior senior,sr,principal,managing,distinguished,fellow,chief,head,executive,managing

Role

Order Term Keywords
1 director director,dir,head
2 manager manager,mgr,team lead,practice lead,supervisor,leader,lead
3 ic_developer developer,developper,engineer,programmer,sre,data scientist,data engineer,sde,sdet,software,coder,-mechanical
4 ic_pm project manager,program manager.product manager,scrum master,scrummaster,pm,coordinator

Area

Order Term Keywords
1 devops devops,sre,site reliability,reliability,build,release,automation,availability,kubernetes,operations,system,systems,sysops,cloudops
2 sales sales,business development,acount manager,account executive,sales executive,channel,territory,account development,cro,chief revenue officer
3 hr hr,human resources,recruiter,talent,people,recruiting,candidate
4 tech_networking network,networks,networking,telecom,network engineer
5 tech user experience,identity,platform,application,applications,infrastructure,cloud,data center,software development,engineer,engineering,eng,cto,chief technology officer,technology,web,tech,developer,developper,technical,computer,ecommerce,e commerce,eai,aws,scrummaster,scrum master,software,unix,iot,linux,web,system administrator,sysadmin,sys admin,system admin,technician,technologist,technologies,web designer,sde,sdet,ux,development,programmer,-mechanical
6 pm program management,project management,project manager,program manager,pmo

Now we are ready to consider some simple examples:

Example 1

Title:
“Senior Software Engineer”

Classification:
Job Seniority: senior
Job Role: ic_developer
Job Area: tech

This one is straightforward - a senior individual contributor developer, a tech title.

Example 2

Title:
“Junior Mechanical Engineer”

Classification:
Job Seniority: junior
Job Role: unidentified
Job Area: unidentified

This example shows the anti-keyword/phrase concept in action. The presence of the word “mechanical” in the title blocked the title from being classified as a developer role and tech area.

You will find that with a careful selection of keywords, and ordering of attribute terms, you can develop a highly effective classification approach.

The solution to implement this classification approach in Salesforce consists of a number of components:

  1. Custom Metadata to store the terms and keywords/phrases. This allows for refining the model over time without having to revisit the code.
  2. A ClassifiedTitle apex class that determines the three job attributes for a given text title and custom metadata entries.
  3. Apex trigger logic on the Lead and Contact objects that fires on insert or when the title changes, to use the ClassifiedTitle class to update the record’s job attributes.
  4. Apex batch classes to manually re-process Lead and Contact records after changing the Custom Metadata. For example, if you were to add the keyword ‘telecommunications’ to the job role term tech_networking, you would want to use these batch classes to re-process the job attributes for all Leads and Contacts where the title contains the string ‘telecommunications’.

You may find that the “controlled vocabulary” that you have developed around jobs, using terms in the three categories (seniority, role, and area) are still not sufficiently easy for sales and marketing teams to work with - there is still too little precision around querying and filtering, and these teams often want to engage a certain type of person characterized by a basket of job attributes.

In this case you can introduce another concept, that of a Persona. A Persona is like a pre-built filter against the job attributes - allowing you to define an archetype that might span a number of job attributes, but which the sales and marketing team would want to engage in a similar fashion. If the marketing defines four archetypes that they want to market to differently, you can define four matching personas, and then it is easy for the marketing team to direct the right messages to the right people.

As an example, using the job attributes we defined earlier, we might define a Persona called “Technical Leader” as such:

Job Seniority: blank OR senior
Job Role: manager OR director
Job Area: tech OR tech_networking OR devops

Adding this persona layer to the Salesforce solution involves:

  1. Adding Custom Metadata to define personas in terms of job attributes
  2. Creating a PersonaAssignment apex class that maps job attributes to personas, using the Custom Metadata. This is analogous to our ClassifiedTitle class that maps title to job attributes using Custom Metadata.
  3. Apex trigger logic on the Lead and Contact objects that fires on insert or when the job attributes change, to use the PersonaAssignment class to update the record’s persona.
  4. Apex batch classes to manually re-process Lead and Contact records after changing the Custom Metadata. For example, if you were to add the seniority job attribute term senior to one of your personas, you would want to use these batch classes to re-process the personas for all Leads and Contacts where the job attribute senioriy = senior.

Wrapping Up

If your organization is struggling with how to properly classify individuals to ensure effective engagement by your sales and mearketing teams, I encourage you to consider a keyword-based approach as I have outlined here. Depending how extensive your catalogue of terms and keywords are, the solution can be quite precise. Within Salesforce, the entire soltion can be automated, and able to be adjusted and refined “on the fly” to better over time.

Feel free to connect with me if you have question about this post or about how to implement a similar solution in your organization.