<?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: Riya Tewari</title>
    <description>The latest articles on DEV Community by Riya Tewari (@tewaririya_rt).</description>
    <link>https://dev.to/tewaririya_rt</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%2F4079174%2Fa7f9c100-7976-4710-ac88-9708e1e7822a.png</url>
      <title>DEV Community: Riya Tewari</title>
      <link>https://dev.to/tewaririya_rt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tewaririya_rt"/>
    <language>en</language>
    <item>
      <title>Building Aira: From a Voice Assistant to Learning What I'm Capable Of</title>
      <dc:creator>Riya Tewari</dc:creator>
      <pubDate>Sat, 15 Aug 2026 15:46:56 +0000</pubDate>
      <link>https://dev.to/tewaririya_rt/building-aira-from-a-voice-assistant-to-learning-what-im-capable-of-5da9</link>
      <guid>https://dev.to/tewaririya_rt/building-aira-from-a-voice-assistant-to-learning-what-im-capable-of-5da9</guid>
      <description>&lt;p&gt;When I signed up for &lt;strong&gt;VoiceForBharat&lt;/strong&gt;, I honestly had no idea what I was getting myself into.&lt;/p&gt;

&lt;p&gt;I remember looking at the project and thinking:&lt;/p&gt;

&lt;p&gt;"What have I done? Am I even going to be able to build this?"&lt;/p&gt;

&lt;p&gt;Voice agents, AI models, APIs, databases, telephony, memory, backend systems...&lt;/p&gt;

&lt;p&gt;There were so many things I didn't know.&lt;/p&gt;

&lt;p&gt;And if I'm being completely honest, in the beginning, it felt *really difficult.&lt;/p&gt;

&lt;p&gt;I didn't know everything.&lt;/p&gt;

&lt;p&gt;I didn't even know if I was capable of building something like this.&lt;/p&gt;

&lt;p&gt;But I decided to start anyway.&lt;/p&gt;

&lt;p&gt;And somewhere between the first error and the hundredth fix, I realized something:&lt;/p&gt;

&lt;p&gt;I wasn't just building a project. I was learning how to build one.&lt;/p&gt;

&lt;p&gt;That project slowly became Aira.&lt;/p&gt;

&lt;p&gt;🤍 It Started With Doubt&lt;/p&gt;

&lt;p&gt;When you look at a finished project, it is very easy to forget what it looked like at the beginning.&lt;/p&gt;

&lt;p&gt;You see the interface.&lt;/p&gt;

&lt;p&gt;The voice assistant.&lt;/p&gt;

&lt;p&gt;The memory system.&lt;/p&gt;

&lt;p&gt;The phone calls.&lt;/p&gt;

&lt;p&gt;The analytics.&lt;/p&gt;

&lt;p&gt;The backend.&lt;/p&gt;

&lt;p&gt;And it looks like everything was planned from day one.&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;There were so many moments where I had absolutely no idea what I was doing.&lt;/p&gt;

&lt;p&gt;I had to learn things while building them.&lt;/p&gt;

&lt;p&gt;I had to break things.&lt;/p&gt;

&lt;p&gt;Fix them.&lt;/p&gt;

&lt;p&gt;Break them again.&lt;/p&gt;

&lt;p&gt;Search for answers.&lt;/p&gt;

&lt;p&gt;Read documentation.&lt;/p&gt;

&lt;p&gt;Understand errors.&lt;/p&gt;

&lt;p&gt;Try something.&lt;/p&gt;

&lt;p&gt;Realize it was wrong.&lt;/p&gt;

&lt;p&gt;Try again.&lt;/p&gt;

&lt;p&gt;And slowly, things started making sense.&lt;/p&gt;

&lt;p&gt;That's when I understood something I think is important for anyone who is learning technology:&lt;/p&gt;

&lt;p&gt;You don't always need to know how to build something before you start. Sometimes you learn how to build it by actually trying to build it.&lt;/p&gt;

&lt;h5&gt;
  
  
  Taking the Risk
&lt;/h5&gt;

&lt;p&gt;One thing this project taught me is that you can spend a lot of time asking yourself:&lt;/p&gt;

