—— Context-Preserving Transfers ——

Transfers Should Carry the Conversation.

Cold transfers lose everything. Callers repeat themselves. SignalWire transfers carry context, authentication state, and a machine-written summary with the call.

100%

context preserved on transfer

100%

context preserved on transfer

< 1.2s

typical AI response latency

< 1.2s

typical AI response latency

2,000+

companies in production

2,000+

companies in production

$0.16

per minute, AI processing

$0.16

per minute, AI processing

—— The Transfer Problem ——

Every Transfer Is a Chance to Lose the Customer

Lost Authentication

The caller verified identity with the AI. After transfer, the receiving agent asks them to verify again.

Lost Authentication

The caller verified identity with the AI. After transfer, the receiving agent asks them to verify again.

Lost Conversation History

The caller explained the problem for three minutes, then the receiving agent starts from zero.

Lost Conversation History

The caller explained the problem for three minutes, then the receiving agent starts from zero.

Lost Tool Results

Order, balance, and address lookups disappear before the human agent receives the call.

Lost Tool Results

Order, balance, and address lookups disappear before the human agent receives the call.

Lost Patience

Every repeated question increases the chance the caller hangs up.

Lost Patience

Every repeated question increases the chance the caller hangs up.

Build a Voice AI Agent

Python

TypeScript

Go

Java

Ruby

PHP

Perl

C++

C#

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22

from signalwire import AgentBase
from signalwire.core.function_result import FunctionResult

class SupportAgent(AgentBase):
    def __init__(self):
        super().__init__(name="Support Agent", route="/support")
        self.prompt_add_section("Instructions",
            body="You are a customer support agent. "
                 "Greet the caller and resolve their issue.")
        self.add_language("English", "en-US", "rime.spore:mistv2")

    @AgentBase.tool(name="check_order")
    def check_order(self, order_id: str):
        """Check the status of a customer order.

        Args:
            order_id: The order ID to look up
        """
        return FunctionResult(f"Order {order_id}: shipped, ETA April 2nd")

agent = SupportAgent()
agent.run()

Python

TypeScript

Go

Java

Ruby

PHP

Perl

C++

C#

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22

from signalwire import AgentBase
from signalwire.core.function_result import FunctionResult

class SupportAgent(AgentBase):
    def __init__(self):
        super().__init__(name="Support Agent", route="/support")
        self.prompt_add_section("Instructions",
            body="You are a customer support agent. "
                 "Greet the caller and resolve their issue.")
        self.add_language("English", "en-US", "rime.spore:mistv2")

    @AgentBase.tool(name="check_order")
    def check_order(self, order_id: str):
        """Check the status of a customer order.

        Args:
            order_id: The order ID to look up
        """
        return FunctionResult(f"Order {order_id}: shipped, ETA April 2nd")

agent = SupportAgent()
agent.run()

Python

TypeScript

Go

Java

Ruby

PHP

Perl

C++

C#

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22

from signalwire import AgentBase
from signalwire.core.function_result import FunctionResult

class SupportAgent(AgentBase):
    def __init__(self):
        super().__init__(name="Support Agent", route="/support")
        self.prompt_add_section("Instructions",
            body="You are a customer support agent. "
                 "Greet the caller and resolve their issue.")
        self.add_language("English", "en-US", "rime.spore:mistv2")

    @AgentBase.tool(name="check_order")
    def check_order(self, order_id: str):
        """Check the status of a customer order.

        Args:
            order_id: The order ID to look up
        """
        return FunctionResult(f"Order {order_id}: shipped, ETA April 2nd")

agent = SupportAgent()
agent.run()

Cold Transfer vs. Platform-Native Transfer

Cold Transfer (Industry Default)

Separate telephony, STT, TTS, and LLM providers, each with its own SDK

Your glue code manages state across all four services

Each vendor adds a separate queue, invoice, and escalation path

Compliance and observability must be rebuilt across every vendor

16 to 23 months before a production call

SignalWire Warm Transfer

Telephony, STT, TTS, and LLM in one platform

AI runs inside the media stack, not outside it

800–1200ms typical response latency

One vendor, one invoice, one escalation path

Production calls in four to six weeks

State management is platform-native

—— Transfer Patterns ——

Transfer Patterns

AI to Human

A human receives identity, authentication state, issue summary, and actions already taken.

AI to Human

A human receives identity, authentication state, issue summary, and actions already taken.

AI to AI

Specialist agents inherit the same conversation and protected state without restarting.

AI to AI

Specialist agents inherit the same conversation and protected state without restarting.

AI-Briefed Handoff

The platform generates a concise machine-written briefing before the receiving agent answers.

AI-Briefed Handoff

The platform generates a concise machine-written briefing before the receiving agent answers.

Secure Context Passing

Protected fields remain in the hidden data layer and are available to backend tools without entering the model prompt.

Secure Context Passing

Protected fields remain in the hidden data layer and are available to backend tools without entering the model prompt.

Try it now

Sigmond Runs on SignalWire

A voice and video AI agent built on the SignalWire SDK, wired to a live knowledge base, able to see what you show him. Build the same thing on voice, phone, WhatsApp, or SIP, or an entire white-label platform with SignalWire as the network underneath.

Sigmond

Trusted by 2,000+ Companies

Stop Losing Context on Every Transfer

Build warm transfers where every handoff carries the full conversation.

Stop Losing Context on Every Transfer

Build warm transfers where every handoff carries the full conversation.

Stop Losing Context on Every Transfer

Build warm transfers where every handoff carries the full conversation.

Stop Losing Context on Every Transfer

Build warm transfers where every handoff carries the full conversation.