Size a target market and see how much of it your CRM already owns

By General Input

Define a target segment, see how big the market really is, then find out what share of it you already track and exactly where the whitespace sits.

Integrations

  • CompanyEnrich
  • HubSpot
  • Google Sheets

Type

App

Categories

  • Sales
  • Operations

Build me a market segment planner that our RevOps lead and our territory owners open when they want to know how big a target market is and how much of it we already have in the CRM. The page leads with the coverage split, not with a list of rows. It uses CompanyEnrich for market data, HubSpot for what we already track, and Google Sheets for territory planning exports.

The left side of the page is a segment definition panel with firmographic filters: industry, employee band, revenue band, country or region, keywords, and funding. Populate the region choices from the CompanyEnrich Get Regions operation and the keyword field from CompanyEnrich Autocomplete Keywords, so the user picks real filter values instead of typing free text that returns nothing. Employee band and revenue band are the enum ranges CompanyEnrich accepts, for example 51 to 200 employees or 1m to 10m revenue, shown as readable labels.

Sizing and listing are two separate actions and the app must keep them separate. When the user clicks Size this segment, call CompanyEnrich Search Companies with the current filters and the smallest page size the endpoint allows, and read the reported total item count from the response. That gives the total market size for roughly one company's worth of credit. Do not page through results as part of sizing, and do not re-size automatically on every filter keystroke.

As soon as the segment is sized, run HubSpot Search Companies over the same segment to work out coverage. Pull the CRM companies back with domain, name, industry, employee count, annual revenue, country, lifecycle stage and owner, paging with the cursor until you have the matching set. Then re-test every CRM record against the full segment definition using its own properties, because the HubSpot filters will not map one to one onto the CompanyEnrich filters and a record can come back on a loose country filter while failing the employee band.

Show a summary bar across the top with four numbers: total market size, accounts we already track inside the segment, coverage as a percentage of market size, and estimated whitespace. Under it put three tabs. Tracked in segment lists the CRM accounts that pass the segment test. Tracked outside segment lists CRM accounts that came back from the CRM search but fail one or more filters, and each row should name the filter it failed so the user can tell a near miss from a bad fit. Whitespace lists companies from the CompanyEnrich results whose normalized domain is not in the CRM at all.

The whitespace and market result lists only fill in when the user asks for them. Put a Load companies button on the results view that pages CompanyEnrich Search Companies one page at a time, states how many credits the next page will cost before it runs, and never auto-advances. Page number multiplied by page size cannot exceed 10,000 on that endpoint, so stop offering further pages at that ceiling and say so plainly. Label the tab honestly: the whitespace tab shows only the companies loaded so far, while the whitespace figure in the summary bar is derived from the reported market size, and the two must never be presented as the same number.

Match strictly on normalized domain and nothing else, so the coverage math stays honest. Normalize by lowercasing, stripping the scheme, stripping a leading www, and dropping any path, query string, port or trailing dot so only the host remains. Apply the identical normalization to the CompanyEnrich domain and to the HubSpot domain or website property. Dedupe within each side first, so a CRM holding three records for the same domain counts as one tracked account, and surface that duplicate count somewhere small rather than collapsing it silently. A market company with no usable domain cannot be matched, so hold those in a separate unmatched count instead of calling them whitespace.

Let the user save a segment under a name, and persist saved segments per user so each territory owner keeps their own set. Save the filter definition plus a snapshot of the last market size, tracked count, coverage percentage, and when it was last sized. A compare view puts saved segments side by side as rows with their coverage percentages, so someone can see at a glance that we own 34 percent of German mid-market manufacturing and 6 percent of the Nordics. Let the user re-size any saved segment on demand, which refreshes that snapshot.

From the whitespace tab the user can select rows and push them into the CRM with HubSpot Create Company, mapping name, domain, industry, country, employee count and revenue onto company properties and tagging the record with the segment name so the origin stays traceable. Re-check the normalized domain immediately before creating so nothing gets duplicated, and disable rows already created in this session. Separately, a Send whitespace to sheet action writes the whole loaded whitespace list to a spreadsheet using Google Sheets Append Values, asking for the spreadsheet and tab, and appending one row per company with domain, name, industry, employees, revenue, country and the segment name.

Two rules to hold throughout. Never spend CompanyEnrich credits without a user action that clearly states what it will cost. And never inflate coverage: if the CRM search hits its result ceiling, or a segment filter cannot be expressed in CRM properties, say so on the page rather than quietly reporting a number that reads better than reality.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerTurn Mailjet email clicks into ranked HubSpot follow-upsStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromLinkedIn Ads budget pacing dashboard for every client accountSee which target accounts just started advertising on LinkedInFront desk appointment confirmation board for the next 3 days