&lt;p&gt;"Am I ready?"&lt;/p&gt;

&lt;p&gt;But sometimes, you'll never feel ready.&lt;/p&gt;

&lt;p&gt;If I had waited until I knew enough about AI, voice systems, backend development, APIs, telephony, and everything else involved in this project, I probably wouldn't have started.&lt;/p&gt;

&lt;p&gt;And I definitely wouldn't have learned what I know now.&lt;/p&gt;

&lt;p&gt;There is something about taking a risk and saying:&lt;/p&gt;

&lt;p&gt;"I'll figure it out."&lt;/p&gt;

&lt;p&gt;That changes everything.&lt;/p&gt;

&lt;p&gt;Because until you actually try something difficult, you don't really know what you're capable of.&lt;/p&gt;

&lt;p&gt;You might think you have a certain limit.&lt;/p&gt;

&lt;p&gt;You might think you're "not good enough" at something.&lt;/p&gt;

&lt;p&gt;You might think someone else is naturally better at it.&lt;/p&gt;

&lt;p&gt;But sometimes the only thing separating you from that ability is the fact that you haven't given yourself the chance to learn it yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You have to push yourself far enough to discover your own limits.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And sometimes, you'll realize you don't have as many limits as you thought.&lt;/p&gt;

&lt;p&gt;So, What Exactly Is Aira?&lt;/p&gt;

&lt;p&gt;Aira is a &lt;strong&gt;multilingual voice assistant&lt;/strong&gt; designed to communicate naturally in Hindi, English, and Hinglish.&lt;/p&gt;

&lt;p&gt;But I didn't want it to be just:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User speaks → AI responds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted to build something that could actually interact with people and handle different parts of a conversation.&lt;/p&gt;

&lt;p&gt;Aira can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Have real-time voice conversations&lt;/li&gt;
&lt;li&gt; Remember relevant user information and preferences&lt;/li&gt;
&lt;li&gt; Use tools such as currency exchange&lt;/li&gt;
&lt;li&gt; Make outbound phone calls&lt;/li&gt;
&lt;li&gt; Escalate conversations when human help is needed&lt;/li&gt;
&lt;li&gt; Support specialist/human handoff&lt;/li&gt;
&lt;li&gt; Track call outcomes&lt;/li&gt;
&lt;li&gt; Store conversations and memories&lt;/li&gt;
&lt;li&gt; Keep different users' data separated&lt;/li&gt;
&lt;li&gt; Provide a web interface to manage and interact with the system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And building each of those features taught me something different.&lt;/p&gt;

&lt;h2&gt;
  
  
  Giving Aira Memory
&lt;/h2&gt;

&lt;p&gt;One of the first things I wanted was for Aira to remember users.&lt;/p&gt;

&lt;p&gt;A typical chatbot can answer a question, but the next conversation often starts from zero.&lt;/p&gt;

&lt;p&gt;I wanted Aira to provide a more continuous experience.&lt;/p&gt;

&lt;p&gt;User information, preferences, facts, and conversations can be stored so Aira can use relevant context in future interactions.&lt;/p&gt;

&lt;p&gt;I built the memory layer using &lt;strong&gt;SQLite&lt;/strong&gt;, with a backend API handling access to that information.&lt;/p&gt;

&lt;p&gt;The frontend also has a dedicated &lt;strong&gt;Your Space&lt;/strong&gt; section where users can view:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Saved information&lt;/li&gt;
&lt;li&gt;Language preferences&lt;/li&gt;
&lt;li&gt;Stored facts&lt;/li&gt;
&lt;li&gt;Previous conversations&lt;/li&gt;
&lt;li&gt;Conversation summaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users can also choose to &lt;strong&gt;Forget Me&lt;/strong&gt;, which removes the stored memory associated with their account.&lt;/p&gt;

&lt;p&gt;But building memory taught me something beyond databases.&lt;/p&gt;

&lt;p&gt;It made me think about how important &lt;strong&gt;context&lt;/strong&gt; is.&lt;/p&gt;

&lt;p&gt;A system can be powerful, but if it doesn't understand the right context, it can still behave incorrectly.&lt;/p&gt;

