<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: labu lim</title>
    <description>The latest articles on DEV Community by labu lim (@labu_lim_2a258dda748603b5).</description>
    <link>https://dev.to/labu_lim_2a258dda748603b5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4045511%2Ff76ddc27-19c5-4a95-a72a-e10c4b105420.png</url>
      <title>DEV Community: labu lim</title>
      <link>https://dev.to/labu_lim_2a258dda748603b5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/labu_lim_2a258dda748603b5"/>
    <language>en</language>
    <item>
      <title>No code, deploy ai agent in 5 mins</title>
      <dc:creator>labu lim</dc:creator>
      <pubDate>Sat, 25 Jul 2026 02:41:55 +0000</pubDate>
      <link>https://dev.to/labu_lim_2a258dda748603b5/no-code-deploy-ai-agent-in-5-mins-1bel</link>
      <guid>https://dev.to/labu_lim_2a258dda748603b5/no-code-deploy-ai-agent-in-5-mins-1bel</guid>
      <description>&lt;h3&gt;
  
  
  The problem we started with
&lt;/h3&gt;

&lt;p&gt;Most small businesses still handle phone calls the old way: a human answers, or a menu tree routes the caller to a department. If it's after hours, the call goes to voicemail. If the customer speaks a language the team doesn't cover, the call drops. If the issue needs two departments, the customer repeats themselves twice.&lt;/p&gt;

&lt;p&gt;We wanted to build an AI agent that could take over those calls — not as a chatbot on a website, but as a real-time voice agent on the phone. And we wanted it to work in 70+ languages without building a separate model for each one.&lt;/p&gt;

&lt;p&gt;The result is &lt;a href="https://ringbot.ai" rel="noopener noreferrer"&gt;RingBot&lt;/a&gt;, an Agent-as-a-Service platform. This post is a short technical walkthrough of what we learned building it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What "real-time voice" actually means
&lt;/h3&gt;

&lt;p&gt;A traditional voice bot works like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Speech-to-text (STT) transcribes the audio&lt;/li&gt;
&lt;li&gt;An LLM generates a text response&lt;/li&gt;
&lt;li&gt;Text-to-speech (TTS) reads it back&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That works, but the latency is noticeable. Every step adds 500ms–1s, and the conversation feels robotic.&lt;/p&gt;

&lt;p&gt;Real-time voice models like GPT Realtime, Gemini Live, and Grok Voice use an end-to-end audio pipeline. The model listens to raw audio and generates audio back directly, without going through text in the middle. That cuts latency dramatically and makes turn-taking feel natural.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why we use multiple models
&lt;/h3&gt;

&lt;p&gt;We built RingBot to be model-agnostic. Each real-time model has trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT Realtime&lt;/strong&gt; is strong at following instructions and handling complex multi-turn tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini Live&lt;/strong&gt; is excellent across many languages and has a very natural voice persona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grok Voice&lt;/strong&gt; gives us a different latency/cost profile and a distinct voice character.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of betting on one model, we route calls to the best model for the job. A caller can even switch models mid-conversation if that improves the experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architecture in four pieces
&lt;/h3&gt;

&lt;p&gt;Our production stack looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Telephony gateway&lt;/strong&gt; — handles SIP/WebRTC, streams audio to the agent, and manages call state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent orchestrator&lt;/strong&gt; — picks the right model, loads the business context, and runs the conversation loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge base&lt;/strong&gt; — semantic search over product docs, FAQs, and catalogs so the agent answers with live information, not stale scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handoff layer&lt;/strong&gt; — when a human needs to take over, it transfers the full transcript, intent summary, and customer context to the support agent.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The agent orchestrator is the interesting part. It doesn't just call a model. It also manages intent classification, routing rules, tool calls (e.g., check order status, book an appointment), and escalation thresholds.&lt;/p&gt;

&lt;h3&gt;
  
  
  The multilingual challenge
&lt;/h3&gt;

