Growth Unhinged is, quite literally, powered by beehiiv. I made the switch at the beginning of the year because beehiiv is serious about powering the internet’s best newsletters. Their all-in-one platform brings together newsletters, websites, and every tool you need to grow and earn.
It’s now even better with the new beehiiv MCP. I use the MCP in Claude Cowork (my 2026 obsession) to audit my site and prioritize SEO fixes, analyze subscriber trends, and set up automations. See beehiiv yourself and get 30% off for three months with code KYLE30.
👋 Hi, it’s Kyle and welcome to Growth Unhinged, my weekly newsletter exploring the hidden playbooks behind the fastest-growing startups.
As AI makes generic outreach cheap and ubiquitous, differentiation comes from precision, relevance, and deep context around a small set of high-value accounts. This sounds wonderful on paper until it’s time to set up a modern account-based GTM engine.
For help I turned to Dan Rosenthal, co-founder of Workflows.io, which builds go-to-market systems for B2B revenue growth. Dan and partner Fivos Aresti bootstrapped Workflows.io to $2.5M ARR in 10 months and have implemented dozens of modern ABM engines. Today Dan shares their extremely tactical ABM playbook. (This post may be cut-off by your email provider; read it in full on the Growth Unhinged website.)
How to build a modern ABM engine
Put simply, account-based marketing is an account-based GTM strategy that works backwards from a list of target accounts. While it has historically been expensive and highly manual, AI agents and data enrichment make it way more accessible.
We now recommend it to any B2B company with a ACV of $50k+ and a constrained addressable market (<20,000 qualified companies). For companies with a TAM of <20,000 companies, the relative low conversion rates of other GTM approaches (e.g. automated outbound, LinkedIn content) make them very hard to rely on in siloes.
I started Workflows.io to help companies build their GTM systems. We’ve personally worked with 250+ companies including dozens of ABM implementations. ABM is one of our most in-demand service lines, and I can confidently say that the technical implementation is still far harder than most expect. But the results are also far more impressive.
So I teamed up with Kyle to teach you how to build a modern, agent-compatible ABM system using HubSpot, Clay, and Claude. Every process will be rooted in real (but anonymized) examples from our clients. I’ll break it down into seven main components, which I recommend following step-by-step.

Step 1: TAM and stakeholder mapping
The primary goal here is to create a Target Account List (TAL) that captures 90%+ of a TAM. When we’re talking a TAM of <20k companies, incremental increases in coverage can have massive implications on revenue so don’t shortchange this.

First, we build a data-supported ICP model. It is surprising how many GTM teams we speak to that don’t have their ICP written down on an agreed-upon document. We’ll assume you have this in-place for the sake of this article, but here are some external resources that can help if you don’t:
ICP modeling guide (via Workflows)
Closed won Claude skill (via Freckle)
ICP sharpener skill (via Growth Unhinged)
Here’s an example of what our own ICP planning doc looks like:

We believe simpler is better when it comes to tiering models. Simple usually means more accuracy and clarity for the sales team. With agreed-upon ICP qualification and scoring parameters, you have everything you need to start pulling the actual lists.
There are four main types of data providers for creating the Target Account List. Generally, we find that smartly combining 3+ data sources massively increases our chances of reaching 90%+ TAM coverage.
General prospecting databases (e.g. Apollo, ZoomInfo) — Best for companies with a LinkedIn presence
Lookalike database (e.g. Ocean.io, Discolike) — Great tool for doing hyper-specific searches including companies not on LinkedIn
Specialized databases (e.g. Storeleads, influencers.club) — Useful in certain TAMs that have reputable providers
Web scraping (e.g. Apify, Claude Code) — Necessary to map out TAMs in niches not fully represented on LinkedIn
The goal is to balance coverage and costs.
But the only way to maximize coverage beyond a certain point is to pull a higher volume of lists. And those lists naturally get broader, including more unqualified companies, but also more qualified companies that targeted searches won't capture. Which increases costs two-fold.
On one side, it’s the credits directly spent with the data providers to pull more data. But also more AI spend required to qualify the TAM list since we deploy AI research agents to qualify each company based on their website content. This is a necessary evil if you want to fully map out your TAM, because the filters / data quality of prospecting databases don't fully suffice (e.g. vertical SaaS on typical databases will be under their industry vertical instead of software development).
After pulling multiple lists, the next step is to merge + dedupe them. We used to do this in Clay, but we recently switched this workflow to Claude Code and find it far easier. We still end up in Clay afterwards, where we spend significant time back-testing and optimizing the centerpiece qualification prompt/research agents.
This powers the initial qualification we do on every company (usually industry and product fit), before enriching and qualifying further based on firmographics, technographics, and account fit signals.
Here is the framework we use to build our qualification prompts:
You are analyzing a company's website to determine if they are a TRUE [TARGET_COMPANY_TYPE].
[One-sentence definition of what this company type does and how it operates.]
EXCLUDE (NOT A [TARGET_COMPANY_TYPE]) if PRIMARY business is:
[EXCLUSION_1]: [Signals to look for, e.g., specific page language, site sections, positioning clues]
[EXCLUSION_2]: [Signals to look for]
[EXCLUSION_3]: [Signals to look for]
QUALIFY ([TARGET_COMPANY_TYPE]) if you find:
Explicit terms: [3-5 keywords or phrases that directly confirm this company type]
Industry pattern: [A structural signal, e.g., naming conventions, business model indicators, customer-facing language]
[QUALIFYING_SIGNAL_3]: [What to look for and why it confirms qualification]
[QUALIFYING_SIGNAL_4]: [What to look for and why it confirms qualification]
HYBRID COMPANIES ([Describe the common overlap, e.g., companies that perform the target activity alongside an adjacent business model]):
QUALIFY if [threshold for qualifying hybrids, e.g., the target activity represents a meaningful portion of revenue, product mix, or customer base]
EXCLUDE only if [threshold for excluding hybrids, e.g., the target activity is incidental and the primary business is clearly something else]
DECISION PRIORITY:
Check for exclusions first
Look for qualifying evidence
For hybrids, check if [TARGET_COMPANY_TYPE] activity is significant (not just minor or incidental)
RESPOND WITH:
QUALIFIED [TARGET_COMPANY_TYPE] - [Specific evidence found]
NOT A [TARGET_COMPANY_TYPE] - [Reason: which exclusion category]
INSUFFICIENT INFORMATION - [Reason: unclear or limited content]
Analyze the following company's website: {Domain}
With a recent Series A SaaS company targeting B2B distributors, we scraped 70+ sources (mostly industry association directories) to maximize coverage. The Clay workbook got pretty hectic, but that's the price it takes.
The last step is to repeat the same process for contacts:
A) Manually map out the titles that comprise the following categories: decision-makers, champions, influencers, and end-users (optional).
B) Repeat closed won analysis, but using contacts instead.
C) Use findings to improve your manually created list of titles.
D) Do actual contact searches (e.g. on Apollo) for each job title group, and adjust criteria depending on results (e.g. adding more breadth to Champion titles to boost numbers).
E) Once the final list is ready, pull contacts from multiple data sources (e.g. Apollo, AI Ark, Clay).
F) Verify and find missing emails + phone numbers for relevant contacts (e.g. Tier 1 Decision Makers), using lower cost providers like Findymail and BetterContact.

