SOM Sizer — Segmented Obtainable Market

Who's still gettable — after you remove your competitor's installed base and your own existing customers.

ICP / TAM · Competitive displacement

SAM minus competitor installs, plus intent-active overlay = your real SOM

1,150
SOM after subtraction
312
Intent-active (60d)
StageCountFilter
SAM3,840search_companies
− Competitor installs−2,690company_technographic
= SOM1,150Competitively uncovered
Intent-active 60d312intent_category
The action layer
Top 50 Intent-Active accounts go to SDRs Monday. The other 262 land in nurture. The 690 latent SOM accounts feed paid programs.

Overview

Obtainable-market sizer: the slice of SAM still actually gettable after subtracting your competitor's installed base — combining HG technographic install detection with intent-active accounts.

Use cases

  • VP Sales-Ops gets a real SOM in 5 minutes

    Today SOM lives in a Salesforce report no one trusts. With this workflow it's: SAM via `search_companies`, minus competitor installs via `company_technographic`, plus intent overlay via `intent_category`. The number is sized, the subtraction is auditable, and the top 50 has names attached for SDR action.

  • Displacement campaigns that actually have targets

    Marketing's quarterly competitive-displacement campaign goes from 'let's target snowflake displacements' to 'here are the 312 intent-active accounts running Snowflake whose intent on cloud-cost rose in the last 60 days'. The campaign converts because the list is real.

View workflow prompt
# SOM Sizer — Segmented Obtainable Market

## Parameters

- `{{industry_filter}}` *(required)* — Industry filter as a NAICS list or descriptor. Example: `software publishers (NAICS 5112)`
- `{{geo_filter}}` *(required)* — Geographic filter. Example: `US`
- `{{revenue_band_min}}` *(required)* — Minimum annual revenue, in USD. Example: `50000000`
- `{{revenue_band_max}}` *(required)* — Maximum annual revenue, in USD. Example: `500000000`
- `{{competitor_domains}}` *(required)* — JSON array of competitor company domains to subtract from SOM. Example: `["snowflake.com","databricks.com"]`

## Purpose
Distinct from SAM. This workflow takes the SAM slice and subtracts {{competitor_domains}} installed base, then overlays intent-active accounts so the SOM is sized as *gettable today*. Filters: {{industry_filter}} × {{geo_filter}} × revenue {{revenue_band_min}}-{{revenue_band_max}}.

## Process
1. **Anchor SAM** — `search_companies` with the three filters. Report SAM count first.
2. **Subtract competitor installs** — `company_technographic` checked across the SAM for installs of products owned by each domain in {{competitor_domains}}. Subtract from SAM. The remainder is the *competitively-uncovered* SOM.
3. **Layer intent activity** — `intent_category` and `company_intent` for categories adjacent to the competitor base. Carve uncovered SOM into "Intent-Active" (signal within 60 days) and "Latent" (no recent intent).
4. **Top-of-funnel cut** — name the top 50 Intent-Active accounts ordered by recent intent score. These are the displacement-ready prospects.
5. **Cohort fit** — `company_firmographic` spot-check on 5 randomly-selected Intent-Active names to validate they fit the cohort.

## Output Format
Markdown with:
- `# SOM — {{industry_filter}} × {{geo_filter}}`
- `## Funnel` (table: SAM → minus competitor installs → SOM → Intent-Active)
- `## Top 50 Displacement-Ready` (table: domain | competitor installed | intent score | recency)
- `## Cohort Spot-Check` (5 sampled accounts via `company_firmographic`)
- `## Read` (one paragraph: is SOM densest in {{industry_filter}} or the geo-tail?)

## Quality Checklist
- Competitor subtraction cites `company_technographic` per install
- Intent-Active cut cites `intent_category` recency
- Top 50 is ordered by signal strength, not alphabetical
- Cohort spot-check confirms filters fired correctly