Skip to content

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

Reads: Agreement.get.

Tools: contracts, e-sign, files.

Role contract

PartThis seat
PurposeSo every Agreement says what the Startup agreed to, and nothing renews unseen.
ResultsContract cycle time
StandardsSends a first draft within one business day of the request. Flags every renewal and notice date 30 days ahead.
Processes ownedTakedowns
LimitsAgreement.create up to $50,000 per call
MandatesRenders Agreements from the Startup’s Templates without asking (Document.render)
ApprovalsAgreement.create
Autonomyassist; supervised on Low decisions
Scheduledaily
Channelsemail
Also calledContract Manager, Contracts Administrator
Filled byA 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

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 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.