&lt;p&gt;And that became even more obvious when I started testing multiple users.&lt;/p&gt;

&lt;h2&gt;
  
  
  One User Is Not Every User
&lt;/h2&gt;

&lt;p&gt;This became one of the most important debugging challenges.&lt;/p&gt;

&lt;p&gt;At one point, logging in with a different account could still result in Aira using information from the previous user.&lt;/p&gt;

&lt;p&gt;A new user shouldn't see someone else's memories.&lt;/p&gt;

&lt;p&gt;Aira shouldn't call a new user by someone else's name.&lt;/p&gt;

&lt;p&gt;So I had to trace the entire flow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signup → Login → User Identity → Backend User ID → Memory → Conversations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each account has its own &lt;code&gt;user_id&lt;/code&gt;, and frontend requests use that identity when fetching memory and conversation data.&lt;/p&gt;

&lt;p&gt;The dashboard and &lt;strong&gt;Your Space&lt;/strong&gt; pages now load information specifically for the currently logged-in user.&lt;/p&gt;

&lt;p&gt;It was frustrating to debug.&lt;/p&gt;

&lt;p&gt;But it taught me one of the most important lessons of this project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting a feature to work is one thing. Getting it to work correctly is another.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Turning Aira Into an Agent
&lt;/h1&gt;

&lt;p&gt;Aira isn't limited to generating conversational responses.&lt;/p&gt;

&lt;p&gt;I also added tools that allow the assistant to perform actual tasks.&lt;/p&gt;

&lt;p&gt;One example is the &lt;strong&gt;currency exchange tool&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of simply guessing an exchange rate, Aira can call an external exchange-rate API and return the result conversationally.&lt;/p&gt;

&lt;p&gt;The basic flow is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User asks → Aira determines whether a tool is needed → Tool runs → Aira explains the result&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was one of the first moments where Aira started feeling less like a chatbot and more like an &lt;strong&gt;agent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Making Aira Call People&lt;/p&gt;

&lt;p&gt;Then came one of the biggest steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outbound calling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I connected Aira with &lt;strong&gt;LiveKit's telephony infrastructure&lt;/strong&gt; so the assistant could participate in actual phone conversations.&lt;/p&gt;

&lt;p&gt;And honestly, this was one of those moments where the project suddenly felt very different.&lt;/p&gt;

&lt;p&gt;A voice assistant inside a browser is one thing.&lt;/p&gt;

&lt;p&gt;An AI assistant that can actually participate in a phone call feels much closer to something that could exist in the real world.&lt;/p&gt;

&lt;p&gt;But with that came a whole new set of challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Call connection&lt;/li&gt;
&lt;li&gt;Agent dispatch&lt;/li&gt;
&lt;li&gt;Telephony configuration&lt;/li&gt;
&lt;li&gt;Voice latency&lt;/li&gt;
&lt;li&gt;Conversation flow&lt;/li&gt;
&lt;li&gt;Call completion&lt;/li&gt;
&lt;li&gt;Failure handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And once Aira could make calls, I had another question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I know whether those calls actually worked?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Making Calls Measurablev
&lt;/h2&gt;

&lt;p&gt;So I added &lt;strong&gt;call outcome tracking&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Calls can now be categorized as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Successful&lt;/li&gt;
&lt;li&gt;Failed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend stores these outcomes, while the dashboard retrieves the data for analytics.&lt;/p&gt;

&lt;p&gt;The dashboard can show:&lt;/p&gt;

&lt;h3&gt;
  
  
  Total Calls
&lt;/h3&gt;

&lt;p&gt;The number of calls Aira has handled.&lt;/p&gt;

&lt;h3&gt;
  
  
  Successful Calls
&lt;/h3&gt;

&lt;p&gt;Calls that reached a successful outcome.&lt;/p&gt;

&lt;h3&gt;
  
  
  Failed Calls
&lt;/h3&gt;

&lt;p&gt;Calls that didn't complete successfully.&lt;/p&gt;

&lt;p&gt;The analytics also refresh periodically so the dashboard can reflect updated call data without requiring a manual refresh.&lt;/p&gt;

