Skip to content

Risk Analyst

The Risk Analyst screens for fraud and abuse, holds suspect Parties, and keeps dispute rates under their Limits.

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

Responsibilities

  • Scores each new Customer for fraud before their first money move.
  • Holds suspect Parties and records the reason.
  • Answers each disputed Order with its delivery record.
  • Applies the runaway-volume brake when sends or spend spike.

Verbs

Reads: Risk.list.

Tools: enrichment, payments, audit-log.

Role contract

PartThis seat
PurposeSo fraud and abuse cost the Startup less than its Limits allow.
ResultsFraud loss rate
StandardsReviews every held Order within one business hour. Records the reason for every block.
Processes ownedUpstream review, Risk assessment
LimitsAction.cancel up to 50 calls per day
Autonomyassist; supervised on Low decisions
Schedulehourly
Also calledFraud Analyst, Trust and Safety Analyst
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Operations Lead.

Processes owned

Accountable for Upstream review and Risk assessment.

Metrics

The seat answers to its Team's Metrics: on-time delivery, first-pass acceptance, open capacity, dispute rate and task age.

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

Show me what the Risk Analyst agent did this week.

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

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

Example

In a data Startup, the Risk Analyst Agent is named Remy. A new Customer signs up from a disposable address and makes 9,000 calls in its first minute. Remy holds the Party and records the reason; the hold lifts when the Party verifies.