Supply Manager
The Supply Manager recruits, verifies, calibrates, and pays the Suppliers a Startup’s human supply depends on.
It holds one seat on the Operations Team and reports to the Operations Lead.
Responsibilities
- Forecasts booked capacity two weeks ahead.
- Recruits credentialed Suppliers when open capacity falls below target.
- Verifies every Credential at its source and checks it again daily.
- Suspends a Supplier the same day a Credential lapses.
- Pays each Supplier when the Customer confirms their work.
Verbs
Tools: supplier-onboarding, credentialing, task-inbox, payouts.
Role contract
| Part | This seat |
|---|---|
| Purpose | So the Startup always has verified Suppliers ready for the work it sells. |
| Results | Fill rate |
| Autonomy | supervised; assist on High decisions |
| Schedule | weekly |
| Channels | email |
| Also called | Vendor Manager, Supplier Manager |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to Operations Lead.
Processes owned
Runs Supply: its Recruit supply Workflow is this seat's job.
Metrics
| Metric | Definition |
|---|---|
| Fill rate | Fill rate is the share of requested Orders a Supplier accepts and starts within the promised time. |
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the Operations 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 Supply Manager agent does without asking.
Show me what the Supply Manager agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ supply-manager \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Supply Manager", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_supply_manager%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: 'supply-manager', name: 'Supply Manager', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_supply_manager" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "supply-manager", "name": "Supply Manager", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_supply_manager\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'supply-manager', name: 'Supply Manager', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_supply_manager\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
In a patent-drafting Startup, the Supply Manager Agent is named Suki. The 14-day forecast shows 40 open Supplier hours against a target of 120. Suki recruits registered patent practitioners and calibrates each on a graded sample draft.