&lt;p&gt;This was an important shift.&lt;/p&gt;

&lt;p&gt;I wasn't just building something that &lt;strong&gt;works&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I was building something that could be &lt;strong&gt;observed and measured&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowing When AI Should Step Aside
&lt;/h2&gt;

&lt;p&gt;Another thing I learned while building Aira is that making AI do everything isn't necessarily the goal.&lt;/p&gt;

&lt;p&gt;Sometimes, the best thing an AI can do is recognize:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This needs a human."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I added an &lt;strong&gt;escalation system&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When a conversation requires human help, Aira can generate structured information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Reason&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;li&gt;Urgency&lt;/li&gt;
&lt;li&gt;Language&lt;/li&gt;
&lt;li&gt;Preferred follow-up&lt;/li&gt;
&lt;li&gt;Status&lt;/li&gt;
&lt;li&gt;Timestamp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These escalation requests can then be reviewed through the &lt;strong&gt;Aira Support&lt;/strong&gt; dashboard.&lt;/p&gt;

&lt;p&gt;Instead of simply saying:&lt;/p&gt;

&lt;p&gt;"Please contact support."&lt;/p&gt;

&lt;p&gt;the system creates structured information that a human can actually understand and act on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Specialist Handoff
&lt;/h2&gt;

&lt;p&gt;The escalation system also made me think beyond simply sending everything to "support."&lt;/p&gt;

&lt;p&gt;Different problems require different kinds of expertise.&lt;/p&gt;

&lt;p&gt;So I started working on &lt;strong&gt;specialist handoff&lt;/strong&gt; — allowing Aira to recognize when a conversation is better handled by someone with specific expertise.&lt;/p&gt;

&lt;p&gt;This is one of the ideas I find most interesting about agentic systems.&lt;/p&gt;

&lt;p&gt;The goal isn't to make AI do absolutely everything.&lt;/p&gt;

&lt;p&gt;It's to make AI understand:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I can handle this."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"This would be better handled by someone else."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Knowing when to act is important.&lt;/p&gt;

&lt;p&gt;Knowing when to step aside is equally important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Interface
&lt;/h2&gt;

&lt;p&gt;All of these systems needed somewhere to live.&lt;/p&gt;

&lt;p&gt;So I built a web interface using &lt;strong&gt;Next.js&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The application includes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Login
&lt;/h3&gt;

&lt;p&gt;Users can sign into their Aira account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Signup
&lt;/h3&gt;

&lt;p&gt;New users can create an account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dashboard
&lt;/h3&gt;

&lt;p&gt;The main place to view Aira analytics and access different features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your Space
&lt;/h3&gt;

&lt;p&gt;A personal area containing memories, preferences, and previous conversations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Support
&lt;/h3&gt;

&lt;p&gt;A place where escalation requests can be reviewed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice Interface
&lt;/h3&gt;

&lt;p&gt;The main interaction area where users can actually talk to Aira.&lt;/p&gt;

&lt;p&gt;I also wanted the interface to reflect Aira's personality — &lt;strong&gt;soft, warm, and minimal&lt;/strong&gt;, rather than looking like a generic developer dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Under the Hood?
&lt;/h2&gt;

&lt;p&gt;The current architecture looks roughly like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Next.js&lt;br&gt;
→ React&lt;br&gt;
→ Tailwind CSS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Python&lt;br&gt;
→ FastAPI&lt;br&gt;
→ SQLite&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Voice Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Deepgram for speech recognition&lt;br&gt;
→ Gemini for reasoning and conversation&lt;br&gt;
→ Murf Falcon for voice generation&lt;br&gt;
→ LiveKit for real-time voice and telephony&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional Systems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;→ Memory&lt;br&gt;
→ Conversations&lt;br&gt;
→ Tool calling&lt;br&gt;
→ Outbound calls&lt;br&gt;
→ Escalations&lt;br&gt;
→ Call analytics&lt;br&gt;
→ Specialist handoff&lt;/p&gt;

&lt;p&gt;At its core, the voice flow looks like:&lt;/p&gt;

