# Process

URL: /business/nouns/process · Id: `noun:process`

> A Process is a named, repeatable piece of business work, owned by a Team and run by one or more Workflows.

A Process is a named, repeatable piece of business work, owned by a [Team](/business/nouns/team) and run by one or more [Workflows](/business/nouns/workflow). Each run ends in [Evidence](/business/nouns/evidence) and a [Decision](/business/nouns/decision): ship, kill, or iterate.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | Yes | The name in sentence case, such as `Month-end close`. |
| `status` | `string` | No | Whether the Process starts new Actions in this Startup: `off`, `on`, or `paused`. |
| `says` | `text[]` | No | What a founder says to run, turn on, or ask about it. |
| `settings` | `json` | No | The Settings it reads: key, type, default, the founder’s sentence and the Verb that sets each. |
| `defaultOn` | `string[]` | No | The Product Templates it is on in by default. |
| `wakes` | `json` | No | The Events that wake it in the Startup’s own records. |
| `inputs` | `string[]` | No | The Nouns an Action reads at its start. |
| `outputs` | `string[]` | No | The Nouns a finished Action leaves behind, rolled up from its Workflows. |
| `outcome` | `text` | No | What a finished Action leaves true, in one sentence. |
| `serviceLevel` | `json` | No | Its target duration, clock, escalation Role, and the waits that stop the clock. |
| `scope` | `string` | No | Where it runs: `startup`, `studio`, or `any`. |

## Object
```json
{
  "$id": "https://api.sb/ledgerlark.com/processes/process_1",
  "$type": "Process",
  "name": "LedgerLark",
  "status": "off",
  "says": [
    "Retry failed payments"
  ],
  "settings": {},
  "defaultOn": [
    "saas"
  ],
  "wakes": {},
  "inputs": [
    "invoice"
  ],
  "outputs": [
    "transaction"
  ],
  "outcome": "Each Invoice ends paid, refunded, or written off.",
  "serviceLevel": {},
  "scope": "startup"
}
```

## Relationships
- <a id="rel-carries-out"></a>A Process **carries out** one [Play](/business/nouns/play): a Process runs the steps of a [Play](/business/nouns/play) each time the [Startup](/business/nouns/startup) runs it. `carriesOut`, inverse [`carriedOutBy`](/business/nouns/play#rel-carried-out-by).
- <a id="rel-uses"></a>A Process **uses** many [Workflows](/business/nouns/workflow): a Process does its work through [Workflows](/business/nouns/workflow), each the durable, executable part of the Process. `uses`, inverse [`usedIn`](/business/nouns/workflow#rel-used-in).

## Lifecycle

| State | Meaning | Moves to |
| --- | --- | --- |
| `off` (first) | The Process starts no Actions; its Product Template does not turn it on. | `on` by [Process.enable](/business/nouns/process/enable) |
| `on` | Its Workflows start on their Triggers. | `paused` by [Process.pause](/business/nouns/process/pause) |
| `paused` | It starts no new Actions; Actions already in progress finish. | `on` by [Process.enable](/business/nouns/process/enable) |

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [Process.enable](/business/nouns/process/enable) | Enable turns a Process on for a Startup, so its Workflows start on their Triggers. | [Founder](/agents/founding/founder) | [`Process.enabled`](/business/events/Process.enabled) | Two-way: `try`, `send`, `do` |
| [Process.pause](/business/nouns/process/pause) | Pause stops a Process from starting new Actions; Actions already in progress finish. | [Founder](/agents/founding/founder) | [`Process.paused`](/business/events/Process.paused) | Two-way: `try`, `send`, `do` |
| <a id="create"></a>[Process.create](/business/nouns/process/create) | Creates a Process. Inherited from [Noun](/business/nouns/noun). | None. | `Process.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Process.get](/business/nouns/process/get) | Returns one Process by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Process.list](/business/nouns/process/list) | Returns Processes, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Process.update](/business/nouns/process/update) | Changes the given properties of a Process. Inherited from [Noun](/business/nouns/noun). | None. | `Process.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Process.delete](/business/nouns/process/delete) | Deletes a Process; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Process.deleted` | One-way: `send`, `do` |

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Process.create` | Yes | Yes | Yes | No |
| `Process.get` | Yes | Yes | Yes | Yes |
| `Process.list` | Yes | Yes | Yes | Yes |
| `Process.update` | Yes | Yes | Yes | No |
| `Process.delete` | Yes | Yes | Yes | No |
| `Process.enable` | Yes | Yes | Yes | No |
| `Process.pause` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Enable the latest process.
```

**API**

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

```json
{
  "api": "https://api.sb/tutorloop.com",
  "process": {
    "$id": "https://api.sb/tutorloop.com/processes/process_1",
    "$type": "Process",
    "name": "TutorLoop"
  },
  "action": {
    "$id": "https://api.sb/tutorloop.com/actions/action_1",
    "operation": "Process.enable",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/tutorloop.com/actions/action_1"
  }
}
```

**SDK**

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

const process = 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' })"
  }
}
```

## Example
Billing is a Process owned by the [Finance Team](/agents/finance). The [Dunning](/workflows/processes/billing/dunning) and monthly close Workflows run it, and its loop measures revenue recovered within 30 days of a failed charge.