<?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: Ritik Verma</title>
    <description>The latest articles on DEV Community by Ritik Verma (@ritik_verma_a6c3b5117cfd5).</description>
    <link>https://dev.to/ritik_verma_a6c3b5117cfd5</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%2F4159117%2F259bc683-f0b0-4060-a232-db09a44c22a2.png</url>
      <title>DEV Community: Ritik Verma</title>
      <link>https://dev.to/ritik_verma_a6c3b5117cfd5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ritik_verma_a6c3b5117cfd5"/>
    <language>en</language>
    <item>
      <title>I Built an English Practice Coach for My Friend</title>
      <dc:creator>Ritik Verma</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:52:53 +0000</pubDate>
      <link>https://dev.to/ritik_verma_a6c3b5117cfd5/i-build-an-english-teaching-coach-for-my-friend-34bb</link>
      <guid>https://dev.to/ritik_verma_a6c3b5117cfd5/i-build-an-english-teaching-coach-for-my-friend-34bb</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;&lt;strong&gt;English Practice Assistant&lt;/strong&gt; is a personal English coach that remembers how you communicate.&lt;/p&gt;

&lt;p&gt;I built it for a friend of mine, Vikas. They read documentation and code easily and follow meetings without trouble, but freezes when they have to &lt;em&gt;speak&lt;/em&gt;: explaining a bug, giving a standup update, or disagreeing politely in a code review. They think in their first language and translate word for word, so the same mistakes keep coming back:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Yesterday I &lt;strong&gt;complete&lt;/strong&gt; the login page and &lt;strong&gt;fix&lt;/strong&gt; two bugs."&lt;br&gt;
"I will &lt;strong&gt;discuss about&lt;/strong&gt; the payment flow. Please &lt;strong&gt;do the needful&lt;/strong&gt; and &lt;strong&gt;revert back&lt;/strong&gt;."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They had tried chatbots and grammar apps. Chatbots would correct one sentence and then forget it. Grammar apps teach rules they mostly know already. Neither notices that past tense has gone wrong twelve times this month, and neither lets them practise the situations they actually face at work.&lt;/p&gt;

&lt;p&gt;So I built a practice partner that &lt;strong&gt;remembers&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Normal conversation&lt;/strong&gt;: chat about anything and get gentle, short feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workplace English&lt;/strong&gt;: some common scenarios, including daily standup, explaining a bug, code review, asking for help, manager update, client meeting, technical presentation, disagreeing professionally and project status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Targeted practice&lt;/strong&gt;: drills for grammar, natural English, vocabulary, professional tone, and &lt;strong&gt;"Recurring mistakes"&lt;/strong&gt;, a mode built from the learner's own error history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After every message the coach replies naturally, and a small collapsible feedback box shows the natural version, a one-line reason and the pattern name. Once a mistake type shows up twice, the app shows &lt;strong&gt;"Recurring pattern detected"&lt;/strong&gt;, and from then on that weakness goes into the coach's prompts so later sessions focus on it. The &lt;strong&gt;Progress&lt;/strong&gt; page shows recurring-mistake bars, skill indicators and recent sessions. Everything there comes from real data: with no data it says so, and with little data it says that too.&lt;/p&gt;

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