&lt;p&gt;The biggest surprise was that multilingual voice is now mostly a solved problem — for the model layer. The harder part is the surrounding system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Business context translation:&lt;/strong&gt; Your knowledge base is probably in one language. We use retrieval that works across languages, so a Spanish caller can get answers from English docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing intent across languages:&lt;/strong&gt; The agent must recognize that "quiero hablar con ventas" and "I want to speak to sales" mean the same thing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice persona consistency:&lt;/strong&gt; We want the same agent personality across languages, not a different voice for each locale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency on low-resource languages:&lt;/strong&gt; Some languages are slower on certain models. We monitor real-time latency per language and route accordingly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Context is the hard part
&lt;/h3&gt;

&lt;p&gt;Voice conversations move fast. If a caller says, "Actually, I want to change my appointment, not cancel it," the agent has to update its plan immediately. If it then transfers to a human, the receiving agent needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the original request was&lt;/li&gt;
&lt;li&gt;What changed&lt;/li&gt;
&lt;li&gt;What still needs to be done&lt;/li&gt;
&lt;li&gt;What tools the AI already called&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We solve this by maintaining a structured conversation state that travels with the call. The human agent sees a short summary plus the full transcript, instead of asking the customer to repeat the story.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we would do differently
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start with evaluation tooling.&lt;/strong&gt; It's hard to tell if a voice agent is "good" without listening to calls. We built automated evals for latency, turn-taking, and task completion, but we should have done it earlier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fail loud and fast.&lt;/strong&gt; A confused voice agent that loops forever is worse than one that immediately transfers to a human. We added escalation triggers based on repetition and confidence scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respect platform limits.&lt;/strong&gt; Each real-time API has its own quirks around audio formats, rate limits, and session duration. We abstracted these into a provider layer so callers don't need to know which model is running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The "no code" layer
&lt;/h3&gt;

&lt;p&gt;Under the hood, this is a fairly technical system. But the end user — a small business owner — shouldn't have to think about telephony, embeddings, or model selection. So we wrapped everything in a config flow: connect your business info, upload your docs, pick a phone number, and deploy.&lt;/p&gt;

&lt;p&gt;That's the Agent-as-a-Service idea. The user hires an agent, not a toolkit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it or ask questions
&lt;/h3&gt;

&lt;p&gt;If you're building with real-time voice APIs, I'd love to hear what you're running into. And if you want to see a production example, you can check out &lt;a href="https://ringbot.ai" rel="noopener noreferrer"&gt;RingBot&lt;/a&gt;.&lt;/p&gt;




</description>
      <category>showdev</category>
    </item>
    <item>
      <title>Building a Real-Time AI Voice Agent That Handles 70+ Languages</title>
      <dc:creator>labu lim</dc:creator>
      <pubDate>Sat, 25 Jul 2026 01:50:44 +0000</pubDate>
      <link>https://dev.to/labu_lim_2a258dda748603b5/building-a-real-time-ai-voice-agent-that-handles-70-languages-5e2j</link>
      <guid>https://dev.to/labu_lim_2a258dda748603b5/building-a-real-time-ai-voice-agent-that-handles-70-languages-5e2j</guid>
      <description>&lt;h3&gt;
  
  
  The problem we started with
&lt;/h3&gt;

&lt;p&gt;Most small businesses still handle phone calls the old way: a human answers, or a menu tree routes the caller to a department. If it's after hours, the call goes to voicemail. If the customer speaks a language the team doesn't cover, the call drops. If the issue needs two departments, the customer repeats themselves twice.&lt;/p&gt;

&lt;p&gt;We wanted to build an AI agent that could take over those calls — not as a chatbot on a website, but as a real-time voice agent on the phone. And we wanted it to work in 70+ languages without building a separate model for each one.&lt;/p&gt;

&lt;p&gt;The result is &lt;a href="https://ringbot.ai" rel="noopener noreferrer"&gt;RingBot&lt;/a&gt;, an Agent-as-a-Service platform. This post is a short technical walkthrough of what we learned building it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What "real-time voice" actually means
&lt;/h3&gt;

&lt;p&gt;A traditional voice bot works like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Speech-to-text (STT) transcribes the audio&lt;/li&gt;
&lt;li&gt;An LLM generates a text response&lt;/li&gt;
&lt;li&gt;Text-to-speech (TTS) reads it back&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That works, but the latency is noticeable. Every step adds 500ms–1s, and the conversation feels robotic.&lt;/p&gt;

