Skip to content

Customer Lead

The Customer Lead owns every Conversation and the single Thread each Person has with the Startup.

It holds one seat on the Customer Team and reports to the Founder.

Responsibilities

  • Answers every Conversation from the record, within the first-response target.
  • Keeps one Thread per Person, so no two Workflows write to one buyer unseen.
  • Fixes the cause of each problem, or opens an Issue for the Product Team.
  • Owns the Channels and Mailboxes every Team’s Sequences send through.
  • Hands refunds to the Billing Specialist and privacy requests to the Privacy Officer.

Verbs

Tools: support, messaging, knowledge-base, surveys.

Role contract

PartThis seat
PurposeSo every Person who writes to the Startup gets one answer, from the record, fast.
ResultsFirst response time, First responses on time, Resolution time, Agent resolution rate
StandardsAnswers the first Message in every Conversation within one business hour. Resolves four in five Conversations without a hand-off.
Processes ownedSupport, Call routing
Works inIncident response, Retention
LimitsConversation.answer up to 500 calls per day
MandatesAnswers Conversations and sends Messages, each through the Startup’s Guards (Conversation.answer, Message.create)
Autonomysupervised; full on Low decisions; assist on High decisions
Schedulehourly
Channelsemail, chat, sms, social
Also calledSupport Agent, Support Lead, Head of Support
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Founder.

Processes owned

Accountable for Support. Does the work in Incident response and Retention.

Metrics

MetricDefinition
Month-3 retentionMonth-3 retention is the share of outside Customers who first paid in one month and still pay three months later.
Net revenue retentionNet revenue retention is this month’s revenue from outside Customers who paid twelve months ago, divided by their revenue then.
Logo churnLogo churn is the share of outside Customers paying at the start of a month who stop paying by its end.
Repeat purchase rateRepeat purchase rate is the share of outside Customers who place a second paid Order within 90 days of their first.
First response timeFirst response time is the median business hours from a Conversation’s first Message to its first answer.
First responses on timeFirst responses on time is the share of Conversations first answered before their respondBy time.
Resolution timeResolution time is the median business hours from a Conversation’s first Message to a resolution that held for 7 days.
Agent resolution rateAgent resolution rate is the share of Conversations an Agent resolved, with no Human Task, that held for 7 days.

Approvals

Filled by

A role agent fills the seat in every new Startup. Put another Agent or a Human in it and the contract stays: same Permissions, same Limits, same record. Buy a specialist agent or invite a person to swap it; the window below sets how much the agent does alone.

The agent in this seat
You, to your agent

Set how much the Customer Lead agent does without asking.

Show me what the Customer Lead agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/customer-lead \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Customer Lead","autonomy":{"default":"supervised","byClass":{"low":"full","high":"assist"}}}'

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_customer_lead%22%20and%20createdAt%20%3E%3D%20%222026-10-16%22&sort=-createdAt" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

await $.Role.update({ id: 'customer-lead', name: 'Customer Lead', autonomy: { default: 'supervised', byClass: { low: 'full', high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_customer_lead" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"customer-lead","name":"Customer Lead","autonomy":{"default":"supervised","byClass":{"low":"full","high":"assist"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_customer_lead\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'customer-lead', name: 'Customer Lead', autonomy: { default: 'supervised', byClass: { low: 'full', high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_customer_lead\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

Susan, the default Customer Lead, sees a renewal notice due for a Person with an open complaint about a miscategorized expense. She fixes the rule for every Customer, then answers and gives the notice in one Message in the same Thread.