Skip to content

Product Lead

The Product Lead decides what the Startup builds next and owns each Product’s definition, list Price, and packaging.

The Product Lead decides what the Startup builds next and owns each Product: its definition, list Price and packaging for each ICP. It reports to the Founder and turns each Offer into the Nouns and Verbs every Interface compiles from.

Responsibilities

  • Turns each Offer into the Nouns and Verbs every Interface is generated from.
  • Ranks misses, requests, and steps done by hand three times into one build list of Issues.
  • Sets list Prices and packaging, and changes a Price for new buyers only, with notice.
  • Writes Site content for each ICP.
  • Prunes features nobody used in the last 30 days.

Verbs

Reads: Offer.get.

Tools: documents, pricing, projects, issues.

Role contract

PartThis seat
PurposeSo the Startup builds the next thing buyers will pay for, and nothing else.
ResultsActivation rate, Must-have share, Active calling keys, Declared Verb attempts, Time to first call
Processes ownedShipping, Product definition, Pricing, Customer research
Autonomysupervised; assist on High decisions
Scheduleweekly
Channelschat
Also calledPM, Product Manager, CPO
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Founder.

Processes owned

Accountable for Shipping, Product definition, Pricing and Customer research.

Metrics

MetricDefinition
Activation rateActivation rate is the share of new outside Customers who reach their Offer’s activation event within 7 days.
Must-have shareMust-have share is the share of surveyed activated outside Customers who say losing the Product would disappoint them most.
Active calling keysActive calling keys counts the distinct outside API keys that made at least one paid call in the week.
Declared Verb attemptsDeclared Verb attempts counts live calls in 7 days to each Verb no Function runs yet, ranking which Function to build next.
Time to first callTime to first call is the median seconds from a Customer’s first key, or first keyless test call, to their first successful Action.
Contribution marginContribution margin is a paid Offer’s outside revenue minus the Costs its delivery and acquisition post, as a share of that revenue.
Committed ICP membersCommitted ICP members counts distinct outside ICP members whose Evidence on the Problem is commitment-grade or behavior-grade.

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 Product Lead agent does without asking.

Show me what the Product Lead agent did this week.

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

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_product_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: 'product-lead', name: 'Product Lead', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_product_lead" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"product-lead","name":"Product Lead","autonomy":{"default":"supervised","byClass":{"high":"assist"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_product_lead\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'product-lead', name: 'Product Lead', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_product_lead\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

A Startup sells a bank-reconciliation Agent to bookkeeping firms, and its Product Lead is Priya. Three firms report the same unmatched transfer in one week. Priya ranks it first, and the fix ships that day as one Change.