<?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: Mrudula</title>
    <description>The latest articles on DEV Community by Mrudula (@mrudula_acb03913275b13940).</description>
    <link>https://dev.to/mrudula_acb03913275b13940</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%2F3741712%2F572ff663-d046-442c-88ce-d75f610c4d31.jpg</url>
      <title>DEV Community: Mrudula</title>
      <link>https://dev.to/mrudula_acb03913275b13940</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrudula_acb03913275b13940"/>
    <language>en</language>
    <item>
      <title>Misspoke</title>
      <dc:creator>Mrudula</dc:creator>
      <pubDate>Sat, 03 Oct 2026 07:22:16 +0000</pubDate>
      <link>https://dev.to/mrudula_acb03913275b13940/misspoke-3pbp</link>
      <guid>https://dev.to/mrudula_acb03913275b13940/misspoke-3pbp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;MisSpoke&lt;/strong&gt;, a voice-first AI language practice partner for a friend who wanted to get better at speaking without every conversation feeling like a grammar test.&lt;/p&gt;

&lt;p&gt;Most language-learning apps are great at vocabulary, streaks, and exercises, but speaking is a different problem. You can know what a sentence means and still completely freeze when you actually have to say it.&lt;/p&gt;

&lt;p&gt;So MisSpoke is built around conversation.&lt;/p&gt;

&lt;p&gt;You choose the language you're learning, your level, and the kind of tutor you want to talk to, then just start speaking. The tutor can be calm, casual, motivating, energetic, creative, or a few other personalities depending on what makes practicing less awkward.&lt;/p&gt;

&lt;p&gt;It also remembers the conversation, translates things when you get stuck, tracks corrections and recurring mistakes, and keeps the session moving instead of interrupting every five seconds with a red pen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://misspoke1.vercel.app" rel="noopener noreferrer"&gt;misspoke1.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A session is pretty simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose your native and target languages.&lt;/li&gt;
&lt;li&gt;Pick your level and tutor personality.&lt;/li&gt;
&lt;li&gt;Start a voice conversation.&lt;/li&gt;
&lt;li&gt;Ask for translations or explanations when you get stuck.&lt;/li&gt;
&lt;li&gt;MisSpoke keeps track of the conversation and learning signals throughout the session.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also fall back to text chat when voice isn't practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Mrudula-itsjuzme/speak134" rel="noopener noreferrer"&gt;Mrudula-itsjuzme/speak134&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository name is &lt;code&gt;speak134&lt;/code&gt;, but the project itself became &lt;strong&gt;MisSpoke&lt;/strong&gt; somewhere along the way. Naming things is apparently still one of the hardest problems in computer science 😭&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;MisSpoke is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Next.js 15&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;React 19&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs Conversational AI&lt;/strong&gt; for real-time voice conversations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter&lt;/strong&gt; for the language-model layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt; for authentication and storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IndexedDB&lt;/strong&gt; for local session state and learning memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion + Tailwind CSS&lt;/strong&gt; for the interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app has separate routes for chat, tutor-prompt generation, translation, UI translation, and session summaries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice-first practice
&lt;/h3&gt;

&lt;p&gt;ElevenLabs handles the conversational voice layer, so the learner can actually speak instead of turning language practice back into another typing exercise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tutor personalities
&lt;/h3&gt;

&lt;p&gt;The tutor behaviour changes depending on the learner's selected style.&lt;/p&gt;

&lt;p&gt;Current personalities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cheerful&lt;/li&gt;
&lt;li&gt;calm&lt;/li&gt;
&lt;li&gt;motivating&lt;/li&gt;
&lt;li&gt;intellectual&lt;/li&gt;
&lt;li&gt;creative&lt;/li&gt;
&lt;li&gt;casual&lt;/li&gt;
&lt;li&gt;empathetic&lt;/li&gt;
&lt;li&gt;energetic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The personality isn't just cosmetic. It changes how the tutor responds and how the practice session feels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Languages and translation
&lt;/h3&gt;

&lt;p&gt;MisSpoke supports multiple learning languages, including Spanish, French, Japanese, German, Italian, Korean, Mandarin, Hindi, Tamil, Telugu, Malayalam, and Kannada.&lt;/p&gt;

&lt;p&gt;If you get stuck mid-conversation, you can translate a tutor response rather than abandoning the session and opening another app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory
&lt;/h3&gt;

&lt;p&gt;This is one of the parts I cared about most.&lt;/p&gt;