&lt;p&gt;** User speaks → Deepgram STT → Gemini → Murf Falcon TTS → LiveKit → User hears the response**&lt;/p&gt;

&lt;p&gt;So Aira isn't just one model sitting behind a microphone.&lt;/p&gt;

&lt;p&gt;It's a collection of systems working together.&lt;/p&gt;

&lt;p&gt;And that is probably one of the biggest technical lessons this project gave me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI isn't just the model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's everything you build around it.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Things That Almost Worked
&lt;/h2&gt;

&lt;p&gt;Some of the most valuable parts of this project weren't the flashy features.&lt;/p&gt;

&lt;p&gt;They were the things that &lt;strong&gt;almost worked&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A new user could log in successfully...&lt;/p&gt;

&lt;p&gt;but Aira might still remember the previous user's name.&lt;/p&gt;

&lt;p&gt;The support page could exist...&lt;/p&gt;

&lt;p&gt;but the support button could overlap with another UI element.&lt;/p&gt;

&lt;p&gt;The call could happen...&lt;/p&gt;

&lt;p&gt;but I still needed a reliable way to know whether it actually succeeded.&lt;/p&gt;

&lt;p&gt;The backend could store information...&lt;/p&gt;

&lt;p&gt;but the frontend needed to retrieve only the current user's data.&lt;/p&gt;

&lt;p&gt;These problems were frustrating.&lt;/p&gt;

&lt;p&gt;But every one of them taught me something.&lt;/p&gt;

&lt;p&gt;I learned that building an AI product isn't simply:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Add AI → Done."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's also:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity + State + APIs + Databases + UI + Error Handling + Observability + User Experience.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Learning to Build Responsibly
&lt;/h2&gt;

&lt;p&gt;While building the project, I also became much more conscious about handling credentials properly.&lt;/p&gt;

&lt;p&gt;Services like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LiveKit&lt;/li&gt;
&lt;li&gt;Murf&lt;/li&gt;
&lt;li&gt;Deepgram&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;all require credentials, and those keys shouldn't be hard-coded into the application or committed to GitHub.&lt;/p&gt;

&lt;p&gt;Aira uses environment variables for these secrets.&lt;/p&gt;

&lt;p&gt;The repository contains &lt;code&gt;.env.example&lt;/code&gt; files that show the expected variable names without exposing actual secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never publish API keys, phone numbers, caller data, or other private information.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These may seem like small implementation details, but they matter when moving from experimenting with code to building actual applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  Want to Build Your Own Voice Agent?
&lt;/h2&gt;

&lt;p&gt;If you want to build something similar to Aira, you don't need to start completely from scratch.&lt;/p&gt;

&lt;p&gt;I built Aira on top of the &lt;strong&gt;Murf LiveKit Starter&lt;/strong&gt;, which provides the basic real-time voice pipeline and can then be extended with your own personality, tools, memory, UI, and agent logic.&lt;/p&gt;
&lt;h2&gt;
  
  
  Explore the Code
&lt;/h2&gt;

&lt;p&gt;The complete project is publicly available on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/tewaririya117-ops/murf-livekit-starter" rel="noopener noreferrer"&gt;Aira — GitHub Repository&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can inspect the code, experiment with the architecture, and build your own use case on top of it.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Prerequisites
&lt;/h2&gt;

&lt;p&gt;You'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;Node.js 18+&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;uv&lt;/code&gt; for Python package management&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pnpm&lt;/code&gt; for frontend dependencies&lt;/li&gt;
&lt;li&gt;A LiveKit Cloud project&lt;/li&gt;
&lt;li&gt;API credentials for Murf, Deepgram, and your chosen LLM&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  2. Clone the Repository
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/tewaririya117-ops/murf-livekit-starter.git
&lt;span class="nb"&gt;cd &lt;/span&gt;murf-livekit-starter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  3. Configure Environment Variables
&lt;/h2&gt;

&lt;p&gt;The project keeps credentials in environment files rather than hard-coding them into the application.&lt;/p&gt;

&lt;p&gt;The important variables include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LIVEKIT_URL
LIVEKIT_API_KEY
LIVEKIT_API_SECRET
MURF_API_KEY
DEEPGRAM_API_KEY
GOOGLE_API_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depending on the LLM configuration, an &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; can also be used.&lt;/p&gt;