&lt;p&gt;🎥 &lt;strong&gt;Video demo:&lt;/strong&gt; [VIDEO LINK]&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://english-coaching-flutonp.onrender.com/" rel="noopener noreferrer"&gt;https://english-coaching-flutonp.onrender.com/&lt;/a&gt;&lt;br&gt;
 (choose &lt;em&gt;Google AI Studio&lt;/em&gt; in the provider dropdown and paste your own free key; it's kept in your browser for only 30 minutes)&lt;/p&gt;

&lt;p&gt;A quick walkthrough:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Normal conversation&lt;/strong&gt;: "Yesterday I go to a new cafe…" → feedback, then &lt;em&gt;Recurring pattern detected&lt;/em&gt; on the second past-tense slip.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workplace English → Daily standup&lt;/strong&gt;: "Please do the needful and revert back" → a professional rewrite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Targeted practice → Recurring mistakes&lt;/strong&gt;: the coach builds an exercise on past tense &lt;strong&gt;without being told&lt;/strong&gt;, because it remembered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress page&lt;/strong&gt;: past tense at the top of the recurring-mistakes chart.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ritikverma-chaibrew" rel="noopener noreferrer"&gt;
        ritikverma-chaibrew
      &lt;/a&gt; / &lt;a href="https://github.com/ritikverma-chaibrew/week1" rel="noopener noreferrer"&gt;
        week1
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;English Practice Assistant&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;A personal English coach that remembers how you communicate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;An AI-powered practice partner who understand English well but struggle to express ideas naturally at work. Gemma does the language intelligence; the app adds persistent memory of the learner's recurring mistakes and uses it to adapt every future session.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why I Built This&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;A friend of mine reads documentation and code easily and follows meetings, but freezes when they have to explain a bug or give a standup update. They translate directly from their first language, and the same mistakes keep coming back.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Generic chatbots correct a sentence and forget it. Grammar apps teach rules the learner already roughly knows. Neither notices that "past tense" has been wrong twelve times this month, and neither practices the learner's real situations: standups, code reviews, client meetings.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Idea&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Chatbot → AI coach → AI coach &lt;strong&gt;with memory&lt;/strong&gt; →…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ritikverma-chaibrew/week1" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;&lt;strong&gt;Open-weight model: Gemma.&lt;/strong&gt; All of the language work is done by Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; models. Each learner message triggers &lt;strong&gt;two Gemma calls in parallel&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;a &lt;strong&gt;conversational reply&lt;/strong&gt; in the coach persona, for the current mode or scenario, and&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;structured evaluation&lt;/strong&gt; returned as JSON (mistakes with category, original, correction, short explanation and a 0–100 score), validated with &lt;strong&gt;Pydantic v2&lt;/strong&gt;. If Gemma returns invalid JSON, the app retries once with a repair instruction, and if that also fails it shows "feedback unavailable" instead of crashing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Two ways to run Gemma, chosen from a dropdown in the app:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local inference with LM Studio&lt;/strong&gt;: download a Gemma instruct model (e.g. &lt;code&gt;gemma-3-4b&lt;/code&gt;), start LM Studio's server, pick the model and connect. Nothing leaves the laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google AI Studio&lt;/strong&gt;: bring your own API key for hosted Gemma (e.g. &lt;code&gt;gemma-4-31b-it&lt;/code&gt;). The key stays in the browser for 30 minutes and is then deleted automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both work because the provider talks to any &lt;strong&gt;OpenAI-compatible &lt;code&gt;/v1/chat/completions&lt;/code&gt; endpoint&lt;/strong&gt; that serves Gemma. vLLM or Ollama would also work. Gemma's chat template rejects a separate &lt;code&gt;system&lt;/code&gt; role and requires strictly alternating turns, so the app folds the instructions into the first user turn and strips Gemma's &lt;code&gt;&amp;lt;thought&amp;gt;&lt;/code&gt; blocks from replies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory makes it a coach rather than a chatbot.&lt;/strong&gt; Every detected mistake is stored in &lt;strong&gt;MongoDB Atlas&lt;/strong&gt; (&lt;code&gt;mistakes&lt;/code&gt; collection), and a &lt;code&gt;learning_profiles&lt;/code&gt; document keeps recurring-mistake counts, smoothed skill indicators and strengths. Any mistake type that appears &lt;strong&gt;2 or more times&lt;/strong&gt; counts as &lt;em&gt;recurring&lt;/em&gt;. The learner's top recurring weaknesses, together with only the last few messages (never the whole history and never database IDs), go into each prompt. That keeps prompts small enough for a &lt;strong&gt;4B model on a laptop&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    Browser --&amp;gt;|fetch| FastAPI
    FastAPI --&amp;gt; ConversationService
    ConversationService --&amp;gt;|prompt + recurring weaknesses| Gemma[Gemma: LM Studio or AI Studio]
    ConversationService --&amp;gt; MemoryService
    MemoryService --&amp;gt; MongoDB[(MongoDB Atlas)]
    MongoDB --&amp;gt;|learning profile| ConversationService&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Python 3.12, FastAPI, Pydantic v2, async PyMongo, httpx, Jinja2 and plain HTML/CSS/JS (no frontend framework). It has a Dockerfile and a Render blueprint. A deterministic mock provider and an in-memory database fake let all &lt;strong&gt;42 tests&lt;/strong&gt; run without a key or a database.&lt;/p&gt;

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

&lt;p&gt;My friend practises with sentences they're embarrassed by, and some of them are about real work: real bugs, real clients, real managers. &lt;strong&gt;An open-weight model means those sentences can stay on their own laptop.&lt;/strong&gt; With LM Studio running Gemma locally, there is no API account, no per-message cost and no third party reading their practice history.&lt;/p&gt;

&lt;p&gt;Building this made me realize that the interesting part of an AI application isn't always the model itself.&lt;br&gt;
Gemma provides the intelligence, but the memory, feedback loop, and product logic are what turn it into a useful learning tool.&lt;br&gt;
I'm still experimenting with it, and I'd love to see where local AI models can take this project next.&lt;/p&gt;

&lt;p&gt;Open also made the following possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to practise every day.&lt;/strong&gt; Language learning only works with repetition, and a metered closed API turns every practice sentence into a bill. A local Gemma model costs nothing per message.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model can be swapped without rewriting the app.&lt;/strong&gt; The AI sits behind a small &lt;code&gt;AIProvider&lt;/code&gt; interface. I moved from hosted Gemma to local LM Studio by changing a dropdown, not the learning system. A smaller Gemma model suits a slow laptop and a larger one suits better feedback, and the memory and product logic stay the same.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could see and adapt to the model's behaviour.&lt;/strong&gt; Because Gemma's chat template is public, I could handle its exact quirks (no system role, alternating turns, thought blocks) instead of guessing at a black box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It can be fine-tuned later.&lt;/strong&gt; Because the weights are open, a future version could fine-tune Gemma on the common mistakes of speakers from one language background. That isn't possible with a closed model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A closed API could store the same mistakes. What open gives my friend is &lt;strong&gt;privacy, zero running cost and control over the AI layer&lt;/strong&gt;.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Gemma powers every conversational reply and every structured evaluation, either locally through LM Studio or hosted through Google AI Studio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt;: Atlas stores the learner's memory (mistakes, recurring-pattern counts, skill indicators and sessions) that drives each personalised prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt;: project included &lt;code&gt;render.yaml&lt;/code&gt;and deployed on render .
## What I Learned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest thing I learned from building this is that &lt;strong&gt;the model is only one part of an AI application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The interesting work is in everything around it memory, prompts, feedback, user experience, and deciding what information the AI should remember.&lt;/p&gt;

&lt;p&gt;Even a relatively small open-weight model can become a useful application when you build the right system around it.&lt;/p&gt;

&lt;p&gt;And honestly, that's the part I enjoyed the most. 🚀 &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Open-source AI is getting interesting</title>
      <dc:creator>Ritik Verma</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:41:55 +0000</pubDate>
      <link>https://dev.to/ritik_verma_a6c3b5117cfd5/open-source-ai-is-getting-interesting-jfc</link>
      <guid>https://dev.to/ritik_verma_a6c3b5117cfd5/open-source-ai-is-getting-interesting-jfc</guid>
      <description>&lt;p&gt;I've been experimenting with open-source AI models, and honestly, it's pretty exciting to see how much we can run locally now.&lt;/p&gt;

&lt;p&gt;Models like &lt;strong&gt;Gemma, Llama, Mistral, and Qwen&lt;/strong&gt; can be downloaded and run on your own machine using tools like &lt;strong&gt;LM Studio or Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No API key.&lt;br&gt;&lt;br&gt;
No per-request cost.&lt;br&gt;&lt;br&gt;
And your data can stay on your machine.&lt;/p&gt;

&lt;p&gt;Of course, running models locally has its own challenges — hardware, memory, speed, and model size all matter.&lt;/p&gt;

&lt;p&gt;But the idea that you can run a capable AI model on your own laptop is pretty amazing.&lt;/p&gt;

&lt;p&gt;I'm going to explore this space more and share what I learn along the way. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you tried running an open-source model locally? What model are you using?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