&lt;p&gt;The app keeps track of things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;conversation history&lt;/li&gt;
&lt;li&gt;recurring mistakes&lt;/li&gt;
&lt;li&gt;vocabulary learned&lt;/li&gt;
&lt;li&gt;corrections&lt;/li&gt;
&lt;li&gt;confidence&lt;/li&gt;
&lt;li&gt;strengths and weaknesses&lt;/li&gt;
&lt;li&gt;session summaries&lt;/li&gt;
&lt;li&gt;recent practice patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of this learning state is persisted locally with IndexedDB, while Supabase handles account-level storage.&lt;/p&gt;

&lt;p&gt;That means the tutor doesn't have to behave like it has developed amnesia every time you refresh the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;A language tutor shouldn't have to be permanently tied to one model.&lt;/p&gt;

&lt;p&gt;Different models are better at different languages, accents, teaching styles, and kinds of reasoning. Keeping the model layer replaceable means I can experiment with open-weight models through the same application instead of rebuilding the product around one provider.&lt;/p&gt;

&lt;p&gt;That matters even more for language learning because the conversations can get surprisingly personal.&lt;/p&gt;

&lt;p&gt;People talk about their families, college, work, embarrassing mistakes, plans, opinions, and whatever random thing comes up while they're practicing.&lt;/p&gt;

&lt;p&gt;With open models and local inference, there's a path toward keeping far more of that processing on a device the learner controls.&lt;/p&gt;

&lt;p&gt;It also means the application can eventually work with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;locally running models&lt;/li&gt;
&lt;li&gt;offline inference&lt;/li&gt;
&lt;li&gt;fine-tuned language tutors&lt;/li&gt;
&lt;li&gt;region-specific models&lt;/li&gt;
&lt;li&gt;different models for different target languages&lt;/li&gt;
&lt;li&gt;custom correction behaviour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don't want MisSpoke to become a pretty UI glued permanently to one API.&lt;/p&gt;

&lt;p&gt;I want the AI itself to be something I can inspect, swap, adapt, and eventually run locally.&lt;/p&gt;

&lt;p&gt;That's the part of open AI that interests me most: &lt;strong&gt;the model becomes one component of the product rather than the product becoming dependent on the model provider.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building It for a Friend
&lt;/h2&gt;

&lt;p&gt;The idea came from a very normal problem: someone can understand English perfectly well and still hesitate when speaking because they're worried about getting something wrong.&lt;/p&gt;

&lt;p&gt;And telling someone to “just practice more” is spectacularly unhelpful.&lt;/p&gt;

&lt;p&gt;The goal with MisSpoke was to create somewhere you can mess up a sentence, try again, ask what a word means, change the topic completely, and never feel like you're wasting somebody else's time.&lt;/p&gt;

&lt;p&gt;I'm handing this version to a friend to try properly rather than evaluating it only from my side of the screen.&lt;/p&gt;

&lt;p&gt;The kind of reaction I'm hoping for is something painfully simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Wait, I can just keep talking to it? It doesn't stop me every time I say something wrong?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If that is how it feels to use, then it is doing what I wanted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Use of ElevenLabs
&lt;/h3&gt;

&lt;p&gt;MisSpoke uses &lt;strong&gt;ElevenLabs Conversational AI&lt;/strong&gt; as the core voice interface for real-time speaking practice.&lt;/p&gt;

&lt;p&gt;Voice isn't an extra feature here. Speaking is the actual product.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;There are still a bunch of things I want to improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better pronunciation scoring&lt;/li&gt;
&lt;li&gt;longer-term memory&lt;/li&gt;
&lt;li&gt;stronger progress analytics&lt;/li&gt;
&lt;li&gt;more natural correction timing&lt;/li&gt;
&lt;li&gt;offline/local model support&lt;/li&gt;
&lt;li&gt;cloud sync for learning history&lt;/li&gt;
&lt;li&gt;mobile polish&lt;/li&gt;
&lt;li&gt;testing different open-weight models for different languages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most interesting problem isn't making the tutor give the technically perfect response.&lt;/p&gt;

&lt;p&gt;It's figuring out &lt;strong&gt;when it should correct you, when it should explain something, and when it should just let you keep talking.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That feels much closer to how a good human language partner actually works.&lt;/p&gt;




&lt;p&gt;Built by &lt;a href="https://github.com/Mrudula-itsjuzme" rel="noopener noreferrer"&gt;Pedamallu Sai Mrudula&lt;/a&gt; and Meghana Kotharu.(&lt;a href="https://github.com/MeghanaKotharu25" rel="noopener noreferrer"&gt;https://github.com/MeghanaKotharu25&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://misspoke1.vercel.app" rel="noopener noreferrer"&gt;Try MisSpoke&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;a href="https://github.com/Mrudula-itsjuzme/speak134" rel="noopener noreferrer"&gt;View the code&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
