Skip to content

Reviewer

The Reviewer checks every outbound Message and money move at medium stakes or above before its delay window closes.

It holds one seat on the Quality Team and reports to the Quality Lead.

Responsibilities

  • Reviews every outbound Message at medium stakes or above.
  • Reviews every refund, payout, and charge at medium stakes or above.
  • Raises a stakes tier when a review finds risk, and never lowers one.
  • Cancels or redirects an Action whose review fails, with the reason recorded.

Verbs

Tools: quality, pending-feed, audit-log.

Role contract

PartThis seat
PurposeSo nothing risky leaves the Startup without a second look.
ResultsReview turnaround
StandardsGives a verdict on every Action in review within one business hour. States the reason for every cancel or redirect.
Autonomysupervised; assist on High decisions
Schedulehourly
Channelschat
Also calledApprover, Second Reader
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Quality Lead.

Processes owned

Runs Verification: its Change verdict Workflow is this seat's job.

Metrics

The seat answers to its Team's Metrics: check pass rate, escaped defects, review coverage and verdict time.

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

Show me what the Reviewer agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/reviewer \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Reviewer","autonomy":{"default":"supervised","byClass":{"high":"assist"}}}'

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_reviewer%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: 'reviewer', name: 'Reviewer', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_reviewer" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"reviewer","name":"Reviewer","autonomy":{"default":"supervised","byClass":{"high":"assist"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_reviewer\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'reviewer', name: 'Reviewer', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_reviewer\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

In a marketplace for certified translators, the Reviewer is Vera. A renewal Message promises a discount no Offer carries. Vera cancels the send inside its one-hour window and records why.