Skip to content

People Lead

The People Lead staffs every Role: it names a default Agent for each and decides when a Role needs a Human.

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

Responsibilities

  • Names a default Agent for every Role in a new Startup.
  • Decides which Roles a Human fills, where the law or the operating model requires one.
  • Swaps an Agent for a Human, or back, with no change to any Interface.
  • Keeps each Role’s instructions, Permissions, and Limits current.

Verbs

Reads: Role.list.

Tools: people, identity, training.

Role contract

PartThis seat
PurposeSo every seat is filled by the Worker its work needs.
ResultsSeat coverage
StandardsWrites the Role contract before a seat opens. Reviews every seat against its contract each month.
Processes ownedStaffing, Hiring, Payroll
Autonomysupervised; assist on High decisions
Scheduleweekly
Channelschat, email
Also calledHead of People, HR Manager
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Founder.

Processes owned

Accountable for Staffing, Hiring and Payroll.

Metrics

MetricDefinition
Fully loaded CostFully loaded Cost sums every Cost the Startup’s Actions post, plus its share of shared Cost under the stated allocation rule.

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

Show me what the People Lead agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/people-lead \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"People 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_people_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: 'people-lead', name: 'People Lead', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_people_lead" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"people-lead","name":"People Lead","autonomy":{"default":"supervised","byClass":{"high":"assist"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_people_lead\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'people-lead', name: 'People Lead', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_people_lead\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

In a tax-preparation Startup, the People Lead Agent is named Hana. Hana seats a default Agent in every Role, then records that a credentialed preparer must sign each return. The Recruiter opens the search that day.