# Workforce

URL: /systems/workforce · Id: `system:workforce`

> Workforce keeps every Worker, Human or Agent: the Roles they fill, their Teams, Skills, onboarding, assessments and offboarding.

Workforce keeps every [Worker](/business/nouns/worker), [Human](/business/nouns/human) or [Agent](/business/nouns/agent): the [Roles](/business/nouns/role) they fill, their [Teams](/business/nouns/team) and [Skills](/business/nouns/skill), onboarding, assessments and offboarding. One Agent can hold many seats, each with its own [Mandate](/business/nouns/mandate).

## Summary
| Part | This System |
| --- | --- |
| Group | People |
| Status | Live |
| Shelf | Wakes: offered once its Event fires |

You can ask:

- “Who fills each role?”
- “Add Maya to the support team”
- “Offboard this contractor today”
- “What skills is the team missing?”

## What you get
| Part | This System |
| --- | --- |
| Starts | On for every Startup at creation, with nothing to install. |
| Wakes | On [`Human.invited`](/business/events/Human.invited) when the Startup invites its first person. |
| Built from | [Identity](/code/platform/identity), [Database](/code/platform/capabilities/database), [Event streams](/code/platform/event-streams), [Agents](/code/platform/capabilities/agents) |

## Nouns it owns
| Noun | Definition |
| --- | --- |
| [Worker](/business/nouns/worker) | A Worker is a Human or an Agent that fills a Role and acts on Tasks. |
| [Human](/business/nouns/human) | A Human is a Worker who is a person, acting on Tasks through Apps, Mailboxes, and Channels. |
| [Agent](/business/nouns/agent) | An Agent is a digital worker with instructions, tools, and a model that performs Verbs for a Startup. |
| [Role](/business/nouns/role) | A Role is a seat that owns a set of work and holds the Permissions to do it, filled by a Human or an Agent. |
| [Team](/business/nouns/team) | A Team is a named group of Roles under one owner; every Startup starts with eleven default Teams. |
| [Skill](/business/nouns/skill) | A Skill is a capacity a Worker has at a level, such as negotiation or programming, that Roles require. |

## Verbs
| Verb | Object | Approval | Event |
| --- | --- | --- | --- |
| [Role.staff](/business/nouns/role/staff) | [Role](/business/nouns/role) | None | [`Role.staffed`](/business/events/Role.staffed) |
| [Agent.mint](/business/nouns/agent/mint) | [Agent](/business/nouns/agent) | None | [`Agent.minted`](/business/events/Agent.minted) |
| [Human.invite](/business/nouns/human/invite) | [Human](/business/nouns/human) | None | [`Human.invited`](/business/events/Human.invited) |

## Events
| Direction | Event | How |
| --- | --- | --- |
| Emits | [`Role.staffed`](/business/events/Role.staffed) | By [Role.staff](/business/nouns/role/staff) |
| Emits | [`Agent.minted`](/business/events/Agent.minted) | By [Agent.mint](/business/nouns/agent/mint) |
| Emits | [`Human.invited`](/business/events/Human.invited) | By [Human.invite](/business/nouns/human/invite) |
| Consumes | [`Agent.retired`](/business/events/Agent.retired) | Moves [Role](/business/nouns/role) to `vacant` |
| Consumes | `Agent.deleted` | Moves [Role](/business/nouns/role) to `vacant` |
| Consumes | `Human.deleted` | Moves [Role](/business/nouns/role) to `vacant` |
| Consumes | [`Process.enabled`](/business/events/Process.enabled) | Moves [Team](/business/nouns/team) to `awake` |
| Consumes | [`Startup.built`](/business/events/Startup.built) | Moves [Team](/business/nouns/team) to `awake` |
| Consumes | [`Process.paused`](/business/events/Process.paused) | Moves [Team](/business/nouns/team) to `asleep` |

## States
The lifecycle of an [Agent](/business/nouns/agent):

| State | Meaning | Moves to |
| --- | --- | --- |
| `standby` (first) | It fills no Role, so it performs no Verbs. | `seated` on [`Role.staffed`](/business/events/Role.staffed) when the Worker who fills the Role is this Agent |
| `seated` | It fills at least one Role and performs that Role’s Verbs under its Permissions. | `standby` on [`Role.staffed`](/business/events/Role.staffed) when another Worker fills the last Role this Agent held; `paused` by [Agent.pause](/business/nouns/agent/pause); `retired` by [Agent.retire](/business/nouns/agent/retire) |
| `paused` | It keeps its seats, Memory, Mandates and Limits, and starts no new Action until it resumes. | `seated` by [Agent.resume](/business/nouns/agent/resume); `retired` by [Agent.retire](/business/nouns/agent/retire) |
| `retired` | It holds no seat in the Startup again; its Actions, Memory and Mailbox history stay on the record. | None: it ends here. |

Its other Nouns with a lifecycle: [Role](/business/nouns/role), [Team](/business/nouns/team).

## Who operates it
| Part | This System |
| --- | --- |
| Accountable | [People Lead](/agents/people/people-lead) |
| Team | [People Team](/agents/people) |
| Seat | A role agent holds it until a Human is seated. |
| Autonomy | `supervised` |
| Also calls its Verbs | [Recruiter](/agents/people/recruiter) |

## Approvals and limits
| Verb | Rule | Detail |
| --- | --- | --- |
| [Human.invite](/business/nouns/human/invite) | Mandate `trial` for the [Recruiter](/agents/people/recruiter) | Invites candidates to paid work trials and verifies their Credentials. |

## Processes that use it
| Process | How it uses it |
| --- | --- |
| [Staffing](/workflows/processes/staffing) | A step calls [Agent.mint](/business/nouns/agent/mint) |
| [Hiring](/workflows/processes/hiring) | A Workflow writes [Human](/business/nouns/human) |

## Rail underneath
None.

## Views and dashboards
| View | Shows | Metrics |
| --- | --- | --- |
| The [People Lead](/agents/people/people-lead)’s view | The Metrics its accountable Role answers for. | [Seat coverage](/agents/people#seat-coverage) |

## Access
What each Access level may call here.

| Access level | May call |
| --- | --- |
| `owner` | Every Verb (33) |
| `admin` | Every Verb (33) |
| `member` | All but 4 of 33: `Role.create`, `Role.update`, `Role.delete`, `Role.staff` |
| `viewer` | Read only (12 of 33) |

## Import and export
None.

## Fees and pricing
None.

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

## Compliance notes
Controls it carries:

- [Conduct](/systems/trust-and-governance/controls/conduct)
- [Role structure](/systems/trust-and-governance/controls/role-structure)
- [Log completeness](/systems/trust-and-governance/controls/log-completeness)
- [Authenticated Actions](/systems/trust-and-governance/controls/authenticated-actions)
- [Task-bound access](/systems/trust-and-governance/controls/task-bound-access)
- [Unseated access](/systems/trust-and-governance/controls/unseated-access)
- [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)

## Related Systems
- [Hiring](/systems/hiring)
- [Pay runs](/systems/payroll)
- [Work queue](/agents/work-queue)

## Example
A [Single human](/agents/operating-models/single-human) [SaaS](/products/templates/saas) starts with its founder and one Agent in each default Role. When the founder hires a part-time support lead, Workforce seats her in the [Customer Lead](/agents/customer/customer-lead) Role beside the Agent, with a narrower Mandate for refunds.