# Cases
Case objects, statuses, and review states for Klarefi intake workflows
Source: https://www.klarefi.com/docs/reference/cases

## Case object

A case represents one intake packet moving from submission to review. It keeps
the applicant session, documents, extracted facts, follow-up history, review
state, and integration metadata together.

## Common fields

- `case_id`: Klarefi case identifier
- `case_type_id`: Case type used to evaluate the intake
- `workflow_id` and `workflow_version`: Workflow declaration used by the case
- `operating_mode`: `system_of_intelligence` or `system_of_action`
- `runtime_status`: `processing`, `intake_in_progress`, `gate_ready`,
  `gate_evaluating`, `ready_for_review`, or `complete`
- `workspace.facts`: Extracted facts with resolution status and cited evidence
- `workspace.documents`: Documents associated with the case
- `workspace.operational_summary`: Blockers, ownership, and the primary action
- `workspace.summary`: Fact and document counts
- `updated_at`: Projection update time

## Decision

A workflow can end with an offer or a decline. The case package's `decision` holds
it, with one of these statuses:

- `offer_sent`: the offer is with the applicant
- `accepted`: the applicant signed, or a person recorded that they accepted
- `approved`: a person sent a yes that expects no answer. It was final when it
  was sent, and it has no `valid_until`
- `declined`: a person declined the application
- `not_taken`: the applicant said no, the offer's last day passed, or a person
  recorded that it was not taken
- `withdrawn`: the offer was taken back, or the case was reopened

`name` is what the workflow calls the decision, such as "Coverage
confirmation", or `null` for a plain offer or decline. `kind` stays `offer` or
`decline` whatever it is called.

`decision` is `null` on a case without one. See
[Offers and declines](/docs/guides/offers).

The package also has `decisions`, a list. That is the sign-off record: one
entry each time a person completed the case, with who and when. `decision` is
what they decided and sent.

## Status guidance

Use `runtime_status` for workflow orchestration. Use the queue projection for
operator queues and `workspace.facts[].status` for item-level resolution state.
