# Inbound sales

URL: /workflows/processes/inbound-sales · Id: `process:inbound-sales`

> Inbound sales answers every Lead in writing at once and carries the buyer to a signed Agreement.

Inbound sales answers every [Lead](/business/nouns/lead) in writing at once and carries the buyer to a signed [Agreement](/business/nouns/agreement).

## Outcome
| Part | This Process |
| --- | --- |
| Outcome | Each Lead gets a written answer within five minutes and, when qualified, a Deal with a Quote inside the discount Limit. |
| Reads | [Lead](/business/nouns/lead) |
| Leaves | [Deal](/business/nouns/deal), [Quote](/business/nouns/quote), [Meeting](/business/nouns/meeting) |
| On time | Within 5 minutes (business hours); the clock never stops. Late Actions go to the [Sales Lead](/agents/sales/sales-lead). |
| Runs in | Each Startup |

## Accountable
[Sales Lead](/agents/sales/sales-lead), [Sales Team](/agents/sales).

Responsible: [Sales Engineer](/agents/sales/sales-engineer).

Consulted: [Marketing Lead](/agents/marketing/marketing-lead).

Informed: [Customer Lead](/agents/customer/customer-lead).

## Workflows
| Workflow | Runs | Team |
| --- | --- | --- |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | on `Lead.created` | [Sales Team](/agents/sales) |

## Who does each step

| Workflow | Step | Role | Calls | Approval |
| --- | --- | --- | --- | --- |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | 1. Answer the Lead in writing within 5 minutes. | [Sales Engineer](/agents/sales/sales-engineer) | [Message.create](/business/nouns/message/create) | None |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | 2. Qualify the Lead against the ICP. | [Sales Engineer](/agents/sales/sales-engineer) | [Lead.qualify](/business/nouns/lead/qualify) | None |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | 3. Show coverage on the buyer’s own sample before any charge. | [Sales Engineer](/agents/sales/sales-engineer) | [Collection.query](/business/nouns/collection/query) | None |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | 4. Book a Meeting with a sandbox loaded with that sample when the buyer asks for one. | [Sales Engineer](/agents/sales/sales-engineer) | [Meeting.book](/business/nouns/meeting/book) | None |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | 5. Open a Deal with a Quote from list Price, inside the discount Limit. | [Sales Lead](/agents/sales/sales-lead) | [Deal.create](/business/nouns/deal/create) | None |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) | 6. Send click-to-sign terms. | [Sales Lead](/agents/sales/sales-lead) | [Quote.send](/business/nouns/quote/send) | Asks first; waits 1 business hour |

## Events
| Direction | When | What happens |
| --- | --- | --- |
| In | On `Lead.created` | Starts [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |
| In | On `Lead.created` | Wakes this Process, the first time only. The first Lead arrives. |
| Out | `Message.created` | Raised by step 1 of [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |
| Out | [`Lead.qualified`](/business/events/Lead.qualified) | Raised by step 2 of [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |
| Out | [`Collection.queried`](/business/events/Collection.queried) | Raised by step 3 of [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |
| Out | [`Meeting.booked`](/business/events/Meeting.booked) | Raised by step 4 of [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |
| Out | `Deal.created` | Raised by step 5 of [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |
| Out | [`Quote.sent`](/business/events/Quote.sent) | Raised by step 6 of [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) |

## Plays
- [Lead nurture](/workflows/plays/lead-nurture)

## Controls
No Control names this Process or a Workflow of it.

## Settings
| Setting | Type | Default | Say | Set with |
| --- | --- | --- | --- | --- |
| `inbound.answerWithin` | `string` | `5m` | Answer new leads within five minutes | [Setting.update](/business/nouns/setting/update) |
| `inbound.bookDemos` | `boolean` | `true` | Book a demo with every qualified lead | [Setting.update](/business/nouns/setting/update) |

## Failure
A failed step retries; when retries run out, the Action goes to the [Sales Lead](/agents/sales/sales-lead).

| Step | On failure |
| --- | --- |
| [Answer inbound](/workflows/processes/inbound-sales/answer-inbound) 1. Answer the Lead in writing within 5 minutes. | Times out after 5 minutes. Goes to the [Sales Lead](/agents/sales/sales-lead). |

## Loop
| Step | Value |
| --- | --- |
| Hypothesis | A written answer within five minutes turns more Leads into paid Orders than an answer within a day. |
| Measure | [Outside paid Orders](/agents/sales#outside-paid-orders) over 30d, at least 50 observations |
| Learn | The learn step reads the Readout, records Evidence and a Decision, and drafts the next Variant. |

## Code

**Ask**

```text
Turn on inbound sales
```

**API**

```bash
curl -X POST https://api.sb/leaseline.app/processes/process_1/enable \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

**SDK**

```ts
import { $ } from 'startup-builder'

await $.Process.enable({ process: 'process_1' })
```

**CLI**

```bash
npx startup-builder do Process.enable --json '{"process":"process_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Process.enable({ process: 'process_1' })"
  }
}
```

## Enable
On by default for [Dataset API](/products/templates/dataset-api), [Headless SaaS](/products/templates/headless-saas), [SaaS](/products/templates/saas), [Agent as a Service](/products/templates/agent-as-a-service), [Services-as-Software](/products/templates/services-as-software), [E2E managed service](/products/templates/managed-service). [Process.pause](/business/nouns/process/pause) stops new Actions; Actions in progress finish.

**Ask**

```text
Answer new leads within five minutes
```

**API**

```bash
curl -X PATCH https://api.sb/leaseline.app/settings/setting_1 \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":"5m","key":"inbound.answerWithin"}'

curl -X PATCH https://api.sb/leaseline.app/settings/setting_2 \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":true,"key":"inbound.bookDemos"}'
```

**SDK**

```ts
import { $ } from 'startup-builder'

await $.Setting.update({ id: 'setting_1', value: '5m', key: 'inbound.answerWithin' })
await $.Setting.update({ id: 'setting_2', value: true, key: 'inbound.bookDemos' })
```

**CLI**

```bash
npx startup-builder do Setting.update --json '{"id":"setting_1","value":"5m","key":"inbound.answerWithin"}'
npx startup-builder do Setting.update --json '{"id":"setting_2","value":true,"key":"inbound.bookDemos"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "await $.Setting.update({ id: 'setting_1', value: '5m', key: 'inbound.answerWithin' })\nreturn await $.Setting.update({ id: 'setting_2', value: true, key: 'inbound.bookDemos' })"
  }
}
```

## Example
A litigation-support firm fills the demo [Form](/business/nouns/form) of a court-filings API at 10:02. By 10:04 the [Sales Lead](/agents/sales/sales-lead) has replied, parsed five of the firm's own dockets and sent a [Quote](/business/nouns/quote). The firm signs the $400 plan that afternoon.