&lt;p&gt;Create your environment files from the provided &lt;code&gt;.env.example&lt;/code&gt; templates in the &lt;code&gt;backend&lt;/code&gt; and &lt;code&gt;frontend&lt;/code&gt; directories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never publish your actual API keys, phone numbers, caller information, or other private data to GitHub or your blog.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Install Backend Dependencies
&lt;/h2&gt;

&lt;p&gt;From the backend directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;backend
uv &lt;span class="nb"&gt;sync
&lt;/span&gt;uv run python src/agent.py download-files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The backend contains the main voice agent and connects the speech-to-text, LLM, and text-to-speech components.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Install Frontend Dependencies
&lt;/h2&gt;

&lt;p&gt;From the frontend directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
pnpm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend is built with Next.js and provides the interface through which users connect to the voice agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Run the Project
&lt;/h2&gt;

&lt;p&gt;You can either use the provided startup script or run the services separately.&lt;/p&gt;

&lt;p&gt;On macOS/Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x start_app.sh
./start_app.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or run the components separately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;livekit-server &lt;span class="nt"&gt;--dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, in another terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;backend
uv run python src/agent.py dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And in another terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
pnpm dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once everything is running, open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Start a Conversation
&lt;/h2&gt;

&lt;p&gt;Open the frontend in your browser and click &lt;strong&gt;Start talking&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Allow microphone access when your browser asks for permission and start speaking.&lt;/p&gt;

&lt;p&gt;The basic voice pipeline works like this:&lt;/p&gt;

&lt;p&gt;** User speaks → Deepgram STT → LLM → Murf Falcon TTS → LiveKit → User hears the response**&lt;/p&gt;

&lt;p&gt;LiveKit handles the real-time audio transport while the backend agent coordinates the voice pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Customize the Agent
&lt;/h2&gt;

&lt;p&gt;Once the starter project is running, the interesting part begins.&lt;/p&gt;

&lt;p&gt;The system prompt can be changed in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;backend/src/agent.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows you to turn the starter into different types of agents, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer support&lt;/li&gt;
&lt;li&gt;Language tutor&lt;/li&gt;
&lt;li&gt;Receptionist&lt;/li&gt;
&lt;li&gt;Personal assistant&lt;/li&gt;
&lt;li&gt;Domain-specific voice agent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Aira, I went much further than changing the prompt. I added memory, tools, outbound calling, user-specific data handling, escalation, analytics, and specialist handoff around the core voice pipeline.&lt;/p&gt;

&lt;p&gt;That's the part that turned the starter into &lt;strong&gt;Aira&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Understand the Core Architecture
&lt;/h2&gt;

&lt;p&gt;At its simplest, a real-time voice agent needs four major pieces:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speech-to-Text (STT)&lt;/strong&gt;&lt;br&gt;
Converts the user's speech into text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM&lt;/strong&gt;&lt;br&gt;
Understands the request, reasons about the conversation, and generates a response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Text-to-Speech (TTS)&lt;/strong&gt;&lt;br&gt;
Converts the response back into natural-sounding speech.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-Time Transport&lt;/strong&gt;&lt;br&gt;
Moves audio between the user and the agent with low latency.&lt;/p&gt;

&lt;p&gt;In Aira, these pieces come together through:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deepgram + Gemini + Murf Falcon + LiveKit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And then the rest of the application is built around that core.&lt;/p&gt;

&lt;h1&gt;
  
  
  And Then I Realized Something About Learning
&lt;/h1&gt;

&lt;p&gt;The biggest thing Aira gave me wasn't just a project.&lt;/p&gt;

&lt;p&gt;It was proof that &lt;strong&gt;I can learn things I initially thought were beyond me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I started, I didn't know everything I needed to know.&lt;/p&gt;

&lt;p&gt;And honestly, I still don't.&lt;/p&gt;

&lt;p&gt;But I know much more now because I was willing to sit with the things I didn't understand.&lt;/p&gt;

