Salesprompter

Docs that map the app, CLI, and extension as one system.

Public documentation for the Salesprompter contracts, workflows, and runtime behavior. This deployment is generated directly from the docs source in the CLI repository.

Source repository

The CLI is intentionally JSON-first. These contracts are the most important stability point between the app, CLI, extension, and future providers.

ICP

{
  "name": "Deel ICP DACH",
  "description": "Mid-market and enterprise companies that hire or pay across borders.",
  "industries": ["Software", "Financial Services"],
  "companySizes": ["200-499", "500+"],
  "regions": ["Europe", "DACH"],
  "countries": ["DE", "AT", "CH"],
  "titles": ["Head of HR", "CHRO"],
  "pains": ["international hiring", "global payroll"],
  "requiredSignals": ["international expansion"],
  "excludedSignals": ["single-country only"],
  "keywords": ["global payroll", "EOR"],
  "excludedKeywords": ["staffing agency"]
}

AccountProfile

{
  "companyName": "Deel",
  "domain": "deel.com",
  "industry": "Software",
  "region": "Europe",
  "employeeCount": 2500,
  "keywords": ["deel", "software"],
  "sources": ["domain-input", "icp-overrides"]
}

Lead

{
  "companyName": "Deel",
  "domain": "deel.com",
  "industry": "Software",
  "region": "Europe",
  "employeeCount": 2500,
  "contactName": "Jane Doe",
  "title": "Head of Revenue Operations",
  "email": "jane.doe@deel.com",
  "source": "heuristic-target-account",
  "signals": ["recent funding", "growing outbound team"]
}

EnrichedLead

EnrichedLead extends Lead with:

{
  "techStack": ["Salesforce", "HubSpot"],
  "crmFit": "high",
  "outreachFit": "high",
  "buyingStage": "active-evaluation",
  "notes": ["Deel matches the Software segment."]
}

Allowed values:

  • crmFit: high, medium, low
  • outreachFit: high, medium, low
  • buyingStage: problem-aware, solution-aware, active-evaluation

ScoredLead

ScoredLead extends EnrichedLead with:

{
  "score": 90,
  "grade": "A",
  "rationale": [
    "Industry matches ICP.",
    "Region matches ICP."
  ]
}

Allowed values:

  • score: integer from 0 to 100
  • grade: A, B, C, D

Lead generation result

Lead generation returns both data and provenance:

{
  "provider": "heuristic-company+heuristic-people-search",
  "mode": "fallback",
  "account": {},
  "leads": [],
  "warnings": [
    "Using fallback providers. Leads are modeled contacts until a real company and people data provider is configured."
  ]
}

mode can be:

  • fallback
  • real

SyncResult

{
  "target": "instantly",
  "synced": 42,
  "skipped": 3,
  "dryRun": true,
  "provider": "instantly",
  "campaignId": "cmp_123"
}

Supported sync targets:

  • hubspot
  • salesforce
  • pipedrive
  • apollo
  • instantly
  • outreach

Domain candidate

{
  "companyId": 123,
  "crmCompanyId": 456,
  "companyName": "Example Co",
  "domain": "example.com",
  "source": "hunter",
  "type": "original",
  "hunterEmailCount": 14,
  "linkedinDomain": "example.com",
  "linkedinWebsite": "https://www.example.com"
}

Domain selection decision

{
  "companyKey": "company:123",
  "selected": {
    "companyId": 123,
    "crmCompanyId": 456,
    "companyName": "Example Co",
    "domain": "example.com",
    "source": "linkedin",
    "type": "original",
    "hunterEmailCount": 14,
    "linkedinDomain": "example.com",
    "linkedinWebsite": "https://www.example.com"
  },
  "reason": "linkedin-domain",
  "candidates": []
}

Allowed selection reasons:

  • linkedin-domain
  • linkedin-website
  • highest-hunter-count
  • fallback-first-non-null
  • no-domain

Domain audit report

The domain audit output has two top-level sections:

{
  "summary": {
    "decisions": 100,
    "acceptedForWriteback": 84,
    "rejectedForWriteback": 16,
    "byReason": {
      "linkedin-domain": 60
    },
    "byFlag": {
      "blacklisted-domain": 2
    }
  },
  "findings": []
}

Why these contracts matter

These objects should be treated as product contracts, not just local implementation details. Future providers, app features, or extension workflows should preserve these shapes wherever possible.