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

# 05.2025

> May 2025 release notes.

The **May 2025** PolyAI Agent Studio release includes enhancements to variant testing, input handling, KB creation, and LLM feedback.

Expand the items for details:

<AccordionGroup>
  <Accordion title="DTMF support" icon="fingerprint" id="dtmf-support">
    [DTMF (Dual Tone Multi-Frequency)](https://www.techtarget.com/searchnetworking/definition/DTMF) is the method phones use to turn keypad presses into audio tones that telecom systems can detect and process.

    You can now configure DTMF collection directly inside a flow step. DTMF is often used for collecting phone numbers, booking IDs, or confirmation codes during a conversation.

    <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/dtmf.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=1760d572ad13043a1cf6a0ea665a2a1d" alt="dtmf-support" width="2400" height="1622" data-path="images/release-notes/2505/dtmf.png" />

    Click the app grid icon <Icon icon="grid" iconType="solid" /> to open the DTMF menu.

    **You can configure:**

    * **Inter-digit timeout**: Set the number of seconds to wait between key presses before timing out of the collection process.
    * **Number of digits expected**: Specify how many digits the agent should expect.
    * **End key**: Choose an optional key (like `#` or `*`) to signal the end of input.
    * **Collect while speaking**: Enable data collection even while the agent is still talking.
    * **Mark as PII**: Flag the collected value as [Personally Identifiable Information](https://ico.org.uk/for-organizations/uk-gdpr-guidance-and-resources/personal-information-what-is-it/what-is-personal-information-a-guide/).
  </Accordion>

  <Accordion title="Chat with variants" icon="arrows-cross" id="chat-with-variants">
    Users can now test how different [variants](/variant-management/introduction) respond using a drop down in the chat panel.

    <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/chat-with-variants.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=2d1a795a5a79798cb5cf7c3be6c488e4" alt="chat-with-variants" width="2135" height="1258" data-path="images/release-notes/2505/chat-with-variants.png" />

    **What you can do:**

    * Select a specific variant to observe differences in behavior, tone, or logic

    **Why it matters:**

    * Easier testing
    * Better confidence in how variants perform in production
  </Accordion>

  <Accordion title="Duplicate and set default variants" icon="copy" id="duplicate-and-set-default-variants">
    <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/set-default-variant.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=631c1a2b7a03920cdc86d106bc9839aa" alt="set-default-variant" width="2134" height="1181" data-path="images/release-notes/2505/set-default-variant.png" />

    You can now duplicate a variant and assign a new default variant directly from the [variant management](/variant-management/introduction) page.

    **What's new:**

    * Open the options menu <Icon icon="ellipsis" iconType="solid" /> to **Edit** or **Duplicate** an existing variant.
    * Set a variant as default using the toggle in the side of the **Edit** panel.

    Switching to a new default automatically deactivates the previous one.
  </Accordion>

  <Accordion title="Build KBs with URL and PDF upload" icon="file-pdf" id="build-kbs-with-url-and-pdf-upload">
    You can now create new [Knowledge](/managed-topics/introduction) topics by [uploading a PDF](/variant-management/csv-imports#pdf) or simply by [providing a website URL](/variant-management/csv-imports#csv).

    <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/import-pdf.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=b42585002036fa45087a02841cc8534e" alt="url-upload-kb" width="2514" height="1614" data-path="images/release-notes/2505/import-pdf.png" />

    **Features:**

    * Pulls page content from public websites
      * This means you can give your agent a link to your company's FAQ and it will generate a full draft of Knowledge topics.
    * Upload PDF files to generate KB topic drafts. When creating KBs using URL import, the system will provide a real-time crawl status and error messaging if the page cannot be scraped.

    <Tip> When using the URL option, remember some websites block scraping and that HTML-to-text fidelity may vary. Always review content carefully after importing. </Tip>
  </Accordion>

  <Accordion title="Chat-to-review shortcut" icon="arrow-up-right-from-square" id="chat-to-review-shortcut">
    <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/review-shortcut.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=0c395ef9acfe83a458df2d15af590e5a" alt="review-shortcut" width="998" height="492" data-path="images/release-notes/2505/review-shortcut.png" />

    A shortcut button has been added to the chat panel to open the conversation in the Review page.

    **Benefits:**

    * Speeds up debugging
    * Useful when testing flows or functions in studio
  </Accordion>

  <Accordion title="Handoff reason and utterance" icon="phone" id="handoff-reason-and-utterance">
    The built-in **handoff** template and the `conv.handoff()` helper now accept two optional, structured fields for clearer call logging and routing:

    ```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
    def handoff(conv: Conversation):
        return conv.call_handoff(
            destination="DESTINATION",
            reason="SPEAK_TO",
            utterance="Okay, no problem. Just give a moment to connect you with someone who can help"
        )
    ```

    | Field       | Purpose                                                                                                                                                                                                                                                       | Example                                             |
    | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
    | `reason`    | Machine-readable code explaining *why* the call is being escalated (e.g. `policy_violation`, `needs_human`, `no_availability`). Surfaces in [Conversation Review](/analytics/conversations/review) and the [Conversations API](/api-reference/conversations). | `policy_violation`                                  |
    | `utterance` | The exact phrase the agent should speak *before* initiating the transfer. Logged alongside the handoff.                                                                                                                                                       | "Let me transfer you to a specialist who can help." |

    **Where it shows up**

    * **[Flows](/flows/introduction) & [KB Actions](/managed-topics/how-to-setup-action/introduction)** – When using the `builtin-handoff` action, you can now optionally specify `reason` and `utterance` fields inside the action configuration (visible in the JSON behind the scenes, not in the Handoff Destination UI).
    * [Functions](/tools/introduction) – Call `conv.handoff(reason="...", utterance="...")` directly in the Function Editor to trigger a handoff with these fields.
    * [Conversation Review](/analytics/conversations/review) – Both fields appear in the metadata panel for visibility and QA.
    * [Conversations API](/api-reference/handoff/endpoint/get-handoff) – Returned inside the `handoff` object for downstream routing.

    <Note>These fields do not appear in the [Call Handoff UI](/call-handoff/introduction) (where you configure SIP methods, URIs, or SIP headers).
    They are attached during configuration in the Knowledge area fields later, and are at runtime, when the agent decides to escalate the call, where they are logged alongside the handoff action.</Note>

    **Why it matters**

    * You can fine-grain routing rules in telephony or CRM systems.
    * Ensures the exact agent wording before handoff is logged and auditable.
  </Accordion>

  <Accordion title="Entities and intents in Conversation Review" icon="bullseye" id="entities-and-intents-in-conversation-review">
    <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/intents-entities.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=00f7e546ca28cbe55ce71f79e1fbb5ac" alt="entities-intents" width="1180" height="1246" data-path="images/release-notes/2505/intents-entities.png" />

    [Conversation Review](/analytics/conversations/review) now shows detected intents and extracted entities directly in the Diagnosis panel, making it easier to debug and QA conversations that use intents or entities.

    **What's new:**

    * **Intents**: Shows the triggered intent from the agent's recognition model (for pre-GenAI intent-based projects).
    * **Entities**: Lists extracted key data points, such as booking numbers, customer IDs, or locations.

    <Card>
      <img src="https://mintcdn.com/polyai/ZVzKq3G72RK1ScpE/images/release-notes/2505/entity-metrics.png?fit=max&auto=format&n=ZVzKq3G72RK1ScpE&q=85&s=917aabf1b1943ed962f3bbc61b72a824" alt="Entities and Intents" width="250" style={{ display: 'block', margin: '0 auto' }} data-path="images/release-notes/2505/entity-metrics.png" />
    </Card>
  </Accordion>

  <Accordion title="Improved multi-language ASR accuracy" icon="language" id="improved-multi-language-asr-accuracy">
    The speech recognition engine has been updated to provide improved accuracy for several supported languages.

    **What's improved:**

    * Better recognition of numbers and dates in French, Spanish, and German.
    * Reduced transcription errors in noisy environments.
    * Improved support for accented speakers and regional dialects.

    **Why it matters:**

    * Higher transcription accuracy improves agent understanding and reduces failure rates.
    * Improves customer experience in multi-lingual deployments.
  </Accordion>

  <Accordion title="Conversation review: session duration filter" icon="clock" id="conversation-review-session-duration-filter">
    A new filter has been added to [conversation review](/analytics/conversations/review) to allow sessions to be filtered by duration.

    **Benefits:**

    * Focus on very short or very long conversations.
    * Easily identify drop-offs, failures, and edge cases.
  </Accordion>
</AccordionGroup>
