# Trust and safety

URL: /workflows/processes/trust-and-safety · Id: `process:trust-and-safety`

> Trust and safety stops fraud and abuse before they reach money, Messages, or other Customers.

Trust and safety stops fraud and abuse before they reach money, [Messages](/business/nouns/message), or other [Customers](/business/nouns/customer).

## Outcome
| Part | This Process |
| --- | --- |
| Outcome | Each new Customer is scored before their first money move, and every hold records its reason and ends in release or removal. |
| Reads | [Customer](/business/nouns/customer), [Party](/business/nouns/party) |
| Leaves | [Decision](/business/nouns/decision) |
| On time | Within 1 day (business hours); the clock stops while an Action waits on `awaitingInput`. Late Actions go to the [Operations Lead](/agents/operations/operations-lead). |
| Runs in | Each Startup |

## Accountable
[Operations Lead](/agents/operations/operations-lead), [Operations Team](/agents/operations).

## Workflows
| Workflow | Runs | Team |
| --- | --- | --- |
| [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) | on `Customer.created` | [Operations Team](/agents/operations) |

## Who does each step

| Workflow | Step | Role | Calls | Approval |
| --- | --- | --- | --- | --- |
| [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) | 1. Score the new Customer against fraud and abuse signals. | [Risk Analyst](/agents/operations/risk-analyst) | [Party.screen](/business/nouns/party/screen) | None |
| [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) | 2. Hold a suspect Party and record the reason. | [Risk Analyst](/agents/operations/risk-analyst) | [Customer.update](/business/nouns/customer/update) | None |
| [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) | 3. Release the hold when the Party verifies. | [Risk Analyst](/agents/operations/risk-analyst) | [Action.cancel](/business/nouns/action/cancel) | None |

## Events
| Direction | When | What happens |
| --- | --- | --- |
| In | On `Customer.created` | Starts [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) |
| Out | [`Party.screened`](/business/events/Party.screened) | Raised by step 1 of [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) |
| Out | `Customer.updated` | Raised by step 2 of [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) |
| Out | [`Action.canceled`](/business/events/Action.canceled) | Raised by step 3 of [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) |

## Plays
No Play names this Process.

## Controls
- [Fraud screening](/systems/trust-and-governance/controls/fraud-screening)

## Settings
None.

## Failure
A failed step retries; when retries run out, the Action goes to the [Operations Lead](/agents/operations/operations-lead).

## Loop
No loop: the path is never randomized, because it serves [Fraud screening](/systems/trust-and-governance/controls/fraud-screening).

## Code

**Ask**

```text
Turn on trust and safety
```

**API**

```bash
curl -X POST https://api.sb/leaseline.app/processes/process_1/enable \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

**SDK**

```ts
import { $ } from 'startup-builder'

await $.Process.enable({ process: 'process_1' })
```

**CLI**

```bash
npx startup-builder do Process.enable --json '{"process":"process_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Process.enable({ process: 'process_1' })"
  }
}
```

## Enable
On by default for every Product Template. [Process.pause](/business/nouns/process/pause) stops new Actions; Actions in progress finish.

## Example
A new Customer of a print-on-demand shop signs up with a disposable email and a card issued abroad. [Fraud screen](/workflows/processes/trust-and-safety/fraud-screen) holds the account until identity verifies, so no [Order](/business/nouns/order) ships and no Message sends before then.