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
| Verb | Object | Event |
|---|---|---|
| Action.evaluate | Action | Action.evaluated |
| Action.cancel | Action | Action.canceled |
| Action.redirect | Action | Action.redirected |
Tools: quality, pending-feed, audit-log.
Role contract
| Part | This seat |
|---|---|
| Purpose | So nothing risky leaves the Startup without a second look. |
| Results | Review turnaround |
| Standards | Gives a verdict on every Action in review within one business hour. States the reason for every cancel or redirect. |
| Autonomy | supervised; assist on High decisions |
| Schedule | hourly |
| Channels | chat |
| Also called | Approver, Second Reader |
| Filled by | A 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
- Asks first. An Action above the seat's Limit opens an Approval for the Quality 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 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.