# Compliance Officer

URL: /agents/legal/compliance-officer · Id: `role:compliance-officer`

> The Compliance Officer screens every Offer against the legal floor and keeps each control’s test passing.

The Compliance Officer screens every [Offer](/business/nouns/offer) against the legal floor and keeps each control’s test passing. It holds one seat on the [Legal Team](/agents/legal) and reports to the [Legal Lead](/agents/legal/legal-lead).

## Responsibilities
- Tags the Reserved Acts, regulated data, and required Credentials of every Offer.
- Withdraws any Offer that needs a Credential the Startup lacks.
- Collects control Evidence from the records daily.
- Opens an Issue for each control without current Evidence.

## Verbs
| Verb | Object | Event |
| --- | --- | --- |
| [Offer.withdraw](/business/nouns/offer/withdraw) | [Offer](/business/nouns/offer) | [`Offer.withdrawn`](/business/events/Offer.withdrawn) |
| [Credential.verify](/business/nouns/credential/verify) | [Credential](/business/nouns/credential) | [`Credential.verified`](/business/events/Credential.verified) |
| [Evidence.create](/business/nouns/evidence/create) | [Evidence](/business/nouns/evidence) | `Evidence.created` |
| [ReservedAct.create](/business/nouns/reserved-act/create) | [Reserved Act](/business/nouns/reserved-act) | `ReservedAct.created` |
| [Issue.create](/business/nouns/issue/create) | [Issue](/business/nouns/issue) | `Issue.created` |
| [Approval.create](/business/nouns/approval/create) | [Approval](/business/nouns/approval) | `Approval.created` |
| [Collection.query](/business/nouns/collection/query) | [Collection](/business/nouns/collection) | [`Collection.queried`](/business/events/Collection.queried) |
| [Credential.update](/business/nouns/credential/update) | [Credential](/business/nouns/credential) | `Credential.updated` |
| [Decision.create](/business/nouns/decision/create) | [Decision](/business/nouns/decision) | `Decision.created` |
| [Document.render](/business/nouns/document/render) | [Document](/business/nouns/document) | [`Document.rendered`](/business/events/Document.rendered) |
| [Message.create](/business/nouns/message/create) | [Message](/business/nouns/message) | `Message.created` |
| [Offer.update](/business/nouns/offer/update) | [Offer](/business/nouns/offer) | `Offer.updated` |
| [Party.screen](/business/nouns/party/screen) | [Party](/business/nouns/party) | [`Party.screened`](/business/events/Party.screened) |
| [Task.assign](/business/nouns/task/assign) | [Task](/business/nouns/task) | [`Task.assigned`](/business/events/Task.assigned) |

Reads: [Credential.list](/business/nouns/credential/list).

Tools: `compliance`, `audit-log`, `credentialing`.

## Role contract
| Part | This seat |
| --- | --- |
| Purpose | So no Offer goes live below the legal floor. |
| Results | [Intakes answered on time](/agents/legal#intakes-on-time) |
| Processes owned | [Whistleblower reports](/workflows/processes/whistleblower-reports), [License renewals](/workflows/processes/license-renewals) |
| Autonomy | `assist`; `supervised` on Low decisions |
| Schedule | `weekly` |
| Channels | `email` |
| Also called | Compliance Manager |
| Filled by | A role agent, from the start; a person answers its Approvals. |

## Hands off to
- [Quality Lead](/agents/quality/quality-lead), [Quality Team](/agents/quality)

Escalates to [Legal Lead](/agents/legal/legal-lead).

## Processes owned
Accountable for [Whistleblower reports](/workflows/processes/whistleblower-reports).

## Metrics
| [Metric](/business/nouns/metric) | Definition |
| --- | --- |
| Intakes answered on time | Intakes answered on time is the share of intake [Threads](/business/nouns/thread) that get a first answer before their deadline. |

## Approvals
- **Asks first.** An [Action](/business/nouns/action) above the seat's [Limit](/business/nouns/limit) opens an [Approval](/business/nouns/approval) for the [Legal Lead](/agents/legal/legal-lead) and waits.

## Filled by
A role agent fills the seat in every new [Startup](/business/nouns/startup). Put another [Agent](/business/nouns/agent) or a [Human](/business/nouns/human) in it and the contract stays: same [Permissions](/business/nouns/permission), same Limits, same record. [Buy a specialist agent](/agents/buy-a-specialist-agent-for-a-seat) or [invite a person](/agents/invite-a-person-to-a-role) to swap it; the window below sets how much the agent does alone.

An agent already fills this seat. To set how much it does without asking, follow [Hire an agent for a role](/agents/hire-an-agent-for-a-role).

## Example
In a patent-drafting [Startup](/business/nouns/startup), the Compliance Officer [Agent](/business/nouns/agent) is named Corin. A new Offer adds trademark filings, which need a [Credential](/business/nouns/credential) no current [Supplier](/business/nouns/supplier) holds. Corin keeps the Offer unpublished until one does.