Market sizing by persona: count the market, then the CRM gap

This recipe uses the official Cognism and HubSpot MCP servers, and both work in Claude and ChatGPT. Steps that write, send or spend credits wait for your approval.

IntermediateMarketingRevOps

Who is this for?

Marketers and RevOps people who want a market size by persona before a campaign, and a count of how many matching contacts are already in the CRM. Cognism supplies free company and people counts from its dictionaries, and HubSpot supplies the contact count. Cognism can be swapped for Explorium AgentSource for free company and prospect statistics, and HubSpot for Salesforce.

What do you get?

Sizing table for four logistics segments. Sample output: every company and person in it is fictional.

Campaign segments for Fernhill Software (fictional): logistics operations leaders in the United States and Canada. Dictionary values used: - Industry: Freight and logistics services - Regions: United States, Canada - Department: Operations - Seniority: Director, VP Counts only. No Cognism records returned.

SegmentCompaniesPeopleHubSpot contactsGapFilters
US, Operations, Director124038602143646HubSpot industry is Logistics and job title contains Director. Partial match.
US, Operations, VP12401105611044HubSpot has no seniority field. Title contains VP. Not the same filter.
Canada, Operations, Director31064018622Same title rule as the US Director row. Partial match.
Canada, Operations, VP3101907183Same title rule as the US VP row. Not the same filter.

Company counts repeat across Director and VP. Don't add them into one total. Already in HubSpot, inside the US Director row: Dana Okafor, [email protected], Director of Operations, Larkspur Freightworks (fictional). No HubSpot records were changed.

How long does it take, and what does it cost?

Estimate About 15–25 minutes, most of it confirming filters and reading the gap table.

Assumptions: One campaign of about four segments, each with an industry, a region, a department and a seniority.

Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.

Which MCP servers does it use?

Every server is confirmed in: ClaudeChatGPT

How do I set it up in a chat app?

Every server in this recipe is confirmed for Claude and ChatGPT. Connect each one, then paste the prompts below into one conversation.

Developer setup

Auth setup and mcp.json for Claude Code and Cursor
  • Cognism: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • HubSpot: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.

Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.

{
  "mcpServers": {
    "cognism": {
      "url": "https://mcp.cognism.com/mcp"
    },
    "hubspot": {
      "url": "https://mcp.hubspot.com"
    }
  }
}

Step-by-step prompts

  1. Look up {industries}, {regions}, {departments} and {seniorities} in the Cognism dictionaries. Show the exact dictionary value next to each word I used. Don't return company or person records.
  2. For each segment I confirm, run a Cognism company count and a people count with those dictionary values. Show the company count, the people count and the filters applied. Use the count tools only. If a count isn't available, stop and tell me how many search tokens a record search would use. Don't return records unless I approve it.
  3. Search HubSpot contacts for each segment with the closest properties I have, such as {industry_property} and {title_property}. Show the contact count and the exact filters for each segment. Don't change any records.
  4. Give me one table: segment, Cognism companies, Cognism people, HubSpot contacts, and the gap, which is Cognism people minus HubSpot contacts. Flag any row where the HubSpot filters differ from the Cognism dictionary values. Keep each segment on its own row when companies repeat across personas. Keep the table here as text.

Can I run it on a schedule? (optional)

Where does this go wrong?

Gotchas

Download

Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.

Download tam-by-persona.md

Vendor sites: HubSpot. If we join an affiliate program, these links will be labeled as affiliate links.