cd /news/ai-tools/building-voice-ai-workflows-with-bra… Β· home β€Ί topics β€Ί ai-tools β€Ί article
[ARTICLE Β· art-41215] src=github.com β†— pub= topic=ai-tools verified=true sentiment=Β· neutral

Building Voice AI Workflows with Branches Instead of One Giant Prompt

Telnyx launched a Conversational Workflow for auto insurance claim intake that uses structured branches and backend tool calls instead of a single large prompt. The workflow collects caller, policy, vehicle, and incident details, branches for urgent cases, and creates claim records or fallback references via Express tool endpoints. This approach makes operational processes like first notice of loss easier to audit and can be reused for scheduling, support triage, and patient intake.

read4 min views1 publishedJun 26, 2026
Building Voice AI Workflows with Branches Instead of One Giant Prompt
Image: source
name build-conversational-workflow
title Build a Conversational Workflow
description Build a Telnyx Conversational Workflow for inbound auto insurance claim intake with structured branches, backend tools, and priority follow-up.
language nodejs
framework express
telnyx_products
channel

Build a Telnyx Conversational Workflow for inbound auto insurance first notice of loss intake. The workflow asks structured questions, branches for urgent cases, calls backend tools, and returns a claim or fallback reference to the caller.

This example is configured in the Telnyx Portal as a Conversational Workflow. The local Express app exposes webhook tool endpoints that Telnyx calls from workflow tool nodes:

Create Claim Intake Tool:POST /tools/create-claim-intake

Log Fallback Tool:POST /tools/log-claim-intake-fallback

Flag Priority Follow-Up Tool:POST /tools/flag-priority-follow-up

  Inbound PSTN call
        β”‚
        β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Telnyx Conversational       β”‚
  β”‚ Workflow                    β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚ nodes + branches
                β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Auto claim intake flow      β”‚
  β”‚ safety, caller, loss fields β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚ workflow tool calls
                β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ Express tool server         β”‚
  β”‚ /tools/create-claim-intake  β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚ JSON result
                β–Ό
     claim reference or fallback reference
  • Caller reaches the Telnyx phone number assigned to the workflow.
  • The workflow confirms this is a new auto claim.
  • The workflow checks for injury, danger, or unsafe vehicle status.
  • The workflow collects caller, policy, vehicle, and incident details.
  • The workflow calls create_claim_intake

when required fields are present. - The workflow calls log_claim_intake_fallback

when the intake cannot be completed. - The workflow calls flag_priority_follow_up

whenpriority_flag

is true.

Telnyx is an AI Communications Infrastructure platform that puts voice, AI, SIP, messaging, and programmable communications on one private, global network. Conversational Workflows let you build structured voice experiences with visible branches and tool calls, so operational processes like insurance claim intake are easier to audit than a single large prompt.

Insurance first notice of loss is a useful workflow pattern because it has realistic business constraints:

  • the caller may be stressed
  • the workflow must collect specific fields
  • urgent cases need early branching
  • backend records should only be created after required information is present
  • the voice experience must not promise coverage, payment, repairs, liability, legal advice, or medical advice

The same structure can be reused for scheduling, support triage, lead qualification, patient intake, and service dispatch.

Copy .env.example

to .env

and fill in:

Variable Type Example Required Description Where to get it
TELNYX_API_KEY
string
KEY_your_telnyx_api_key_here
no Telnyx API key for Portal/API automation; the local mock tool server does not call Telnyx directly

CLAIM_TOOL_SECRET

string

dev-secret

yesx-tool-secret

header from Telnyx workflow toolsPORT

number

8787

git clone https://github.com/team-telnyx/telnyx-code-examples.git
cd telnyx-code-examples/build-conversational-workflow-nodejs
cp .env.example .env    # fill in CLAIM_TOOL_SECRET
npm install
npm test
node server.js          # starts on http://localhost:8787

Expose your local server:

ngrok http 8787

In the

Telnyx Portal, create a Conversational Workflow namedauto claim intake conversational workflow

. - Build the nodes and branches from

GUIDE.md. - Configure tool nodes with your ngrok base URL:

POST https://<id>.ngrok.io/tools/create-claim-intake

POST https://<id>.ngrok.io/tools/log-claim-intake-fallback

POST https://<id>.ngrok.io/tools/flag-priority-follow-up

Add the shared header to each tool:

x-tool-secret: dev-secret

Assign an inbound Telnyx phone number to the workflow and call it.

Creates a mock claim intake when the workflow has collected required fields.

curl -X POST http://localhost:8787/tools/create-claim-intake \
  -H "content-type: application/json" \
  -H "x-tool-secret: dev-secret" \
  -d '{
    "caller_name": "jane sample",
    "caller_phone": "+15551234567",
    "loss_type": "auto",
    "loss_date": "2026-06-15",
    "loss_location": "mission street and 5th street, san francisco",
    "loss_description": "rear-ended while stopped",
    "priority_flag": false,
    "consent_to_continue": true
  }'

Response:

{
  "success": true,
  "claim_intake_id": "aci_123",
  "priority_flag": false,
  "next_step": "claims team follow-up"
}

Records a fallback when the caller is misdirected, information is incomplete, or the primary tool cannot be used.

Creates a mock priority follow-up task for urgent cases.

Health check endpoint for monitoring.

curl http://localhost:8787/health

Response:

{
  "status": "ok",
  "service": "claim_intake_tools"
}
Issue Cause Fix
401 {"success":false,"error":"unauthorized"}
x-tool-secret is missing or does not match CLAIM_TOOL_SECRET .
Add the same x-tool-secret header to each Telnyx workflow tool node and restart the server after editing .env .
422 {"error":"missing_required_fields"}
The workflow called a tool before required fields were collected. Check workflow.json and only call create_claim_intake after the minimum field check.
Tool call never reaches the server Local server is not publicly reachable. Run ngrok http 8787 and use the HTTPS URL in each workflow tool node.
Caller receives an unsupported promise Workflow instructions or node copy are too broad. Keep the workflow focused on intake and avoid coverage, payment, liability, repair, legal, or medical decisions.
Workflow graph breaks during editing A node points to a missing node or tool. Run npm test to validate workflow.json .

AI Insurance Claims Intake Voice (Python)- voice agent for insurance claim intakeBuild a Voice AI Agent (Node.js)- answer calls and generate replies with Telnyx InferenceRoute Phone Calls to AI Agent (Node.js)- route inbound calls to an AI agentAI Assistant Multi Tool (Python)- tool-calling pattern for AI assistants

── more in #ai-tools 4 stories Β· sorted by recency
── more on @telnyx 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/building-voice-ai-wo…] indexed:0 read:4min 2026-06-26 Β· β€”