URL: /capabilities/agents/head-of-customers · Id: `page:/capabilities/agents/head-of-customers`

# Head of customers

> Answers every message a customer sends from the record, keeps one thread per person, and fixes the cause or files it for the product.

Answers every message a [customer](https://startupbuilder.dev/business/nouns/customer) sends from the record, keeps one thread per person, and fixes the cause or files it for the product.

- **File convention:** `agents/customer/customer-lead.mdx`
- **Noun:** [`noun:role`](https://startupbuilder.dev/business/nouns/role)
- **Role:** [`role:customer-lead`](https://startupbuilder.dev/agents/customer/customer-lead)

```text title="Run it · Ask"
Answer Harborview’s question about last month’s rent from the import log, and show me the reply first.
```

```ts title="Run it · SDK"
import { $ } from 'startup-builder'

const result = await $.try.Conversation.answer({ conversation: 'conversations/harborview-ledger', body: 'The October import ran before your rent posted. I re-ran it at 9:19, and the ledger now shows November.' })
```

```json title="Run it · Response"
{
  "mode": "try",
  "stored": false,
  "conversation": {
    "$id": "conversations/harborview-ledger",
    "channel": "email",
    "status": "answered",
    "answeredAt": "2026-10-28T09:20:00Z"
  }
}
```

## Responsibilities
- Answers the first message in every conversation within one business hour, from the record.
- Keeps one Thread per person, so no two Workflows write to one customer unseen.
- Fixes the cause of each problem, or opens an Issue for the product with the customer’s words.
- Owns the Channels and Mailboxes every seat sends through.

## Verbs
| Verb | Object | Event |
| --- | --- | --- |
| `Conversation.answer` | [`noun:conversation`](https://startupbuilder.dev/business/nouns/conversation) | `Conversation.answered` |
| `Conversation.assign` | [`noun:conversation`](https://startupbuilder.dev/business/nouns/conversation) | `Conversation.assigned` |
| `Conversation.escalate` | [`noun:conversation`](https://startupbuilder.dev/business/nouns/conversation) | `Conversation.escalated` |
| `Conversation.close` | [`noun:conversation`](https://startupbuilder.dev/business/nouns/conversation) | `Conversation.closed` |
| `Issue.create` | [`noun:issue`](https://startupbuilder.dev/business/nouns/issue) | `Issue.created` |
| [`Metric.query`](/code/apps/analytics-and-experiments/query) | [`noun:metric`](https://startupbuilder.dev/business/nouns/metric) | `Metric.queried` |

## Role contract
| Part | This seat |
| --- | --- |
| Purpose | Give every person who writes to the startup one answer, from the record, fast. |
| Results | First response time; Resolution time; Agent resolution rate |
| Target | First answer within 1 business hour on 95% of conversations, and 4 in 5 resolved without a hand-off, read at 50 conversations ([Planning estimate](/strategy/numbers#assumptions)). |
| Standards | Answers the first message in every conversation within one business hour. Resolves four in five conversations without a hand-off. |
| Limits | `Conversation.answer` up to 500 a day ([the hub customer lead’s limit](https://startupbuilder.dev/agents/customer/customer-lead)); every refund goes to the [Billing](/capabilities/agents/billing) seat |
| Schedule | Hourly |
| Channels | `email`, `chat`, `sms`, `social` |
| Also called | Support lead, Head of Support |
| Filled by | A role agent, from the start; you answer what it escalates. |

## Hands off to
- [Billing](/capabilities/agents/billing): A customer asks for a refund, or a payment question needs the invoice.
- [CSM](/capabilities/agents/csm): A conversation shows a customer at risk of cancelling.

## Processes owned
[`process:support`](https://startupbuilder.dev/workflows/processes/support) · [`workflow:answer-message`](https://startupbuilder.dev/workflows/processes/support/answer-message)

## Metrics
[`metric:first-response-time`](https://startupbuilder.dev/agents/customer#first-response-time) · [`metric:resolution-time`](https://startupbuilder.dev/agents/customer#resolution-time) · [`metric:agent-resolution-rate`](https://startupbuilder.dev/agents/customer#agent-resolution-rate) · [`metric:net-revenue-retention`](https://startupbuilder.dev/agents/customer#net-revenue-retention)

## Approvals
You see the plan and its price before anything runs. Sends and posts go out within the limits you set; one approval rule on a class such as `send` makes every action in it wait for you, and going over a limit always asks.

| It asks you | When | Answered by |
| --- | --- | --- |
| Answer past the day’s limit | A conversation past the seat’s daily `Conversation.answer` limit | You |
| Publish a new booking type | Every new meeting Type | You |

Each class and its default amount: the hub’s [approvals](https://startupbuilder.dev/agents/approvals) page.

## Works with
It trades hand-offs with [CSM](/capabilities/agents/csm) and [Billing](/capabilities/agents/billing).

## Example
A Harborview manager writes at 9:12 that one ledger shows last month’s rent. The agent answers at 9:20 from the import log, re-runs the sync, and opens an Issue because it is the third such case this week.