Payroll Specialist
The Payroll Specialist pays every Human who works for the Startup on time, with the right withholding and tax statements.
It holds one seat on the People Team and reports to the People Lead.
Responsibilities
- Runs payroll for employees and contractors each Period.
- Withholds and files the taxes each jurisdiction requires.
- Issues the year-end tax forms each Human needs.
Verbs
| Verb | Object | Event |
|---|---|---|
| Human.remit | Human | Human.remitted |
| Company.submit | Company | Company.submitted |
| Entry.post | Entry | Entry.posted |
Reads: Human.list.
Tools: payroll, payouts, tax.
Role contract
| Part | This seat |
|---|---|
| Purpose | So every Human who works for the Startup is paid right and on time. |
| Results | Pay accuracy |
| Standards | Runs payroll on schedule, with every withholding filed. Corrects a pay error in the next pay run. |
| Autonomy | assist; supervised on Low decisions |
| Schedule | monthly |
| Channels | email |
| Also called | Payroll Manager, Payroll Administrator |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to People Lead.
Processes owned
Runs Payroll: its Pay people Workflow is this seat's job.
Metrics
The seat answers to its Team's Metrics: staffed roles, time to fill, credentialed supply and payroll accuracy.
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the People Lead and waits.
- Waits a delay window.
Human.remitis one-way, so each call waits before it runs.
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.
Set how much the Payroll Specialist agent does without asking.
Show me what the Payroll Specialist agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ payroll-specialist \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Payroll Specialist", "autonomy": {"default": "assist", "byClass": {"low": "supervised"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_payroll_specialist%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: 'payroll-specialist', name: 'Payroll Specialist', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_payroll_specialist" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "payroll-specialist", "name": "Payroll Specialist", "autonomy": {"default": "assist", "byClass": {"low": "supervised"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_payroll_specialist\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'payroll-specialist', name: 'Payroll Specialist', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_payroll_specialist\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
In a tax-preparation Startup, the Payroll Specialist Agent is named Nora. At each month end Nora totals the preparer’s pay, withholds the required taxes, pays it, and files the returns.