Our People Enrichment Process for SMB Companies
I dont touch Apollo or Sales Navigator. Apollo has crap data imo, and I think sales navigator has crap filters. Icypeas can be a good alternative for linkedin specifically but it emulates the same filters so requires some massaging.
1. We focus mostly on SMB so we have to fight like hell to get lead data.
2. We typically scrape google maps or google search to get lists of companies (no lead databases for company building)
3. We take the company name from gmaps listing or google search and generate simplified names. For example, if google maps says the business name is “Makotos Japanese Restaurant and Bar, NC” we will generate simplified names like “Makoto, Makotos, Makoto’s” with OpenAI's api, and post these to icypeas. Since icypeas only allows company keyword match, this helps us find multiple decision makers especially in small business use cases where each employee might have put the name of the company they work at, a little bit differently. These size companies typically dont have official company pages their employees can link their profiles to so they write in their own version of their company name. One person might write Makotos Steakhouse, while another writes Makoto's Sushi. Since one has an apostrophe and one doesnt, our AI Generated variations will catch these.
This will however also find unrelated businesses with similar names like Makotos Design Studio, so we then use OpenAI to fuzzy match company names after the fact. We then have to go and look through job titles and company names within the worksfor[] array of job experience for each profile. The reason for this is because linkedin salesnavigator (which icypeas emulates) returns profiles in a non intutive way.
For example, this search for owner at bonefish grill
https://www.linkedin.com/sales/search/people?query=(recentSearchParam%3A(id%3A4850368546%2CdoLogHistory%3Atrue)%2Cfilters%3AList((type%3ACURRENT_TITLE%2Cvalues%3AList((text%3Aowner%2CselectionType%3AINCLUDED)))%2C(type%3ACURRENT_COMPANY%2Cvalues%3AList((id%3Aurn%253Ali%253Aorganization%253A348699%2Ctext%3ABonefish%2520Grill%2CselectionType%3AINCLUDED%2Cparent%3A(id%3A0))))))&sessionId=u%2BuTrFd%2FTdyyoCyDPPTGIw%3D%3DWill%2Cfilters%3AList((type%3ACURRENT_TITLE%2Cvalues%3AList((text%3Aowner%2CselectionType%3AINCLUDED)))%2C(type%3ACURRENT_COMPANY%2Cvalues%3AList((id%3Aurn%253Ali%253Aorganization%253A348699%2Ctext%3ABonefish%2520Grill%2CselectionType%3AINCLUDED%2Cparent%3A(id%3A0))))))&sessionId=u%2BuTrFd%2FTdyyoCyDPPTGIw%3D%3DWill) return 26 results… Obviously there are not 26 owners of bonefish grill.
To understand why this happens, Linkedin looks for a title match and a company match across ALL Active experiences. So look at this guy who shows uphttps://www.linkedin.com/in/keith-rodgers-4a102516It is a company match because he is a server at bonefish grill. And it is a title match because he is an owner at sgt handyman (his own handyman company)
Linkedin looks at this and says “Meets title and company criteria”
Obviously this is not what the user wants, but it is how the filters work. So now we need to add an additional cleansing step, we need to parse through ALL active experiences and see if 1 singular experience object meets BOTH the title and experience criteria at the same time.
Ok, so now we have the right people… that are on linkedin. But what about outside linkedin??? For this we will use 2 places, news articles, and my team pages. We built a custom sitemap scraper api that can navigate through all pages on a site and find the my team page. This will give names and job titles of any available people like on nuttalbrown.com you will see 4 decision makers and their titles.
We can then use perplexity to find news articles or podcasts that mention decision makesr by name. Example : https://www.perplexity.ai/search/who-is-the-ceo-of-okcapsule-co-bkzi0kLHS3.iMdP.nAmxVAOnce
We find the names and/or linkedins, we bruteforce emails with this waterfall (outside of clay)
Findymail enrich via linkedin url,
Findymail enrich from full name + domain
Icypeas enrich from fullname + domain
Wiza enrich from profile url
Now we need to find alternate emails.
We have developed our own custom sitemap scrapers, that will navigate through company websites and find all contact emails listed on their website. For example at aaapaving.com you will find estimating@aaapaving.com on the bottom of the page, or on outdoortechnology.com you will find 3 contact emails on their contact page.
We then also use icypeas domain-scan api endpoint to bruteforce common generic emails like info@, sales@, admin@, etc.
We then create custom integrations with instantly.ai so if anyone at a company responds interested, we push that lead to a clay table, pull out the root domain via a formula, and add it to the google sheet blocklist for instantly.ai so that we dont end up reaching the decision maker via his actual email like john@cold.email, and then pissing him off by reaching out the same day to admin@cold.email
This will block companies at a domain level, in real time, as leads respond interested.
I will make a video about this within the next month or so. We invested over 100,000 USD into building this and it works great for our clients.
7
3 comments
John Tanner Worthington
4
Our People Enrichment Process for SMB Companies
cold-email-community
skool.com/cold-email-community
Cold Email Community: A free community for keeping up to everything cold email. Share, Collaborate, and Win together with cold email!
Leaderboard (30-day)
Powered by