&lt;p&gt;Real-time voice models like GPT Realtime, Gemini Live, and Grok Voice use an end-to-end audio pipeline. The model listens to raw audio and generates audio back directly, without going through text in the middle. That cuts latency dramatically and makes turn-taking feel natural.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why we use multiple models
&lt;/h3&gt;

&lt;p&gt;We built RingBot to be model-agnostic. Each real-time model has trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT Realtime&lt;/strong&gt; is strong at following instructions and handling complex multi-turn tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini Live&lt;/strong&gt; is excellent across many languages and has a very natural voice persona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grok Voice&lt;/strong&gt; gives us a different latency/cost profile and a distinct voice character.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of betting on one model, we route calls to the best model for the job. A caller can even switch models mid-conversation if that improves the experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  The architecture in four pieces
&lt;/h3&gt;

&lt;p&gt;Our production stack looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Telephony gateway&lt;/strong&gt; — handles SIP/WebRTC, streams audio to the agent, and manages call state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent orchestrator&lt;/strong&gt; — picks the right model, loads the business context, and runs the conversation loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge base&lt;/strong&gt; — semantic search over product docs, FAQs, and catalogs so the agent answers with live information, not stale scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handoff layer&lt;/strong&gt; — when a human needs to take over, it transfers the full transcript, intent summary, and customer context to the support agent.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The agent orchestrator is the interesting part. It doesn't just call a model. It also manages intent classification, routing rules, tool calls (e.g., check order status, book an appointment), and escalation thresholds.&lt;/p&gt;

&lt;h3&gt;
  
  
  The multilingual challenge
&lt;/h3&gt;

&lt;p&gt;The biggest surprise was that multilingual voice is now mostly a solved problem — for the model layer. The harder part is the surrounding system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Business context translation:&lt;/strong&gt; Your knowledge base is probably in one language. We use retrieval that works across languages, so a Spanish caller can get answers from English docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing intent across languages:&lt;/strong&gt; The agent must recognize that "quiero hablar con ventas" and "I want to speak to sales" mean the same thing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice persona consistency:&lt;/strong&gt; We want the same agent personality across languages, not a different voice for each locale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency on low-resource languages:&lt;/strong&gt; Some languages are slower on certain models. We monitor real-time latency per language and route accordingly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Context is the hard part
&lt;/h3&gt;

&lt;p&gt;Voice conversations move fast. If a caller says, "Actually, I want to change my appointment, not cancel it," the agent has to update its plan immediately. If it then transfers to a human, the receiving agent needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the original request was&lt;/li&gt;
&lt;li&gt;What changed&lt;/li&gt;
&lt;li&gt;What still needs to be done&lt;/li&gt;
&lt;li&gt;What tools the AI already called&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We solve this by maintaining a structured conversation state that travels with the call. The human agent sees a short summary plus the full transcript, instead of asking the customer to repeat the story.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we would do differently
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start with evaluation tooling.&lt;/strong&gt; It's hard to tell if a voice agent is "good" without listening to calls. We built automated evals for latency, turn-taking, and task completion, but we should have done it earlier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fail loud and fast.&lt;/strong&gt; A confused voice agent that loops forever is worse than one that immediately transfers to a human. We added escalation triggers based on repetition and confidence scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respect platform limits.&lt;/strong&gt; Each real-time API has its own quirks around audio formats, rate limits, and session duration. We abstracted these into a provider layer so callers don't need to know which model is running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The "no code" layer
&lt;/h3&gt;

&lt;p&gt;Under the hood, this is a fairly technical system. But the end user — a small business owner — shouldn't have to think about telephony, embeddings, or model selection. So we wrapped everything in a config flow: connect your business info, upload your docs, pick a phone number, and deploy.&lt;/p&gt;

&lt;p&gt;That's the Agent-as-a-Service idea. The user hires an agent, not a toolkit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it or ask questions
&lt;/h3&gt;

&lt;p&gt;If you're building with real-time voice APIs, I'd love to hear what you're running into. And if you want to see a production example, you can check out &lt;a href="https://ringbot.ai" rel="noopener noreferrer"&gt;RingBot&lt;/a&gt;.&lt;/p&gt;




</description>
      <category>showdev</category>
    </item>
  </channel>
</rss>
