—— Build vs. Buy ——

Ship Voice AI in Weeks, Not 18 Months

Building a voice AI stack from scratch takes six vendors, three engineers, and a year of glue code before your first production call.

18+

months to production (DIY)

18+

months to production (DIY)

4–6

weeks on SignalWire

4–6

weeks on SignalWire

6

vendors to manage (DIY)

6

vendors to manage (DIY)

$0.16

per minute, AI processing

$0.16

per minute, AI processing

—— The DIY Problem ——

What You Are Actually Building When You Build It Yourself

Vendor evaluation takes months

STT, TTS, LLM, and telephony providers each require proof-of-concept testing. Two to three months pass before you write any integration code.

Vendor evaluation takes months

STT, TTS, LLM, and telephony providers each require proof-of-concept testing. Two to three months pass before you write any integration code.

Distributed state is the hard problem

Race conditions, zombie calls, double updates. Conversation context is scattered across independent systems with no shared state model.

Distributed state is the hard problem

Race conditions, zombie calls, double updates. Conversation context is scattered across independent systems with no shared state model.

Error recovery across vendors

When one vendor in a five-vendor chain fails, your code handles the fallback. Each failure mode requires its own mitigation path.

Error recovery across vendors

When one vendor in a five-vendor chain fails, your code handles the fallback. Each failure mode requires its own mitigation path.

Compliance surface multiplies

PCI scope reduction, data isolation, and audit logging must happen across every vendor independently. One audit surface becomes five.

Compliance surface multiplies

PCI scope reduction, data isolation, and audit logging must happen across every vendor independently. One audit surface becomes five.

Observability requires correlation

Four or five dashboards, each showing a partial picture. Building unified monitoring and correlated logs is a project unto itself.

Observability requires correlation

Four or five dashboards, each showing a partial picture. Building unified monitoring and correlated logs is a project unto itself.

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()

DIY Stack vs. One Platform

DIY (6 Vendors)

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 (1 Platform)

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

—— From Install to Production ——

From Install to Production

Day 1: Install and build your first agent

Install signalwire-agents, define your agent class, add a prompt, and make your first phone call to a working AI agent.

Day 1: Install and build your first agent

Install signalwire-agents, define your agent class, add a prompt, and make your first phone call to a working AI agent.

Weeks 1–2: Connect your business logic

Add tool functions that call your backend: order lookups, appointment scheduling, account verification, and the tools that differentiate your product.

Weeks 1–2: Connect your business logic

Add tool functions that call your backend: order lookups, appointment scheduling, account verification, and the tools that differentiate your product.

Weeks 2–3: Structure conversation flow

Define steps with scoped prompts and scoped tools. Each step handles one phase of the conversation with focused context.

Weeks 2–3: Structure conversation flow

Define steps with scoped prompts and scoped tools. Each step handles one phase of the conversation with focused context.

Weeks 4–6: Go live

Deploy your agent as a standard HTTP microservice. Provision phone numbers, route calls, and move into production.

Weeks 4–6: Go live

Deploy your agent as a standard HTTP microservice. Provision phone numbers, route calls, and move into production.

Weeks 3–4: Test and iterate

Test with real calls. Iterate on prompts and flows. Use the sandbox environment for rapid development cycles.

Weeks 3–4: Test and iterate

Test with real calls. Iterate on prompts and flows. Use the sandbox environment for rapid development cycles.

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

Ship your first agent this week.

Build on infrastructure designed for voice AI, not assembled from six vendors.

Ship your first agent this week.

Build on infrastructure designed for voice AI, not assembled from six vendors.

Ship your first agent this week.

Build on infrastructure designed for voice AI, not assembled from six vendors.

Ship your first agent this week.

Build on infrastructure designed for voice AI, not assembled from six vendors.