&lt;p&gt;That's something I want to remember beyond this project.&lt;/p&gt;

&lt;p&gt;You don't become capable by waiting until you feel capable.&lt;/p&gt;

&lt;p&gt;You become capable by &lt;strong&gt;doing difficult things while you're still unsure of yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Take the risk.&lt;/p&gt;

&lt;p&gt;Start the project.&lt;/p&gt;

&lt;p&gt;Apply even when you don't feel completely ready.&lt;/p&gt;

&lt;p&gt;Try the thing that looks too difficult.&lt;/p&gt;

&lt;p&gt;Because sometimes you don't need confidence before taking the first step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sometimes confidence is what you gain after taking it.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Stop Letting Other People's Opinions Define Your Limits
&lt;/h1&gt;

&lt;p&gt;There is another lesson I've been thinking about throughout this journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop believing every opinion people have about you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People will have opinions.&lt;/p&gt;

&lt;p&gt;They'll decide what you're good at.&lt;/p&gt;

&lt;p&gt;What you're not good at.&lt;/p&gt;

&lt;p&gt;What you can do.&lt;/p&gt;

&lt;p&gt;What you probably can't do.&lt;/p&gt;

&lt;p&gt;How far they think you can go.&lt;/p&gt;

&lt;p&gt;And sometimes, without even realizing it, we start accepting those opinions as facts.&lt;/p&gt;

&lt;p&gt;But someone else's opinion is not a measurement of your potential.&lt;/p&gt;

&lt;p&gt;People can put a limit on you because that's how far &lt;strong&gt;they&lt;/strong&gt; can see.&lt;/p&gt;

&lt;p&gt;That doesn't mean that's how far &lt;strong&gt;you&lt;/strong&gt; can go.&lt;/p&gt;

&lt;p&gt;So listen to advice.&lt;/p&gt;

&lt;p&gt;Learn from people.&lt;/p&gt;

&lt;p&gt;Accept genuine criticism.&lt;/p&gt;

&lt;p&gt;But don't hand someone else the authority to decide what you're capable of.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You are not limited to someone else's imagination of you.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Your Mind Is a Lot Like an AI
&lt;/h3&gt;

&lt;p&gt;One of the things I find interesting about building AI is how much it makes me think about the human mind.&lt;/p&gt;

&lt;p&gt;An AI model learns from what it is given.&lt;/p&gt;

&lt;p&gt;The data.&lt;/p&gt;

&lt;p&gt;The examples.&lt;/p&gt;

&lt;p&gt;The patterns.&lt;/p&gt;

&lt;p&gt;The feedback.&lt;/p&gt;

&lt;p&gt;The training.&lt;/p&gt;

&lt;p&gt;And in a way, our minds work similarly.&lt;/p&gt;

&lt;p&gt;What we repeatedly feed ourselves matters.&lt;/p&gt;

&lt;p&gt;The thoughts we keep repeating.&lt;/p&gt;

&lt;p&gt;The people we constantly listen to.&lt;/p&gt;

&lt;p&gt;The things we tell ourselves.&lt;/p&gt;

&lt;p&gt;The challenges we expose ourselves to.&lt;/p&gt;

&lt;p&gt;The knowledge we choose to consume.&lt;/p&gt;

&lt;p&gt;They all shape the way we think.&lt;/p&gt;

&lt;p&gt;Humans are obviously far more complex than AI models, but the analogy still reminds me of something important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Be careful about what you repeatedly feed your mind.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Train it to question.&lt;/p&gt;

&lt;p&gt;Train it to learn.&lt;/p&gt;

&lt;p&gt;Train it to try again.&lt;/p&gt;

&lt;p&gt;Train it to see possibilities instead of automatically accepting limitations.&lt;/p&gt;

&lt;p&gt;Because what you repeatedly put into a system can influence what eventually comes out.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Aira Has Become
&lt;/h1&gt;

&lt;p&gt;When I look at the project now, it's very different from where it started.&lt;/p&gt;

&lt;p&gt;It began with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Let's make a voice assistant."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now it's closer to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Let's build an AI system that can interact, remember, act, communicate through phone calls, measure its performance, and know when to involve a human."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But somewhere along the way, it also became:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Let's see what I am actually capable of building."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that's probably my biggest takeaway.&lt;/p&gt;

