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

# eddie_result_outcomes

> Outcome of each controlled flow the agent triggered, joined to the resolution and CSAT of the conversation it belonged to.

Outcome of each controlled flow the agent triggered, joined to the resolution and CSAT of the conversation it belonged to.

<Columns cols={3}>
  <Card title="One row is">
    one flow run
  </Card>

  <Card title="Delivery">
    Rewritten daily
  </Card>

  <Card title="Columns">
    41
  </Card>
</Columns>

## Where it lands

```text theme={null}
s3://<YOUR_BUCKET>/v1/datamart_claudia/eddie_result_outcomes/snapshot_date=<DATE>/
```

The partition delivered today holds the whole table. Read the latest
`snapshot_date=` partition only, and check for `_SUCCESS` before you do, as
described in [bucket layout](/data-export/bucket-layout#how-to-tell-if-a-partition-is-ready).

## Columns

<ResponseField name="result_id" type="varchar(64)">
  **Join key.** Unique id of the flow run. Matches `response_bot_result_id` on [`claudia_prompt_revision`](/data-export/catalog/claudia/claudia_prompt_revision).
</ResponseField>

<ResponseField name="project_name" type="varchar(75)">
  Project the flow belongs to.
</ResponseField>

<ResponseField name="project_id" type="varchar(255)">
  Id of the project. Prefer it over `project_name`, which can be renamed.
</ResponseField>

<ResponseField name="tenant_id" type="varchar(256)">
  Id of the tenant. `NULL` for rows with no tenant mapping.
</ResponseField>

<ResponseField name="tenant_name" type="varchar(256)">
  Name of the tenant. `NULL` for rows with no tenant mapping.
</ResponseField>

<ResponseField name="typebot_id" type="varchar(64)">
  Id of the flow that ran. Matches `active_flow_id` on [`claudia_conversation`](/data-export/catalog/claudia/claudia_conversation).
</ResponseField>

<ResponseField name="typebot_name" type="varchar(256)">
  Name of the flow, as set by whoever built it.
</ResponseField>

<ResponseField name="instance" type="varchar(50)">
  Instance the flow ran on.
</ResponseField>

<ResponseField name="result_created_at" type="timestamp">
  When the run started.
</ResponseField>

<ResponseField name="event_date" type="date">
  Date of the run. Convenient for grouping without casting `result_created_at`.
</ResponseField>

<ResponseField name="has_started" type="boolean">
  Whether the customer actually entered the flow. `false` means it was triggered but never began.
</ResponseField>

<ResponseField name="is_completed" type="boolean">
  Whether the customer reached the end of the flow.
</ResponseField>

<ResponseField name="abandoned_flag" type="boolean">
  Whether the customer started the flow and stopped partway. Pair it with `last_group_title` to find the step people give up on.
</ResponseField>

<ResponseField name="last_group_id" type="varchar(256)">
  Id of the last step the customer reached.
</ResponseField>

<ResponseField name="last_group_title" type="varchar(512)">
  Title of the last step reached. This is the column to group by when looking for where a flow loses people.
</ResponseField>

<ResponseField name="group_resolution_source" type="varchar(14)">
  How the last step was determined: `entry` from the step the customer entered, `subflow` from a nested flow, `sem_edge` when the step had no outgoing path, `nao_encontrado` when it could not be resolved.
</ResponseField>

<ResponseField name="conversation_key" type="varchar(510)">
  Conversation the run belongs to. See `key_source` for which identifier this holds before joining on it.
</ResponseField>

<ResponseField name="key_source" type="varchar(9)">
  Which identifier `conversation_key` holds: `helpdesk` for the external helpdesk id, `session` for the flow session, `result_id` when neither was available. Check this column before you join.
</ResponseField>

<ResponseField name="csat_sent_flag" type="boolean">
  Whether a satisfaction survey was sent on the conversation.
</ResponseField>

<ResponseField name="csat_responded_flag" type="boolean">
  Whether the customer answered it.
</ResponseField>

<ResponseField name="csat_value" type="integer">
  The score they gave, from 1 to 5. `NULL` when unanswered.
</ResponseField>

<ResponseField name="sla_first_response_min" type="double precision">
  Minutes to the first response, in wall-clock time.
</ResponseField>

<ResponseField name="sla_first_response_working_min" type="double precision">
  Minutes to the first response, counting only the operation's working hours. Use this one when comparing against an SLA.
</ResponseField>

<ResponseField name="sla_solve_min" type="double precision">
  Minutes from start to resolution, in wall-clock time.
</ResponseField>

<ResponseField name="sla_solve_working_min" type="double precision">
  Minutes from start to resolution, within working hours.
</ResponseField>

<ResponseField name="sla_in_service_min" type="double precision">
  Minutes the conversation was actively being handled.
</ResponseField>

<ResponseField name="sla_in_service_working_min" type="double precision">
  Minutes actively being handled, within working hours.
</ResponseField>

<ResponseField name="transferred_agent_flag" type="boolean">
  Whether the conversation was handed to a person.
</ResponseField>

<ResponseField name="is_n2_flag" type="boolean">
  Whether the conversation reached N2.
</ResponseField>

<ResponseField name="resolution_level_class" type="varchar(2)">
  `N1` or `N2`, matching the conversation's resolution level.
</ResponseField>

<ResponseField name="resolution_reason_refined" type="varchar(510)">
  Resolution reason of the conversation, in the same refined form as on [`claudia_conversation`](/data-export/catalog/claudia/claudia_conversation).
</ResponseField>

<ResponseField name="recontact_flag" type="boolean">
  Whether the customer came back with the same subject after this run. A flow with a high completion rate and a high recontact rate is answering the wrong question.
</ResponseField>

<ResponseField name="agent_type" type="varchar(5)">
  Who handled the conversation: `AI` or `HUMAN`.
</ResponseField>

<ResponseField name="ai_agent_flag" type="boolean">
  Whether an AI agent handled it. The boolean form of `agent_type`.
</ResponseField>

<ResponseField name="frustration_score_value" type="smallint">
  Frustration estimated for the conversation, from 0 to 100.
</ResponseField>

<ResponseField name="frustration_class" type="varchar(50)">
  `frustration_score_value` bucketed into a label: `CALM`, `IRRITATED`, `FRUSTRATED` or `HIGHLY_FRUSTRATED`.
</ResponseField>

<ResponseField name="error_count" type="bigint">
  Errors recorded during the run.
</ResponseField>

<ResponseField name="error_flag" type="boolean">
  Whether the run hit at least one error. `error_count > 0`.
</ResponseField>

<ResponseField name="desfecho_class" type="varchar(14)">
  How the run ended, in one column: `completou` finished, `abandono` was abandoned partway, `escalou_n2` escalated, `n1_com_decisao` ended at N1 with a decision taken, `nao_iniciou` never started, `em_aberto` was still running, `sem_conversa` had no conversation attached. Labels are in Portuguese in the data.
</ResponseField>

<ResponseField name="customer_id" type="varchar(36)">
  Identifier of the workspace the run belongs to.
</ResponseField>

<ResponseField name="snapshot_date" type="date">
  Partition column. Date of the delivery that wrote this file, in `YYYY-MM-DD`.
</ResponseField>
