From gtm-skills
Segments companies from enriched Extruct tables by hypothesis fit and assigns tiers based on data richness and signal strength for email prioritization.
npx claudepluginhub extruct-ai/gtm-skills --plugin gtm-skillsThis skill uses the workspace's default tool permissions.
Take an enriched table + hypothesis set and produce a tiered, segmented list. This decides WHO gets which message and in what order.
Interprets firmographic enrichment data to normalize fields, score ICP fit, detect buying triggers like funding or hiring spikes, segment accounts, and recommend GTM/ABM outreach.
Builds targeted company lists for outbound campaigns using Extruct via decision tree: lookalikes from seeds, semantic/deep searches matching ICPs.
Designs B2B lead enrichment waterfalls, ICP scoring frameworks with firmographic/technographic/intent signals, and contact verification pipelines using Clay, Apollo, ZoomInfo.
Share bugs, ideas, or general feedback.
Take an enriched table + hypothesis set and produce a tiered, segmented list. This decides WHO gets which message and in what order.
| Input | Source | Required |
|---|---|---|
| Enriched table | Extruct table ID (after list-enrichment) | yes |
| Hypothesis set | claude-code-gtm/context/{vertical-slug}/hypothesis_set.md or context file | yes |
| Context file | claude-code-gtm/context/{company}_context.md | recommended |
This skill delegates all Extruct API calls to the extruct-api skill.
For all Extruct API operations, read and follow the instructions in skills/extruct-api/SKILL.md.
The only Extruct operation in this skill is fetching enriched table data. Everything else is pure reasoning.
Use the extruct-api skill to fetch enriched table data. Parse all rows and their enrichment column values.
Read the hypothesis set file. Parse each hypothesis into:
For each company row, evaluate which hypothesis fits best. Consider:
Assign each company ONE primary hypothesis. If multiple fit, pick the strongest signal.
Decision framework:
For each company:
1. Read all enrichment values
2. For each hypothesis:
- Does the company's vertical/industry match the "best fit"?
- Do enrichment values confirm the hypothesis pain point?
- Is there a specific data point that makes this hypothesis resonate?
3. Pick the hypothesis with the strongest evidence
4. If no hypothesis fits well, mark as "Unmatched"
Three tiers based on fit strength and data richness:
| Tier | Criteria | Action |
|---|---|---|
| Tier 1 | Strong hypothesis fit + data-rich (3+ enrichment fields populated) + clear hook signal | Personalized email via email-response-simulation review |
| Tier 2 | Medium hypothesis fit OR data-rich but no clear hook | Standard templated email via email-generation |
| Tier 3 | Weak fit OR missing data (2+ fields N/A) OR unmatched hypothesis | Hold for re-enrichment or different campaign |
Tier 1 signals (any of these):
Tier 3 signals (any of these):
Output a segmented list in two formats:
Markdown table (for review):
## Segmented List: [Campaign Name]
### Tier 1 — [N] companies (personalized outreach)
| Company | Domain | Hypothesis | Tier Rationale | Hook Signal |
|---------|--------|-----------|----------------|-------------|
| [name] | [domain] | #[N] [name] | [why this tier] | [specific hook] |
### Tier 2 — [N] companies (templated outreach)
| Company | Domain | Hypothesis | Tier Rationale |
|---------|--------|-----------|----------------|
| [name] | [domain] | #[N] [name] | [why this tier] |
### Tier 3 — [N] companies (hold/re-enrich)
| Company | Domain | Issue |
|---------|--------|-------|
| [name] | [domain] | [what's missing] |
CSV (for email-generation):
Save to claude-code-gtm/csv/input/{campaign-slug}/segmented_list.csv with columns:
company_name, domain, tier, hypothesis_number, hypothesis_name, tier_rationale, hook_signalPresent summary stats:
Ask:
email-generation?"See references/tiering-framework.md for the detailed tiering decision matrix.