Example title list
Step 2: Account research
AI made creating a comprehensive account list much easier. It also made account research WAY easier to collect at scale.
Since we already cut down our initial list, our goal is to collect the additional data points that would be useful for (a) campaign personalization or (b) sales reps researching accounts without leaving the CRM.
For most of the companies we work with, that ends up being 30+ custom data points. Which usually means 30+ custom CRM properties that need to be configured.
This is why setting up ABM is resource-intensive on the RevOps side of things, but Claude Code and MCPs have also made it a lot easier.
We typically use a spreadsheet to map out every single data point with their official HubSpot names, as well as additional requirements e.g. overwrite rules. Here’s an example of what that looks like:

This work is all done before we build a single workflow, so we can accurately predict costs.
Doing a full TAM Map with account research can easily cost $2,000+ across data provider, Clay, and AI credits. But it’s a justifiable expense because you can now get extremely precise with the data points you collect.
These are real examples from clients, in order of simple to complex:
Engineering headcount
Custom sub-industry classification
E-commerce hosting platform
Competitor tech usage
Finding closest coffee spot to prospect’s office
Recent clinical trials
Mapping parent-child relationships
Composite score on media buying activity
We deploy both web research agents (Claygent) and some of the 150+ data providers you can rent in Clay, since some data is not publicly available. In practice, building this requires a lot of prompt engineering and Clay configuration.

Example enrichment actions in Clay

Example property matching
We also use the account research properties to set up account scoring directly in HubSpot. This way if a rep manually overwrites a value, the score can be automatically reassessed:

On top of the raw data, we typically apply some formulas or calculations data more actionable for HubSpot.
For contact job titles, we use AI to categorize every job title based on our established groups: decision-makers, champions, influencers.
For company headcount, we set up custom bands to classify SMB vs. Midmarket vs. Enterprise, which is used for routing and scoring.
One important sub-component of account research are parent-child associations. When selling to PE-backed companies, you may have to sell through the parent company. We deploy web research agents to find this information and set up HubSpot associations to reflect those relationships.
All of this makes your CRM a more data-rich and pre-filtered prospecting database so your reps don’t ever need to login to Apollo or ZoomInfo themselves (you can just use their data through Clay).
This may seem like a lot of work for a one-time implementation, but this same workflow is converted to something that gives everlasting value: an automated CRM enrichment workflow.
Note: Everything up to this point can also be done in Claude Code with the same data providers, but the evergreen workflows coming after are more robust to build in Clay.
Step 3: CRM cleanup and enrichment
If we go through all the effort of setting up the target account infrastructure mentioned above, we want this same workflow to be applied to every record in the CRM. And every future CRM record.
Surprisingly, we find this workflow fairly straightforward to set up:
Duplicate the TAM and stakeholder map workflows.
Set up the trigger to be list enrolment (24 hour cadence) or webhooks (instant but requires HubSpot Data Hub Pro at $800/mo)
Adjust the final action to be “Update record” instead of “Create record”
Enroll the backfill of companies and contacts.
We typically set up an “Enriched by Clay” date field on both the company and contact objects, both for easier tracking and to power workflows that re-enroll records when the data freshness window passes (usually after one year).

Before we do any changes in the CRM, e.g. adding records or properties, we typically do a cleanup first. We recommend the following at the bare minimum: (a) hard domain and email duplicate removal, (b) basic property audit to prevent redundancies.
CRM hygiene can get deeper than we have space to explore in this article. In short, these three mediums should cover 99% of your use cases:
Clay + the HubSpot integration/API
HubSpot Data Hub
Claude Code + HubSpot MCP
Once the CRM cleanup is done, the TAM/stakeholder map is uploaded, and custom enrichment data is automatically flowing, we typically recommend a few quality-of-life improvements to help activate this data:
Customizing contact and company views to surface the most important account research.
Creating segments to separate companies by tier and category.
Adding on-demand enrichment buttons into company and contact views so reps can just click a button to do things like “Find additional stakeholders at company”.

Example company enrichment buttons

Example contact enrichment buttons
Up to this point, I’ve just covered static data. For any data that needs to be monitored on an ongoing basis, we’ve found a dedicated signal tracking process to be the best approach.

