> ## Documentation Index
> Fetch the complete documentation index at: https://agents.concierca.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Decisions

> Process decisions and bottleneck interviews — one row per question, from the situation through the human response and the rule it becomes. Ingest-enabled.

## What it is

The record of process decisions. Each row is **one question** raised by the business — a bottleneck someone is stuck on, an assumption an employee is about to act on, a rule waiting to be approved. A row captures the full picture: who raised it and in which area (identity, topic), what is actually happening (situation), the assumption and its risk (assumption), how it is classified (reversibility, financial and risk levels), whether it matches a recurring pattern, the **human response** once someone decides, the **rule** it turns into, the documents it touches, its visibility, and where it sits in the workflow.

Agents can raise a decision and propose an answer, but the response and the resulting rule are filled in by a person — see the note under Fields.

## How it gets data

Ingest-enabled — external systems and agents push rows through the [Ingest API](/api/ingest):

```http theme={null}
POST /api/ingest/decisions
Authorization: Bearer pk_...
Content-Type: application/json
```

* One JSON record per request — one row per question.
* **Idempotent upsert** on `(tenant_id, external_id)` — re-sending the same `external_id` updates the row, never duplicates it.
* `tenant_id` / `workspace_id` come from the API key context, never from the body.

## Fields

### Identity

| Field                  | Type | Description                                 |
| ---------------------- | ---- | ------------------------------------------- |
| `decision_no`          | text | Human-readable decision number              |
| `title`                | text | Short title of the decision                 |
| `external_id`          | text | Source id — the upsert key                  |
| `department_id`        | uuid | Department the decision belongs to          |
| `role_label`           | text | Role of the person who raised it            |
| `submitted_by_user_id` | uuid | User who submitted the decision             |
| `interview_mode`       | text | How it was captured (e.g. interview, quick) |

### Topic

| Field                  | Type | Description                                        |
| ---------------------- | ---- | -------------------------------------------------- |
| `topic_type`           | text | Kind of decision (e.g. process, policy, exception) |
| `process_area`         | text | Which process area it concerns                     |
| `affected_departments` | text | Departments affected by the decision               |

### Situation

| Field                   | Type     | Description                         |
| ----------------------- | -------- | ----------------------------------- |
| `current_situation`     | text     | What is happening now               |
| `problem_or_bottleneck` | text     | The problem or bottleneck being hit |
| `waiting_for`           | text     | What the work is waiting on         |
| `blocked_work_count`    | integer  | How much work is blocked by this    |
| `waiting_since`         | datetime | Since when it has been waiting      |
| `decision_needed_by`    | datetime | Deadline for a decision             |

### Assumption

| Field                   | Type | Description                             |
| ----------------------- | ---- | --------------------------------------- |
| `employee_assumption`   | text | What the employee assumes the answer is |
| `reason_for_assumption` | text | Why they assume it                      |
| `risk_if_wrong`         | text | What happens if the assumption is wrong |
| `confidence`            | text | How confident they are                  |

### Classification

| Field                         | Type    | Description                                  |
| ----------------------------- | ------- | -------------------------------------------- |
| `reversible_decision`         | boolean | Whether the decision can be undone           |
| `could_become_permanent_rule` | boolean | Whether it might become a standing rule      |
| `proposed_decision_level`     | text    | Proposed level at which it should be decided |
| `financial_impact`            | number  | Estimated financial impact                   |
| `financial_currency`          | text    | Currency of the financial impact             |
| `risk_level`                  | text    | Assessed risk level                          |
| `impact_level`                | text    | Assessed impact level                        |
| `decision_owner_role`         | text    | Role that owns the decision                  |

### Pattern

| Field                        | Type    | Description                           |
| ---------------------------- | ------- | ------------------------------------- |
| `pattern_key`                | text    | Key grouping similar decisions        |
| `similar_case_count`         | integer | How many similar cases have been seen |
| `pattern_summary`            | text    | Summary of the recurring pattern      |
| `recommended_permanent_rule` | text    | Rule the pattern suggests adopting    |

### Response *(human-decided)*

| Field                   | Type     | Description                               |
| ----------------------- | -------- | ----------------------------------------- |
| `decision_response`     | text     | The answer given                          |
| `decision_modification` | text     | Any modification to the proposed answer   |
| `decision_reason`       | text     | Reasoning behind the answer               |
| `answered_by_role`      | text     | Role of the person who answered           |
| `answered_by_type`      | text     | Whether answered by a human or escalation |
| `answered_at`           | datetime | When it was answered                      |
| `final_decision`        | text     | The final decision text                   |
| `final_decision_level`  | text     | Level at which it was finally decided     |

### Rule *(human-decided)*

| Field                   | Type   | Description                                   |
| ----------------------- | ------ | --------------------------------------------- |
| `conditions`            | text   | Conditions under which the rule applies       |
| `escalation_conditions` | text   | When to escalate instead of applying the rule |
| `financial_limit`       | number | Financial ceiling the rule permits            |
| `risk_limit`            | text   | Risk ceiling the rule permits                 |
| `effective_from`        | date   | When the rule takes effect                    |
| `review_date`           | date   | When the rule should be reviewed              |
| `rule_version`          | text   | Version of the rule                           |

### Documents

| Field                      | Type     | Description                                           |
| -------------------------- | -------- | ----------------------------------------------------- |
| `related_sop`              | text     | Related [SOP](/api/data-model/sop)                    |
| `related_skill`            | text     | Related agent skill                                   |
| `related_strategy`         | text     | Related [Strategy](/api/data-model/strategy) document |
| `document_change_required` | text     | What document needs to change as a result             |
| `published_document`       | text     | The document published from this decision             |
| `published_version`        | text     | Version of the published document                     |
| `published_at`             | datetime | When it was published                                 |
| `published_by_role`        | text     | Role that published it                                |

### Visibility

| Field   | Type | Description                                                                                 |
| ------- | ---- | ------------------------------------------------------------------------------------------- |
| `scope` | text | Who can see the decision (the "Who sees this?" scope — see [Data Views](/guide/data-views)) |

### Workflow

| Field                   | Type     | Description                            |
| ----------------------- | -------- | -------------------------------------- |
| `status`                | text     | Where the decision is in its lifecycle |
| `priority`              | text     | Priority of the decision               |
| `notification_required` | boolean  | Whether a notification must go out     |
| `notification_reason`   | text     | Why a notification is required         |
| `closed_at`             | datetime | When the decision was closed           |

<Note>
  Agents can raise a decision and propose an answer — they fill the situation, assumption, classification, and pattern fields. The **Response**, **Rule**, and **published** fields are human-decided: an agent may recommend, but a person fills them in. `metadata` (json) is accepted on ingest but not surfaced as a default column.
</Note>

<Note>
  Like every workspace table, Decisions also carries the system columns `id`, `tenant_id`, `workspace_id` (tenant isolation), `created_at`, and `updated_at`. They are managed automatically.
</Note>

## Query it

```json theme={null}
{
  "method": "tools/call",
  "params": {
    "name": "data_query",
    "arguments": {
      "view_slug": "decisions",
      "filters": { "status": "open" },
      "select_fields": ["decision_no", "title", "process_area", "priority", "decision_needed_by"],
      "sort_by": "decision_needed_by",
      "limit": 50
    }
  }
}
```
