Use Case

Discover the signals your competitors can't see

Analyze closed-won vs closed-lost accounts to find the niche ICP signals that actually predict revenue. Turn founder intuition into a data-driven scoring model.

Why generic ICP filters fail

Your ICP doc says "Series B SaaS, 100-500 employees." So does everyone else's. There is no differentiation in the signals you score on.

The question that matters: what is actually different between your closed-won accounts and your closed-lost accounts? Not what you think. What the data shows.

How to discover your niche signals

Step 1: Export two lists

Pull from Salesforce or HubSpot:

  • closed-won.csv (50 accounts that closed)
  • closed-lost.csv (50 accounts that did not)

Step 2: Run the niche signal discovery skill

Tell Claude Code
/niche-signal-discovery closed-won.csv closed-lost.csv

The skill enriches both cohorts with firmographics, technographics, hiring data, and funding, then compares the sets to surface the attributes that predict wins vs losses:

deepline enrich --input closed-won.csv --output won-enriched.csv \
  --with 'company=crustdata_companydb_autocomplete:{"field":"company_name","query":"{{Company}}"}' \
  --with 'tech=builtwith_domain_lookup:{"domain":"{{Domain}}"}' \
  --with 'jobs=crustdata_job_listings:{"company_name":"{{Company}}"}'

deepline enrich --input closed-lost.csv --output lost-enriched.csv \
  --with 'company=crustdata_companydb_autocomplete:{"field":"company_name","query":"{{Company}}"}' \
  --with 'tech=builtwith_domain_lookup:{"domain":"{{Domain}}"}' \
  --with 'jobs=crustdata_job_listings:{"company_name":"{{Company}}"}'

Step 3: Review the signals

Claude analyzes both cohorts and surfaces the 3-5 attributes that statistically separate winners from losers.

Step 4: Deploy as a scoring model

Tell Claude Code
Take the discovered signals and apply them as a Deepline workflow that scores incoming HubSpot contacts.

The discovered signals become a scoring function:

deepline workflows apply --payload '{"name":"icp-scoring","trigger":{"type":"webhook"},"steps":[/* enrich + score */]}'
# Configure the trigger and any approval gates via the dashboard at /workflows

Sample analysis: Cybersecurity ICP

Sample analysis. Numbers are illustrative; your results will vary.

A sample / illustrative fraud prevention company ran niche signal discovery on 84 closed-won and 85 closed-lost accounts. Here's what the data showed.

Positive-fit signals (predict closed-won)

SignalLiftWhy it matters
Account creation flow on website11.1xCompany has consumer onboarding - needs identity verification
Adyen in tech stack5.1xEnterprise payment infrastructure - high-volume, sophisticated
Braze in tech stack3.7xLifecycle messaging - large user base to verify
CIP language on website3.0xBSA-mandated identity verification at onboarding
Developer sandbox in docs2.5xAPI-first buyer - faster integration
Fraud leadership hiring1.8xActive fraud budget - decision maker exists

Anti-fit signals (predict closed-lost)

SignalLiftWhy it predicts a loss
Kubernetes + Terraform + Docker (all 3)0.06xHeavy DevOps - internal build culture, won't buy
Adverse media screening0.08xAdvanced AML stack - existing IDV solution
SOC 2 Type II (prominently marketed)0.14xStrict vendor certification - slow procurement
Snowflake (prominent)0.20xData warehouse focus - internal ML/analytics culture
Azure as only cloud0.22xMicrosoft ecosystem lock-in - prefer Microsoft tools
IPO in progress0.40xProcurement frozen during lock-up period

The scoring model

Signals get weighted into a lead score:

ScoreTierAction
60-100Tier 1Immediate outreach - personalized sequence referencing their fraud/compliance signals
35-59Tier 2Compliance-led messaging - sequence on triggering event
<35Tier 3Nurture or skip - likely not a fit today

From signals to outreach

Once you have the signals, Deepline finds the companies and contacts that match.

Step 1: Find companies with positive signals

deepline enrich --input tam-companies.csv --output scored.csv \
  --with 'cip_check=exa_search:{"query":"site:{{domain}} customer identification program"}' \
  --with 'sandbox=exa_search:{"query":"site:{{domain}} sandbox OR developer.{{domain}}"}' \
  --with 'tech=builtwith_domain_lookup:{"domain":"{{domain}}"}' \
  --with 'jobs=crustdata_job_listings:{"company_name":"{{company}}"}'

Step 2: Score and filter

deepline enrich --input scored.csv --output tier1.csv \
  --with 'score=run_javascript:calculateScore(cip_check, sandbox, tech, jobs)' \
  --with '{"alias":"keep","tool":"run_javascript","payload":{"code":"return Number(row.score) >= 60 ? row : null"}}'

Step 3: Find the buyers

deepline enrich --input tier1.csv --output contacts.csv \
  --with 'contacts=crustdata_people_search:{"company_domain":"{{domain}}","title_patterns":["Head of Fraud","VP Risk","BSA Officer","CCO","Head of KYC"]}'

Step 4: Enrich emails and reach out

deepline enrich --input contacts.csv --output outreach-ready.csv \
  --with 'email=bettercontact_enrich:{"first_name":"{{first_name}}","last_name":"{{last_name}}","company_domain":"{{domain}}"}'

deepline enrich --input outreach-ready.csv --output sent.csv \
  --with 'outreach=lemlist_add_to_campaign:{"campaign_id":"tier1-fraud-signals","email":"{{email}}","first_name":"{{first_name}}","company":"{{company}}","signal":"{{top_signal}}"}'

What gets enriched

Data typeSources
FirmographicsCrustdata, People Data Labs
TechnographicsBuiltWith, TheirStack
Hiring signalsCrustdata job postings
FundingCrunchbase via Crustdata
Web researchExa semantic search
EmailsBetterContact, Fullenrich waterfalls
OutreachLemlist, Smartlead, Instantly

Cost breakdown

StageCreditsCost
Signal discovery (100 won + 100 lost)80-120~$8-12
Score TAM list (500 companies)100-150~$10-15
Find contacts at Tier 1 (50 companies)25-40~$2.50-4
Email enrichment (150 contacts)30-60~$3-6
Full pipeline235-370~$24-37

From raw CRM export to scored outreach list for under $40.

Who uses this

  • Founders who want to stop guessing which accounts to prioritize
  • RevOps leads building scoring models that predict revenue
  • AEs who want to know which accounts are worth their time

Deploy ongoing scoring

Once you have the signals, deploy them as an always-on workflow:

Tell Claude Code
Schedule the niche-signal-discovery scoring to run daily on new HubSpot contacts. For Tier 1 hits, enrich emails with BetterContact and push to my Lemlist campaign 'tier1-fraud-signals'.
deepline workflows apply --payload '{"name":"icp-scoring","trigger":{"type":"cron","schedule":"0 8 * * *"},"steps":[/* enrich + score + writeback */]}'
# Wire HubSpot as the source, Tier 1 routing (BetterContact + Lemlist push),
# and approval gates via the dashboard at /workflows.

New leads get scored, enriched, and sequenced automatically. Signals stay tied to real outcomes, not assumptions.

Common questions

Frequently Asked Questions

1How many accounts do I need?+

50 of each is enough to find patterns. 100+ gives stronger signal.

2What if my won/lost sets are imbalanced?+

Deepline normalizes for sample size. 30 won and 70 lost still works.

3Can I re-run this quarterly?+

Yes. Your ICP evolves as you close more deals. Re-running keeps signals fresh.

Find the signals hiding in your data

Export your won and lost accounts. Deepline does the rest.