This is the core Salesprompter workflow. It starts with a stable ICP artifact and ends with scored leads ready for CRM or outreach sync.
Flow summary
- Define or derive an ICP.
- Resolve or target an account.
- Generate leads or look them up from BigQuery.
- Enrich the leads.
- Score them against the ICP.
- Sync them into CRM or outreach tools.
Create an ICP
Use icp:define for ad hoc work:
node ./dist/cli.js icp:define \
--name "EU SaaS RevOps" \
--description "RevOps and sales leaders in European growth-stage software companies" \
--industries "Software,Financial Services" \
--company-sizes "50-199,200-499" \
--regions "Europe" \
--countries "DE,NL,GB" \
--titles "Head of Revenue Operations,VP Sales" \
--required-signals "recent funding,growing outbound team" \
--keywords "revenue operations,outbound,sales tooling" \
--out ./data/icp.json
Use icp:vendor when the repo already has a vendor-specific template:
node ./dist/cli.js icp:vendor --vendor deel --market dach --out ./data/deel-icp.json
Use icp:from-historical-queries:bq when you want an ICP inferred from prior warehouse query behavior:
node ./dist/cli.js icp:from-historical-queries:bq \
--vendor deel \
--market dach \
--out ./data/deel-icp-historical.json \
--report-out ./data/deel-historical-report.json
Generate targeted leads
For a targeted account:
node ./dist/cli.js leads:generate \
--icp ./data/icp.json \
--count 5 \
--domain deel.com \
--company-name Deel \
--out ./data/deel-leads.json
If you only want the normalized account first:
node ./dist/cli.js account:resolve \
--domain deel.com \
--company-name Deel \
--out ./data/deel-account.json
Look up leads from BigQuery
For production-style lead retrieval, use leads:lookup:bq:
node ./dist/cli.js leads:lookup:bq \
--icp ./data/deel-icp.json \
--limit 100 \
--execute \
--out ./data/deel-leads-raw.json \
--lead-out ./data/deel-leads.json
This command can emit:
- generated SQL with
--sql-out - raw query rows with
--out - normalized lead artifacts with
--lead-out
Enrich and score
node ./dist/cli.js leads:enrich --in ./data/deel-leads.json --out ./data/deel-enriched.json
node ./dist/cli.js leads:score --icp ./data/deel-icp.json --in ./data/deel-enriched.json --out ./data/deel-scored.json
The default implementations in this repo are heuristic. They preserve contract shape and workflow semantics while clearly labeling output as fallback when appropriate.
Sync to downstream systems
CRM sync is dry-run only in the current implementation:
node ./dist/cli.js sync:crm --target hubspot --in ./data/deel-scored.json
Instantly supports real writes but defaults to dry-run:
node ./dist/cli.js sync:outreach --target instantly --in ./data/deel-scored.json --campaign-id "$INSTANTLY_CAMPAIGN_ID"
node ./dist/cli.js sync:outreach --target instantly --in ./data/deel-scored.json --campaign-id "$INSTANTLY_CAMPAIGN_ID" --apply
Deel-specific note
When you are selling for Deel, do not use --domain deel.com if the goal is to find prospects at customer accounts. That path targets contacts at Deel itself.
Use this order instead:
icp:vendor --vendor deel --market dachleads:lookup:bq --executeleads:enrichleads:scoresync:outreach --target instantly- add
--applyonly after reviewing the dry run