# Work queue

URL: /agents/work-queue · Id: `system:work-queue`

> Work queue hands every Task, Issue and Approval to the right Worker, Human or Agent, with leases, priority, due times and proof.

Work queue hands every [Task](/business/nouns/task), [Issue](/business/nouns/issue) and [Approval](/business/nouns/approval) to the right [Worker](/business/nouns/worker), [Human](/business/nouns/human) or [Agent](/business/nouns/agent), with leases, priority, due times and proof. Humans and Agents pull from the same queue, each under their own [Mandate](/business/nouns/mandate) and [Limits](/business/nouns/limit).

## Summary
| Part | This System |
| --- | --- |
| Group | Moves to Agents |
| Status | Live |
| Shelf | Front: offered from a Startup’s first days |

You can ask:

- “What needs my approval?”
- “Approve the refunds waiting on me”
- “Give this task to the billing agent”

## What you get
| Part | This System |
| --- | --- |
| Starts | On for every Startup at creation, with nothing to install. |
| Built from | [Workflows](/code/platform/workflows), [Background actions](/code/platform/queues), [Database](/code/platform/capabilities/database), [Event streams](/code/platform/event-streams) |

## Nouns it owns
| Noun | Definition |
| --- | --- |
| [Task](/business/nouns/task) | A Task is an Action waiting on a Worker, with an assignee, a due time, and a place in that Worker’s inbox. |
| [Approval](/business/nouns/approval) | An Approval is a Task to allow or refuse one pending Action that exceeds a Limit or a Mandate. |
| [Mandate](/business/nouns/mandate) | A Mandate is a standing authorization for an Agent to act for a Party, within Permissions and Limits, until it expires. |
| [Limit](/business/nouns/limit) | A Limit is a bound on a Permission, Entitlement, or Mandate, checked before every call; exceeding it creates an Approval. |

## Verbs
| Verb | Object | Approval | Event |
| --- | --- | --- | --- |
| [Task.assign](/business/nouns/task/assign) | [Task](/business/nouns/task) | None | [`Task.assigned`](/business/events/Task.assigned) |
| [Task.complete](/business/nouns/task/complete) | [Task](/business/nouns/task) | None | [`Task.completed`](/business/events/Task.completed) |
| [Task.escalate](/business/nouns/task/escalate) | [Task](/business/nouns/task) | None | [`Task.escalated`](/business/events/Task.escalated) |
| [Task.delegate](/business/nouns/task/delegate) | [Task](/business/nouns/task) | None | [`Task.delegated`](/business/events/Task.delegated) |
| [Approval.approve](/business/nouns/approval/approve) | [Approval](/business/nouns/approval) | None | [`Approval.approved`](/business/events/Approval.approved) |
| [Approval.refuse](/business/nouns/approval/refuse) | [Approval](/business/nouns/approval) | None | [`Approval.refused`](/business/events/Approval.refused) |
| [Mandate.authorize](/business/nouns/mandate/authorize) | [Mandate](/business/nouns/mandate) | Asks first; waits 1 business hour | [`Mandate.authorized`](/business/events/Mandate.authorized) |
| [Mandate.revoke](/business/nouns/mandate/revoke) | [Mandate](/business/nouns/mandate) | None | [`Mandate.revoked`](/business/events/Mandate.revoked) |

