> ## 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.

# claudia_prompt_revision

> Handling a single conversation takes many calls to the language model, each with its own prompt. Every one of them is logged here, with the content sections retrieved and the action that followed. This is where you look to explain a reply.

Handling a single conversation takes many calls to the language model, each with its own prompt. Every one of them is logged here, with the content sections retrieved and the action that followed. This is where you look to explain a reply.

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

  <Card title="Delivery">
    Daily delta on `etl_updated_at`
  </Card>

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

## Where it lands

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

Each partition holds only the rows the datamart ingested that day, so union every
`etl_date=` partition to reconstruct the table. One of them is
`etl_date=__initial__`, the first load, holding everything that preceded the
earliest daily partition. Check for `_SUCCESS` before reading a partition, as
described in [bucket layout](/data-export/bucket-layout#how-to-tell-if-a-partition-is-ready).

## Columns

<ResponseField name="prompt_revision_sk" type="bigint">
  Internal warehouse key. Not stable between deliveries — join on `prompt_revision_id` instead.
</ResponseField>

<ResponseField name="prompt_revision_id" type="varchar(510)">
  **Join key.** Unique id of the decision.
</ResponseField>

<ResponseField name="cloudchat_id" type="varchar(510)">
  **Join key.** Conversation the decision belongs to. Matches `cloudchat_id` on [`claudia_conversation`](/data-export/catalog/claudia/claudia_conversation).
</ResponseField>

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

<ResponseField name="application_identifier" type="varchar(510)">
  Environment the decision was made in.
</ResponseField>

<ResponseField name="response_action_class" type="varchar(50)">
  What the agent decided to do: `NO_ACTION` to keep talking, `FORWARD_N2` to escalate, `RESOLVE_TICKET` or `CLOSE_TICKET` to end the conversation.
</ResponseField>

<ResponseField name="enlightenment_limit_reached_flag" type="boolean">
  Whether the agent had exhausted its clarifying questions at this point.
</ResponseField>

<ResponseField name="originated_from_user_query" type="varchar(65535)">
  The customer question this decision responds to, as interpreted.
</ResponseField>

<ResponseField name="response_class" type="varchar(255)">
  Which response strategy the agent chose. The value is a fully-qualified internal class name and its exact string is not part of the delivery contract: read the trailing segment, for example `AcceptableConfidenceResponse` or `NoValidContentResponse`.
</ResponseField>

<ResponseField name="created_at" type="timestamp">
  When the decision was made.
</ResponseField>

<ResponseField name="updated_at" type="timestamp">
  When the row was last modified.
</ResponseField>

<ResponseField name="response_raw_final_answer" type="varchar(65535)">
  The answer the agent produced, before any formatting applied on the way out to the channel.
</ResponseField>

<ResponseField name="conversation_active_flow_id" type="varchar(510)">
  Controlled flow active on the conversation when the decision was made.
</ResponseField>

<ResponseField name="conversation_active_session_id" type="varchar(510)">
  Run of that flow.
</ResponseField>

<ResponseField name="response_bot_flow_id" type="varchar(510)">
  Controlled flow this decision started or advanced.
</ResponseField>

<ResponseField name="response_bot_session_id" type="varchar(510)">
  Run of the flow in `response_bot_flow_id`.
</ResponseField>

<ResponseField name="response_bot_result_id" type="varchar(510)">
  Result of the flow run. Joins to `result_id` on [`eddie_result_outcomes`](/data-export/catalog/claudia/eddie_result_outcomes).
</ResponseField>

<ResponseField name="response_used_content_id" type="varchar(510)">
  The content section the answer was built from. Joins to `content_id` on [`claudia_contents`](/data-export/catalog/claudia/claudia_contents). This is the column that lets you attribute an answer to a piece of your base.
</ResponseField>

<ResponseField name="response_model_reasoning" type="varchar(65535)">
  Written reasoning recorded for the decision.
</ResponseField>

<ResponseField name="response_used_content_id_1" type="varchar(510)">
  First of the candidate sections retrieved for this question, in relevance order. The candidates are what was available to answer with, not necessarily what was used.
</ResponseField>

<ResponseField name="response_used_content_id_2" type="varchar(510)">
  Second candidate section retrieved.
</ResponseField>

<ResponseField name="response_used_content_id_3" type="varchar(510)">
  Third candidate section retrieved.
</ResponseField>

<ResponseField name="frustration_score" type="smallint">
  Frustration estimated at this point in the conversation, from 0 to 100.
</ResponseField>

<ResponseField name="frustration_label" type="varchar(255)">
  `frustration_score` bucketed into a label.
</ResponseField>

<ResponseField name="frustration_reasoning_text" type="varchar(510)">
  Written justification for the frustration classification.
</ResponseField>

<ResponseField name="response_error_message" type="varchar(65535)">
  Error recorded while producing the answer. `NULL` on decisions that succeeded, which is the vast majority.
</ResponseField>

<ResponseField name="clarification_content_id_1" type="varchar(510)">
  First candidate section considered when the agent asked a clarifying question instead of answering.
</ResponseField>

<ResponseField name="clarification_content_id_2" type="varchar(510)">
  Second candidate section considered for the clarifying question.
</ResponseField>

<ResponseField name="clarification_content_id_3" type="varchar(510)">
  Third candidate section considered for the clarifying question.
</ResponseField>

<ResponseField name="etl_updated_at" type="timestamp">
  When the datamart last wrote this row. This is the cursor for the daily delta: a partition holds the rows whose `etl_updated_at` fell on that day.
</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="etl_date" type="varchar">
  Partition column. The day whose rows this file holds, in `YYYY-MM-DD`. Not a date type, because the initial load carries the literal `__initial__` instead of a day.
</ResponseField>
