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

# Customize

> Customize agent personality, Slack response behavior, auto-respond settings, and conversational form filling to match your team's voice and workflow.

Define how your agent presents itself and communicates with users through personality settings, Slack behavior configuration, and auto-respond options.

<View title="Human" icon="user">
  ***

  ## Personality

  By default, agents use a built-in communication style that produces direct, professional responses without filler or pleasantries. Setting a custom prompt overrides these defaults entirely.

  <AccordionGroup>
    <Accordion title="Custom prompt" defaultOpen>
      Provide a custom prompt to define your agent's personality, tone, and communication style. This prompt guides how the agent interacts with users.

      <Warning>
        When you set a custom prompt, the **Response length**, **Tone**, and **Emojis** settings below are disabled. Your custom prompt must specify all personality characteristics including verbosity, tone, and emoji usage. The agent will not reference the standard settings.
      </Warning>

      **Example prompts:**

      **IT Support Agent:**

      <Prompt description="You are a helpful IT support agent. Be professional and technical but friendly. Keep responses concise and to the point. Use a business tone with minimal emojis. When explaining technical concepts, use clear language that non-technical users can understand. Always be patient and empathetic with frustrated users.">
        You are a helpful IT support agent. Be professional and technical but friendly.
        Keep responses concise and to the point. Use a business tone with minimal emojis.
        When explaining technical concepts, use clear language that non-technical users
        can understand. Always be patient and empathetic with frustrated users.
      </Prompt>

      **HR Agent:**

      <Prompt description="You are a compassionate HR assistant. Use a warm, supportive tone with moderate emoji usage to create a welcoming atmosphere. Keep responses balanced in length, providing enough detail to be helpful while respecting people's time. Be empathetic and understanding, especially when handling sensitive topics like benefits, time off, or workplace concerns.">
        You are a compassionate HR assistant. Use a warm, supportive tone with moderate
        emoji usage to create a welcoming atmosphere. Keep responses balanced in length,
        providing enough detail to be helpful while respecting people's time. Be
        empathetic and understanding, especially when handling sensitive topics like
        benefits, time off, or workplace concerns.
      </Prompt>

      **RevOps Agent:**

      <Prompt description="You are a strategic Revenue Operations assistant. Communicate in a business-casual tone that's professional yet approachable. Use verbose responses when explaining complex processes or data, but stay concise for quick questions. Include minimal emojis to maintain professionalism. Focus on being clear, data-driven, and solution-oriented in your communication.">
        You are a strategic Revenue Operations assistant. Communicate in a business-casual
        tone that's professional yet approachable. Use verbose responses when explaining
        complex processes or data, but stay concise for quick questions. Include minimal
        emojis to maintain professionalism. Focus on being clear, data-driven, and
        solution-oriented in your communication.
      </Prompt>

      <Info>
        Focus on the agent's character and manner of speaking. Avoid including instructions about tools or processes, which belong in <Tooltip headline="Rules" tip="Natural language instructions defining agent behavior" cta="Learn about rules" href="/documentation/automate/agents/configure#rules">rules</Tooltip>.
      </Info>
    </Accordion>

    <Accordion title="Response length">
      Select the desired length of the agent's responses: Concise, Balanced, or Verbose.

      <Note>
        This setting is ignored if a custom prompt is configured.
      </Note>
    </Accordion>

    <Accordion title="Tone">
      Choose the tone of the agent's communication: Business, Casual, or Humorous.

      <Note>
        This setting is ignored if a custom prompt is configured.
      </Note>
    </Accordion>

    <Accordion title="Emojis">
      Set whether the agent should use emojis in its responses and how often: None, Minimal, Moderate, or High.

      <Note>
        This setting is ignored if a custom prompt is configured.
      </Note>
    </Accordion>
  </AccordionGroup>

  ***

  ## Slack behavior

  Configure how your agent responds in Slack channels and threads.

  <AccordionGroup>
    <Accordion title="Channel messages" icon="hash" defaultOpen>
      Define how the agent responds to messages in Slack channels:

      * **Respond to all messages**: The agent replies to every message in the channel
      * **Respond to mentions only**: The agent only replies when directly mentioned
      * **Respond to requests only**: The agent only replies to messages detected as requests for assistance
    </Accordion>

    <Accordion title="Threaded messages" icon="message-square">
      Define how the agent responds to messages in a Slack thread:

      * **Respond to all messages**: The agent replies to every message in the thread
      * **Respond to mentions only**: The agent only replies when directly mentioned
      * **Smart (classify intent)** <Badge icon="bot" color="gray" stroke>V3+</Badge>: The agent uses an AI classifier to determine whether a message is directed at it before responding. Side-conversations, acknowledgments, and human-to-human exchanges are skipped. When the agent has asked a question (for example, while collecting a form field) and the user replies with an `@mention` such as a manager's name, the classifier treats the message as an answer to the agent rather than a side-conversation.

      **Default for V3 agents:** Smart (classify intent).

      <Note>
        Channel and threaded message settings do not apply to Slack direct messages (DMs) with the agent. Since a DM is a private 1:1 conversation, the agent always responds to every message in a DM, including replies in DM threads.
      </Note>
    </Accordion>

    <Accordion title="File attachments" icon="paperclip">
      The agent reads files that users share in Slack as part of the conversation. When a user uploads a document with their message, the agent extracts the document's text and uses it to answer questions, fill forms, or route the ticket.

      **Supported file types:**

      * PDF documents
      * Images (screenshots, photos)
      * Text and document files shared in Slack

      **How it works:**

      * When the agent detects a file share, it briefly defers its response so Slack can finish processing the upload. This prevents the agent from replying before it can read the attachment.
      * The agent then extracts text from the file and treats its contents as additional context for the message.
      * Extracted document content is used the same way as the user's typed message: for answering questions, prefilling form fields, and selecting rules.

      **Example use cases:**

      * A user pastes a screenshot of an error and asks "what's going on?" The agent reads the screenshot and references it in its answer.
      * A user attaches a vendor invoice or contract PDF when filing a request. The agent extracts key fields to prefill the form.
      * A user shares an exported log file. The agent summarizes the file before creating the ticket.

      <Note>
        File contents are processed at message time and used as part of the agent's conversation context. They are not automatically added to your knowledge base. To make a document permanently searchable by the agent, ingest it into a [knowledge folder](/documentation/automate/knowledge/overview).
      </Note>
    </Accordion>
  </AccordionGroup>

  ### Response elements

  Configure UI elements that appear in the agent's Slack responses. These settings control visual components displayed alongside AI answers when the response includes citations from your knowledge base.

  <AccordionGroup>
    <Accordion title="Show source" icon="link" defaultOpen>
      Display the source link in agent responses. When enabled, users see links to the knowledge base articles or documents that the AI used to generate its answer.

      **Default:** Enabled

      This helps users verify information and explore related documentation.
    </Accordion>

    <Accordion title="Show feedback buttons" icon="thumbs-up">
      Display thumbs up and down feedback buttons below AI responses. When enabled, users can indicate whether the response was helpful.

      **Default:** Enabled

      Feedback data helps you identify knowledge gaps and improve your documentation.
    </Accordion>

    <Accordion title="Show create ticket button" icon="ticket">
      Display a button that allows users to create a support ticket directly from the AI response. This is useful when the AI answer doesn't fully resolve the user's question and they need human assistance.

      **Default:** Disabled

      <Note>
        The create ticket button only appears when the ticket has not already been published.
      </Note>
    </Accordion>
  </AccordionGroup>

  ### Create ticket on negative feedback

  Automatically create a support ticket when users react with thumbs down to an agent response. **Enabled by default** to ensure negative feedback receives timely follow-up.

  <Note>
    This setting only appears when **Show feedback buttons** is enabled.
  </Note>

  ***

  ## Auto-respond

  Enable automatic AI responses for tickets created from email and integration sources (Jira, Linear, GitHub). When enabled, the agent automatically responds to new tickets using its assigned knowledge bases.

  <AccordionGroup>
    <Accordion title="Auto-respond to email" defaultOpen>
      Enable automatic responses to tickets created from inbound emails. The agent analyzes the email content and provides a response based on its knowledge bases.
    </Accordion>

    <Accordion title="Auto-respond to integrations">
      Enable automatic responses to tickets created from integrations such as Jira, Linear, and GitHub. The agent analyzes the ticket content and provides a response based on its knowledge bases.
    </Accordion>

    <Accordion title="Response delay">
      Set a delay (0-300 seconds) before the agent responds. This allows time for additional context to be added to the ticket before the AI responds. Options include:

      * Immediate (0 seconds)
      * 5 seconds
      * 10 seconds
      * 30 seconds
      * 1 minute
      * 2 minutes
      * 5 minutes
    </Accordion>

    <Accordion title="Auto-submit form">
      Enable automatic ticket creation when all required form fields are pre-filled by the agent, without requiring user review.

      **Default:** Enabled

      When enabled (default), the agent bypasses the form review step and creates the ticket immediately if all required fields have been provided. When disabled, users are shown a pre-filled form to review and submit manually. If some required fields are missing, the form is still shown to the user with valid prefills so they can complete the remaining fields manually.

      Enable this setting when you want a faster, more streamlined experience and trust the agent to accurately fill in form fields based on the conversation context.

      <Info>
        Auto-submit is disabled for private forms regardless of this setting. Private forms always display the form UI so users can enter sensitive information directly.
      </Info>

      <Info>
        Prefilled values are validated before auto-submit. If the agent makes a mistake, it retries with corrected values instead of silently dropping the field.
      </Info>
    </Accordion>
  </AccordionGroup>

  <Note>
    If the agent cannot provide a definitive answer, the ticket will be tagged with `ai-unresolved` for human follow-up.
  </Note>

  ***

  ## Conversational form filling

  Enable conversational form filling to let the agent collect form field values through natural conversation rather than presenting a form UI. The agent asks for each field one at a time, then presents the completed form for review once all required values are collected.

  <AccordionGroup>
    <Accordion title="Enable conversational form filling" defaultOpen>
      Toggle this setting on to switch forms from the standard form to conversational collection. The agent prompts users for each field individually in chat, then presents the completed form for review.

      **Default:** Disabled
    </Accordion>

    <Accordion title="Field threshold">
      Set the maximum number of fields a form can have to use conversational mode. Forms with more fields than this threshold will display the standard form instead.

      **Default:** 3 fields

      Use a lower threshold for complex forms where users benefit from seeing all fields at once. Increase the threshold for simple forms with few required fields.

      <Info>
        The threshold is compared against the maximum number of fields a single user path can reveal, not the raw total. For forms with conditional (dependent) fields, only the longest visible branch counts. For example, take a Laptop Request form with 10 declared fields where any one user only ever sees 6 — top-level fields plus a single Mac or Windows branch. Ravenna treats it as a 6-field form for threshold purposes. This keeps branchy forms eligible for conversational mode even when the total field count is large.
      </Info>

      <Info>
        If a form exceeds the threshold, the agent falls back to presenting the standard form regardless of the conversational form filling setting.
      </Info>
    </Accordion>
  </AccordionGroup>

  ### How conversational form filling works

  1. User makes a request that triggers a form (for example, reporting an issue or requesting access)
  2. Agent identifies the required form fields and checks whether the form qualifies for conversational mode (field count is at or below the threshold)
  3. Agent extracts any field values already mentioned in the conversation
  4. For remaining required fields, the agent asks for each value one at a time
  5. For forms with conditional fields, dependent fields are skipped until their parent field has a matching value
  6. User provides values through natural language responses
  7. Once all required fields are collected, the agent presents the form for review (or auto-submits if auto-submit is enabled)

  <Warning>
    Private forms always use the standard form UI regardless of conversational form filling settings. This ensures sensitive information is collected through the secure form interface rather than in a channel conversation.
  </Warning>

  ### Which mode to use

  <CardGroup cols={2}>
    <Card title="Conversational mode" icon="messages-square">
      Best for straightforward forms with few required fields, like a password reset that only needs a username and urgency level.
    </Card>

    <Card title="Standard form" icon="list-checks">
      Best for forms where users benefit from seeing all fields at once, such as access requests with multiple approvers or file attachments.
    </Card>
  </CardGroup>

  <Callout icon="link" color="#6B7280">
    When forms include user selection fields, the agent uses [User Lookup](/documentation/automate/agents/configure#user-lookup) to resolve names to user IDs during conversational collection. For user group selection fields, the agent uses [Group Lookup](/documentation/automate/agents/configure#group-lookup) to resolve group names to IDs.
  </Callout>

  <Info>
    For DATE fields, the agent resolves relative expressions like "tomorrow", "next Monday", or "in 2 weeks" to concrete `YYYY-MM-DD` values automatically. Dates are resolved in UTC, so for requests near midnight the resolved day may be off by one.
  </Info>
</View>

<View title="Agent" icon="bot">
  ## Personality model

  Agent personality controls the communication style, not the behavior. Personality is separate from rules.

  ### Default communication style

  All agents have a built-in communication style that applies when no custom prompt is set:

  * Responses are direct and complete, without preamble, closers, or sign-offs
  * The agent does not echo or paraphrase the user's question before answering
  * Responses avoid sycophantic openers ("Certainly!", "Of course!", "Great question"), filler phrases ("It's worth noting", "utilize", "leverage", "delve"), stiff transitions ("Additionally", "Furthermore", "Moreover"), canned closers ("Hope this helps!", "Feel free to..."), and unprompted follow-up invitations

  Formatting (bullets, headers, and lists) is unrestricted. A custom prompt overrides these defaults entirely.

  ### Configuration modes

  Two configuration modes exist:

  1. **Structured settings** (Response length, Tone, Emojis): Simple preset values. Response length options are Concise, Balanced, or Verbose. Tone options are Business, Casual, or Humorous. Emoji options are None, Minimal, Moderate, or High.
  2. **Custom prompt**: A free-text personality prompt that overrides all structured settings. When a custom prompt is set, the structured settings are completely ignored.

  **Key distinction:** Personality prompts define how the agent communicates (tone, verbosity, style). Rules define what the agent does (actions, tools, resource references). Keep these separate. Do not include behavioral instructions in the personality prompt, and do not include personality guidance in rules.

  ***

  ## Slack behavior model

  ### Channel response modes

  The agent's response behavior in Slack channels is set to one of three modes:

  | Mode                     | Behavior                                                       | Best for                                                         |
  | ------------------------ | -------------------------------------------------------------- | ---------------------------------------------------------------- |
  | Respond to all messages  | Agent replies to every message in the channel                  | Dedicated support channels with low noise                        |
  | Respond to mentions only | Agent replies only when directly @mentioned                    | Channels with mixed conversation and support requests            |
  | Respond to requests only | Agent replies only to messages detected as assistance requests | General channels where the agent should stay quiet unless needed |

  ### Thread response modes

  Thread behavior has three modes:

  | Mode                                                                      | Behavior                                                                                                                                                                                                                                                                                                                                 | Best for                                                          |
  | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
  | Respond to all messages                                                   | Agent replies to every message in the thread                                                                                                                                                                                                                                                                                             | Dedicated support threads where all messages need a response      |
  | Respond to mentions only                                                  | Agent replies only when directly @mentioned in the thread                                                                                                                                                                                                                                                                                | Threads where humans and agents collaborate                       |
  | Smart (classify intent) <Badge icon="bot" color="gray" stroke>V3+</Badge> | Agent uses an AI classifier to determine whether each message is directed at it before responding. Direct @mentions always bypass the classifier, and when the agent is mid-conversation (for example, waiting on a form answer), `@mention`-style replies are treated as answers rather than side-conversations. Default for V3 agents. | Threads with mixed human-to-human and human-to-agent conversation |

  ### Response elements

  Three optional UI elements appear alongside agent responses in Slack:

  * **Source links** (default: enabled): Shows links to knowledge base articles used to generate the answer.
  * **Feedback buttons** (default: enabled): Thumbs up/down buttons for user feedback. When enabled, negative feedback can optionally auto-create a support ticket.
  * **Create ticket button** (default: disabled): Allows users to create a ticket directly from the response. Only appears when a ticket has not already been published.

  ***

  ## Auto-respond model

  Auto-respond enables the agent to automatically reply to tickets created from non-Slack sources:

  * **Email auto-respond**: Replies to tickets created from inbound emails.
  * **Integration auto-respond**: Replies to tickets created from Jira, Linear, GitHub, and other connected integrations.

  Configuration options:

  * **Response delay** (0 to 300 seconds): Delays the agent's response to allow additional context to be added to the ticket first. Available presets: 0s, 5s, 10s, 30s, 1m, 2m, 5m.
  * **Auto-submit form**: When enabled (default), the agent automatically submits the ticket if all required form fields are pre-filled. Prefilled values are validated before submission; if the agent makes a mistake it retries with corrected values. When disabled, the user sees a pre-filled form for review. If required fields are missing, the form is shown to the user with valid prefills so they can complete it. Auto-submit is always disabled for private forms.

  If the agent cannot provide a definitive answer to an auto-responded ticket, the ticket is tagged with `ai-unresolved` for human follow-up.

  ***

  ## Conversational form filling

  Conversational form filling changes how the agent collects structured data. Instead of presenting a form UI, the agent asks for each field value through natural conversation.

  ### Activation logic

  Conversational form filling activates when all four conditions are met:

  1. The setting is enabled on the agent.
  2. A rule triggers a form.
  3. The form's effective field count is at or below the configured field threshold (default: 3). The effective count is the maximum number of fields a single user path can reveal — for forms with conditional (dependent) fields, only the longest visible branch counts, not the raw total.
  4. The form is not private. Private forms always use the standard form UI to protect sensitive data.

  If the form exceeds the threshold or is private, the agent falls back to the standard form UI regardless of the setting.

  ### Collection sequence

  1. The agent identifies all required fields on the triggered form.
  2. The agent extracts any field values already mentioned in the conversation.
  3. For remaining required fields, the agent asks the user for each value one at a time. For forms with conditional fields, dependent fields are skipped until their parent field has a matching value.
  4. For user selection fields, the agent uses User Lookup to resolve names to Ravenna user IDs.
  5. For user group selection fields, the agent uses Group Lookup to resolve group names to IDs, respecting any allowlist or source constraints configured on the field.
  6. Once all required fields are collected, the agent presents the form for review or auto-submits if auto-submit is enabled.

  ### When to use each mode

  | Mode           | Best for                                                                                                        | Limitations                                                                                                                    |
  | -------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
  | Conversational | Simple forms with few fields (password reset, basic requests)                                                   | Not suitable for forms with many fields, file attachments, or complex multi-select options. Always disabled for private forms. |
  | Standard form  | Complex forms, forms with file uploads, forms where users benefit from seeing all fields at once, private forms | Interrupts the conversational flow                                                                                             |

  ***

  ## Constraints and gotchas

  * **Custom prompt overrides all structured settings.** When a custom prompt is set, Response length, Tone, and Emojis settings are completely ignored. The custom prompt must specify all personality characteristics.
  * **Personality is not behavior.** Keep personality prompts focused on communication style. Tool usage, form selection, and workflow triggers belong in rules, not personality.
  * **Channel behavior applies per agent, not per channel.** The Slack response mode is set on the agent and applies to all channels the agent is deployed to.
  * **Form threshold is a hard cutoff.** If a form's effective field count exceeds the threshold, conversational mode does not activate. There is no partial conversational collection. The effective count is the maximum number of fields a single user path can reveal, so deep dependent-field branches do not push otherwise simple forms over the threshold.
  * **Auto-submit bypasses user review.** Auto-submit form is enabled by default. The agent creates the ticket immediately without showing the form when all required fields are prefilled. Prefilled values are validated before submission, so invalid values are corrected rather than silently dropped. Disable this setting if you want users to always review the form before submission. If required fields are missing, the form is shown to the user with valid prefills instead.
  * **Private forms always use the standard form UI.** Conversational form filling and auto-submit are both disabled for private forms regardless of agent settings. This ensures sensitive data is collected through the secure form interface.
  * **Conditional fields in conversational mode.** During conversational collection, the agent respects field dependencies from the form builder. Dependent fields are skipped until their parent field has a matching value. When using the standard form UI, field visibility is controlled by the form builder's built-in conditional logic.
  * **Relative dates resolve in UTC.** Expressions like "tomorrow" and "next Monday" are resolved to `YYYY-MM-DD` relative to UTC. Near midnight in the user's local time, the resolved date may be off by one day.
  * **Response delay applies to auto-respond only.** The delay setting affects email and integration auto-responses, not Slack conversations.
  * **Negative feedback auto-ticket requires feedback buttons.** The "create ticket on negative feedback" option only works when feedback buttons are enabled.
</View>
