# Build and Configure AI Voice Agents Source: https://docs.usesimple.ai/agents Learn how to configure Simple AI agents with prompts, voices, tools, knowledge, analyzers, and conversation flows for phone, SMS, and chat. Agents define everything about how your AI handles conversations — the instructions, voice, tools, knowledge, and conversation flow. Every call in Simple AI is powered by an agent. You can create agents from the Simple AI dashboard or through the [API](/api-reference/agents/create-agent). ## What Makes Up an Agent An agent is built from a few core building blocks: | Component | Purpose | | - | - | | **Standard operating procedures** | Step-by-step instructions the agent follows during conversations | | **Knowledge bases** | Reference material the agent can look up on the fly — product info, policies, FAQs | | **Tools** | API connections that let the agent take actions — look up orders, update records, transfer calls | | **Voice** | How the agent sounds during calls | | **Parameters** | Dynamic values passed in per call — customer name, order ID, account details | ## Standard Operating Procedures The most important part of an agent is its instructions — the standard operating procedures (SOPs) that tell the agent exactly how to handle a conversation. Good SOPs are structured, specific, and cover the scenarios the agent will encounter. Rather than giving the agent a vague goal, you tell it exactly what to do at each stage. For example, a support agent's SOP might include: 1. Greet the caller and ask how you can help 2. If the caller asks about an order, ask for the order number and look it up using the order status tool 3. Read back the order status and ask if there is anything else 4. If the caller asks about returns, reference the return policy from the knowledge base 5. If the issue cannot be resolved, transfer the call to a live agent SOPs work best when they are clear about what to do in each situation, including edge cases. See [Prompting](/prompting) for detailed guidance on writing effective agent instructions. ## Knowledge and Policies Agents often need access to information that is too detailed or too frequently updated to put directly in the SOP — product catalogs, pricing tables, compliance policies, troubleshooting guides, or FAQ content. This is where [knowledge bases](/knowledgebase) come in. You attach one or more knowledge bases to an agent, and the agent searches them during the conversation when it needs to answer a question or reference a policy. This separation keeps your SOPs focused on the conversation flow while the knowledge base handles the reference material. Common use cases: * **Company policies** — return policies, warranty terms, billing rules, escalation criteria * **Product information** — features, pricing, specifications, compatibility * **Troubleshooting guides** — step-by-step diagnostic procedures * **FAQs** — common questions and their approved answers * **Compliance scripts** — required disclosures, legal language, opt-out instructions You can also publish your knowledge base content as a customer-facing [help center](/knowledge-base-help-center). ## Basic Agents vs. Flow-Based Agents ### Basic Agents A basic agent has a single set of SOPs, one voice, and an optional set of [tools](/tools) and [knowledge bases](/knowledgebase). This is the fastest way to get started and works well for straightforward use cases like appointment confirmations, simple Q\&A, or quick tests. ### Flow-Based Agents Flow-based agents give you fine-grained control over the conversation by defining a state machine. Each **node** in the flow represents a distinct stage of the conversation, and you define which nodes the agent can transition to from each state. This is useful when: * The agent needs to collect specific information in a specific order * Different parts of the conversation need different tools or knowledge * You want to enforce a structured workflow (e.g., verify identity, then look up order, then offer resolution) * Different stages require different SOPs Each node in the flow has: * **SOPs** — instructions specific to that stage of the conversation * **Tools** — the set of [tools](/tools) available in that node * **Knowledge bases** — reference material relevant to that node * **Transitions** — which other nodes the agent can move to from here For example, a customer service agent might have: 1. **Greeting** — verify the caller's identity using an account lookup tool 2. **Issue triage** — determine what the caller needs and route to the right node 3. **Order support** — look up orders, check shipping, process returns (with order tools and return policy knowledge base) 4. **Billing support** — review charges, process refunds (with billing tools and billing policy knowledge base) 5. **Escalation** — transfer to a live agent when the issue cannot be resolved Each node only has access to the tools, knowledge, and transitions it needs, which makes the agent more reliable and predictable. The agent chooses transitions from the conversation, but it does not have to be the one deciding. A [code action](/code-actions) can name the node to run next from your own logic — useful when the routing rule is a fact rather than a judgment call, such as sending a delinquent account straight to collections. ## Agent Voice Every agent has a voice that controls how it sounds during calls. You can browse available voices through the dashboard or the [Voices API](/api-reference/voices/list-voices) and assign one to your agent. ## Agent Tools Agents can interact with external services during a call using [tools](/tools). You define the URL, headers, body format, and a description of when the tool should be used. The agent decides when to call each tool based on the conversation and its SOPs. Built-in capabilities include: * **DTMF / IVR navigation** — the agent can press keys on the keypad to navigate phone menus * **End call** — the agent can hang up when the conversation is complete * **Transfer** — the agent can transfer the call to another number or agent For external service integrations, see [Integrations](/integrations/overview). ## Agent Parameters Agents can accept parameters that are passed in when a call is created. These parameters can be referenced in the SOPs using `{{parameter_name}}` syntax, making each call personalized. For example, an agent with the instruction "You are calling about order " can receive those values dynamically from the API or from a [campaign](/campaigns) CSV upload. ## API Reference * [List agents](/api-reference/agents/list-agents) * [Get agent](/api-reference/agents/get-agent) * [Create agent](/api-reference/agents/create-agent) * [Update agent](/api-reference/agents/update-agent) # Extract Structured Insights from AI Phone Calls Source: https://docs.usesimple.ai/analyzers Configure post-call analyzers that turn Simple AI conversations into structured fields for reporting, automation, quality review, and integrations. Analyzers let you run post-call analysis on interactions so you can extract structured information from transcripts and call data. You can use them to identify outcomes, classify conversations, and make call review more consistent. ## What Analyzers Do You can use analyzers to: * extract structured data from completed calls * classify calls by outcome, sentiment, or intent * power reporting and downstream workflows * review call quality more consistently ## How to Add Analyzers You can create analyzers in the dashboard and then enable them for the relevant agents, or make them always enabled for all agents. When you create an analyzer, you define: * a title * a prompt * an output type * which agents the analyzer should run on This is useful when you want to standardize the way insights are extracted across many calls. ## Output Types Analyzers can return different kinds of outputs depending on what you want to capture. Available output types include: * free text * number * boolean * enum * structured data Choose the simplest output type that still gives you the result you need. For example, if you only need a yes or no answer, a boolean output is usually better than free text. ## How to Define Structured Data If you want an analyzer to return multiple fields in a consistent format, you can use structured data output. In the dashboard, the `Structured Data Fields` section lets you switch between `UI` and `Raw`. You can define structured output in two ways: * use the UI to add fields and set the type for each field * use raw text fields to define the structure manually In the UI view, you can add fields one by one and define: * the field name * the field type * a description * whether the field is required Available field types in structured output include: * string * number * boolean * object * array If you switch to Raw mode, you can define the same structure directly as JSON. The raw editor expects a JSON array of field definitions. For example: ```json theme={null} [ { "name": "customerName", "type": "string", "description": "The customer's full name", "required": true }, { "name": "issueResolved", "type": "boolean", "description": "Whether the customer's issue was resolved", "required": true } ] ``` Structured output also supports nested objects and arrays, which is useful when you need to capture more complex results in a predictable JSON structure. This is useful when you want to collect data in a format that is easier to review, filter, export, or use in downstream workflows. ## How Analyzers Work After a call is completed, Simple AI can run any analyzers associated with that interaction. If an analyzer is always enabled, it can run on calls across all agents. Otherwise, it runs only for the agents where it has been enabled. Analyzer results are stored with the call, which makes them available later for review, filtering, exports, and reporting. ## Rerun Analyzers on Previous Calls If you create a new analyzer or update the prompt or output you want, you can rerun that analyzer on previous calls. This is useful when: * you added a new analyzer and want to backfill older calls * you improved the analyzer prompt and want updated results * you want to reprocess a date range for reporting or QA When you rerun an analyzer, Simple AI can reprocess either eligible calls from a date range you select or an individual call when you want to refresh results for a specific interaction. ## How Reruns Work Reruns are supported for previous calls and can be applied across a date range or on an individual call. Depending on how you trigger the rerun, it may apply to: * a single call * all calls in the selected date range * calls associated with the agents where that analyzer is enabled If you are using date range reruns, it is a good idea to choose a clear range so you only reprocess the calls you actually want to update. ## Best Practices Analyzers work best when the prompt is very specific about what should be extracted and what format the answer should use. For example, instead of writing `Analyze whether this call went well`, it is usually better to write `Return true if the customer's issue was fully resolved during the call, otherwise return false`. If you are using structured outputs, define the fields as clearly as possible so the result is easier to use later. ## Video Demo ### Creating and Rerunning Analyzers