Contracts Manager
The Contracts Manager drafts, negotiates within set fallbacks, and stores every Agreement the Startup signs.
It holds one seat on the Legal Team and reports to the Legal Lead.
Responsibilities
- Drafts Agreements from the Startup’s Templates and terms.
- Negotiates within the fallback positions the Legal Lead sets.
- Sends click-to-sign Agreements and files the signed copy.
- Tracks renewal and notice dates on every Agreement.
Verbs
| Verb | Object | Event |
|---|---|---|
| Document.render | Document | Document.rendered |
| Agreement.create | Agreement | Agreement.created |
| Agreement.update | Agreement | Agreement.updated |
| Approval.create | Approval | Approval.created |
| Message.create | Message | Message.created |
| Page.update | Page | Page.updated |
Reads: Agreement.get.
Tools: contracts, e-sign, files.
Role contract
| Part | This seat |
|---|---|
| Purpose | So every Agreement says what the Startup agreed to, and nothing renews unseen. |
| Results | Contract cycle time |
| Standards | Sends a first draft within one business day of the request. Flags every renewal and notice date 30 days ahead. |
| Processes owned | Takedowns |
| Limits | Agreement.create up to $50,000 per call |
| Mandates | Renders Agreements from the Startup’s Templates without asking (Document.render) |
| Approvals | Agreement.create |
| Autonomy | assist; supervised on Low decisions |
| Schedule | daily |
| Channels | email |
| Also called | Contract Manager, Contracts Administrator |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to Legal Lead.
Processes owned
Accountable for Takedowns.
Metrics
The seat answers to its Team's Metrics: floor coverage, privacy request time, contract turnaround and open findings.
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the Legal Lead and waits.
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 Contracts Manager agent does without asking.
Show me what the Contracts Manager agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ contracts-manager \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Contracts Manager", "autonomy": {"default": "assist", "byClass": {"low": "supervised"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_contracts_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: 'contracts-manager', name: 'Contracts Manager', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_contracts_manager" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "contracts-manager", "name": "Contracts Manager", "autonomy": {"default": "assist", "byClass": {"low": "supervised"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_contracts_manager\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'contracts-manager', name: 'Contracts Manager', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_contracts_manager\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
In a data Startup, the Contracts Manager Agent is named Kai. An enterprise buyer asks to cap liability at twice annual fees. The fallback allows any cap from one to three times, so Kai accepts and returns a signable draft within the hour.