&lt;p&gt;The interesting part of AI isn't always the model itself.&lt;/p&gt;

&lt;p&gt;It's everything you build &lt;strong&gt;around the model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The memory.&lt;/p&gt;

&lt;p&gt;The tools.&lt;/p&gt;

&lt;p&gt;The APIs.&lt;/p&gt;

&lt;p&gt;The user identity.&lt;/p&gt;

&lt;p&gt;The telephony.&lt;/p&gt;

&lt;p&gt;The analytics.&lt;/p&gt;

&lt;p&gt;The escalation logic.&lt;/p&gt;

&lt;p&gt;The interface.&lt;/p&gt;

&lt;p&gt;And the person behind the screen who is willing to keep learning when things don't work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsx1ci9d5ltbm1eszv0wl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsx1ci9d5ltbm1eszv0wl.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsvb9xkwzaf1kqn5vwy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsvb9xkwzaf1kqn5vwy8.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8t450euz8pw01togbyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8t450euz8pw01togbyf.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgd8324qwpwo28gjes88r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgd8324qwpwo28gjes88r.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsyuu971dr1ukxttnn9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsyuu971dr1ukxttnn9m.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs9gst24kmbt6reafhlcf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs9gst24kmbt6reafhlcf.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F69upj0gx1ohkouktvm99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F69upj0gx1ohkouktvm99.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🤍 What's Next?
&lt;/h1&gt;

&lt;p&gt;Aira is still a work in progress.&lt;/p&gt;

&lt;p&gt;There are many things I want to improve next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better conversation summaries&lt;/li&gt;
&lt;li&gt;More useful tools&lt;/li&gt;
&lt;li&gt;More robust specialist routing&lt;/li&gt;
&lt;li&gt;Stronger authentication&lt;/li&gt;
&lt;li&gt;Improved analytics&lt;/li&gt;
&lt;li&gt;Better error handling&lt;/li&gt;
&lt;li&gt;More natural multilingual conversations&lt;/li&gt;
&lt;li&gt;A more polished mobile experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is still so much I don't know.&lt;/p&gt;

&lt;p&gt;And strangely, I'm not as scared of that anymore.&lt;/p&gt;

&lt;p&gt;Because now I know that &lt;strong&gt;not knowing something doesn't mean I can't learn it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's probably the biggest difference between the person who started this project and the person writing this blog.&lt;/p&gt;

&lt;p&gt;I started by asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can I actually do this?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now I'm asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What should I build next?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I think that's progress.&lt;/p&gt;

&lt;p&gt;From a basic voice agent to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory + Tools + Telephony + Analytics + Escalation + Human Handoff + A Complete Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But beyond all of that, Aira gave me something I didn't expect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A little more belief in myself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So if you're standing at the beginning of something and thinking:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"I don't know enough."&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"This looks too difficult."&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"What if I fail?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Maybe I'm not capable of doing this."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Start anyway.&lt;/p&gt;

&lt;p&gt;You don't have to know everything.&lt;/p&gt;

&lt;p&gt;You just have to be willing to learn the next thing.&lt;/p&gt;

&lt;p&gt;Take the risk.&lt;/p&gt;

&lt;p&gt;Push yourself.&lt;/p&gt;

&lt;p&gt;Build something that scares you a little.&lt;/p&gt;

&lt;p&gt;And don't let someone else's opinion become the boundary of your potential.&lt;/p&gt;

&lt;p&gt;Because you might be surprised by how capable you actually are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is Aira. 🤍&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And this is only the beginning.&lt;/p&gt;

&lt;p&gt;Built as part of &lt;strong&gt;10 Days of Voice Agents — VoiceForBharat Edition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;🇮🇳 &lt;strong&gt;Happy 80th Independence Day!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building for Bharat, learning for the future. 🤍&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #VoiceAI #GenerativeAI #AIAgents #VoiceForBharat #LiveKit #MurfAI #MurfFalcon #NextJS #Python #FastAPI
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>voiceai</category>
      <category>python</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