## Events
| Direction | Event | How |
| --- | --- | --- |
| Emits | [`Task.assigned`](/business/events/Task.assigned) | By [Task.assign](/business/nouns/task/assign) |
| Emits | [`Task.completed`](/business/events/Task.completed) | By [Task.complete](/business/nouns/task/complete) |
| Emits | [`Task.escalated`](/business/events/Task.escalated) | By [Task.escalate](/business/nouns/task/escalate) |
| Emits | [`Task.delegated`](/business/events/Task.delegated) | By [Task.delegate](/business/nouns/task/delegate) |
| Emits | [`Approval.approved`](/business/events/Approval.approved) | By [Approval.approve](/business/nouns/approval/approve) |
| Emits | [`Approval.refused`](/business/events/Approval.refused) | By [Approval.refuse](/business/nouns/approval/refuse) |
| Emits | [`Mandate.authorized`](/business/events/Mandate.authorized) | By [Mandate.authorize](/business/nouns/mandate/authorize) |
| Emits | [`Mandate.revoked`](/business/events/Mandate.revoked) | By [Mandate.revoke](/business/nouns/mandate/revoke) |
| Emits | [`Approval.expired`](/business/nouns/approval#approvalexpired) | Raised when a date passes |
| Emits | [`Mandate.expired`](/business/nouns/mandate#mandateexpired) | Raised when a date passes |

## States
The lifecycle of an [Approval](/business/nouns/approval):

| State | Meaning | Moves to |
| --- | --- | --- |
| `pending` (first) | An Action waits on the answer. | `approved` by [Approval.approve](/business/nouns/approval/approve); `refused` by [Approval.refuse](/business/nouns/approval/refuse); `expired` on [`Approval.expired`](/business/nouns/approval#approvalexpired) when nobody answered by its `deadline` |
| `approved` | The Action it held runs. | None: it ends here. |
| `refused` | The Action it held ends `refused`, with the reason given. | None: it ends here. |
| `expired` | Nobody answered by the deadline, so the Action it held ends `canceled`. | None: it ends here. |

Its other Nouns with a lifecycle: [Mandate](/business/nouns/mandate).

## Who operates it
| Part | This System |
| --- | --- |
| Accountable | [Operations Lead](/agents/operations/operations-lead) |
| Team | [Operations Team](/agents/operations) |
| Seat | A role agent holds it until a Human is seated. |
| Autonomy | `supervised` |
| Also calls its Verbs | [Founder](/agents/founding/founder), [Product Lead](/agents/product/product-lead), [Security Engineer](/agents/engineering/security-engineer), [Delivery Manager](/agents/operations/delivery-manager), [Supply Manager](/agents/operations/supply-manager), [Finance Lead](/agents/finance/finance-lead), [Treasurer](/agents/finance/treasurer), [Legal Lead](/agents/legal/legal-lead), [Compliance Officer](/agents/legal/compliance-officer), [People Lead](/agents/people/people-lead), [Recruiter](/agents/people/recruiter) |

## Approvals and limits
| Verb | Rule | Detail |
| --- | --- | --- |
| [Mandate.authorize](/business/nouns/mandate/authorize) | A person says yes first | Waits 1 business hour |

## Processes that use it
| Process | How it uses it |
| --- | --- |
| [Product definition](/workflows/processes/product-definition) | A step calls [Task.assign](/business/nouns/task/assign) |
| [Delivery](/workflows/processes/delivery) | A step calls [Task.assign](/business/nouns/task/assign) |
| [Supply](/workflows/processes/supply) | A step calls [Task.assign](/business/nouns/task/assign) |
| [Role review](/workflows/processes/role-review) | A step calls [Task.assign](/business/nouns/task/assign) |
| [Billing](/workflows/processes/billing) | A Workflow writes [Approval](/business/nouns/approval) |
| [Licensed review](/workflows/processes/licensed-review) | A step calls [Task.assign](/business/nouns/task/assign) |
| [Contracting](/workflows/processes/contracting) | A Workflow writes [Approval](/business/nouns/approval) |
| [Hiring](/workflows/processes/hiring) | A step calls [Mandate.authorize](/business/nouns/mandate/authorize) |
| [Vendor onboarding](/workflows/processes/vendor-onboarding) | A Workflow writes [Task](/business/nouns/task) |
| [Legal notices](/workflows/processes/legal-notices) | A step calls [Task.delegate](/business/nouns/task/delegate) |
| [Press inquiries](/workflows/processes/press-inquiries) | A Workflow writes [Approval](/business/nouns/approval) |
| [Procure](/workflows/processes/procure) | A step calls [Mandate.authorize](/business/nouns/mandate/authorize) |
| [Expense approval](/workflows/processes/expense-approval) | A Workflow writes [Approval](/business/nouns/approval) |
| [Budget](/workflows/processes/budget) | A Workflow writes [Approval](/business/nouns/approval) |
| [Mail handling](/workflows/processes/mail-handling) | A step calls [Task.assign](/business/nouns/task/assign) |
| [Staffing](/workflows/processes/staffing) | A Workflow writes [Task](/business/nouns/task) |

## Rail underneath
None.

## Views and dashboards
| View | Shows | Metrics |
| --- | --- | --- |
| The [Operations Lead](/agents/operations/operations-lead)’s view | The Metrics its accountable Role answers for. | [Liquidity](/agents/operations#liquidity) |

## Access
What each Access level may call here.

| Access level | May call |
| --- | --- |
| `owner` | Every Verb (28) |
| `admin` | All but 1 of 28: `Mandate.authorize` |
| `member` | All but 8 of 28: `Limit.create`, `Limit.update`, `Limit.delete`, `Mandate.create`, `Mandate.update`, `Mandate.delete`, … |
| `viewer` | Read only (8 of 28) |

## Import and export
None.

## Fees and pricing
None.

## Availability and limits
| Part | This System |
| --- | --- |
| Status | Live |

## Compliance notes
Controls it carries:

- [Log completeness](/systems/trust-and-governance/controls/log-completeness)
- [Append-only records](/systems/trust-and-governance/controls/append-only-records)
- [Point-in-time recovery](/systems/trust-and-governance/controls/point-in-time-recovery)
- [Processing definitions](/systems/trust-and-governance/controls/processing-definitions)
- [Action completion](/systems/trust-and-governance/controls/action-completion)

## Related Systems
- [Dispatch](/systems/dispatch): also holds [Task](/business/nouns/task)

## Example
A [Services-as-Software](/products/templates/services-as-software) contract review service receives 30 contracts in one morning. Agents claim and finish 27; three need a licensed attorney, so Work queue leases them to the two on duty, due in two days. A lease that lapses returns its Task to the queue.