<?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>An English Coach</title>
      <dc:creator>Ritik Verma</dc:creator>
      <pubDate>Sun, 18 Oct 2026 17:01:58 +0000</pubDate>
      <link>https://dev.to/ritik_verma_a6c3b5117cfd5/an-english-coach-55l2</link>
      <guid>https://dev.to/ritik_verma_a6c3b5117cfd5/an-english-coach-55l2</guid>
      <description>&lt;h3&gt;
  
  
  An English Coach: Your Personal English Tutor
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge — Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built an AI-powered English coaching app that helps people improve their English communication skills through personalized practice and feedback.&lt;/p&gt;

&lt;p&gt;Many people understand English but struggle to speak confidently, express their thoughts naturally, or communicate effectively in professional environments. Traditional English courses can be expensive, and learners often lack someone to practice with regularly.&lt;/p&gt;

&lt;p&gt;My goal is to make English coaching more accessible by giving learners a personal AI tutor they can practice with anytime.&lt;/p&gt;

&lt;p&gt;The app is designed to help users improve their grammar, vocabulary, sentence formation, and overall communication skills through interactive learning and personalized feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Would Pay for It?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Students&lt;/strong&gt; preparing for interviews, placements, and competitive opportunities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software developers&lt;/strong&gt; who want to communicate confidently in meetings and technical discussions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job seekers&lt;/strong&gt; preparing for interviews.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Professionals&lt;/strong&gt; who want to improve their workplace communication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;English learners&lt;/strong&gt; who want to speak more naturally and confidently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The side-hustle opportunity is to offer affordable, AI-powered English coaching through a freemium model, with premium features for learners who need more personalized practice.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://english-coaching-flutonp.onrender.com/" rel="noopener noreferrer"&gt;Try the AI English Coach&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/ritikverma-chaibrew/week1" rel="noopener noreferrer"&gt;Explore the source code&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I built the application around the idea that learning English should be interactive, personalized, and accessible rather than limited to watching lessons or memorizing grammar rules.&lt;/p&gt;

&lt;p&gt;The application uses AI to act as a personal English coach, helping users practice and improve their communication skills.&lt;/p&gt;

&lt;p&gt;The core experience focuses on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personalized English practice.&lt;/li&gt;
&lt;li&gt;Feedback on grammar and sentence construction.&lt;/li&gt;
&lt;li&gt;Suggestions for more natural ways to express ideas.&lt;/li&gt;
&lt;li&gt;Practical communication scenarios.&lt;/li&gt;
&lt;li&gt;Learning through practice rather than lengthy grammar lessons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the AI layer, I used &lt;strong&gt;Gemma from Google&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My goal is to make the application useful for learners who need consistent practice but cannot afford a personal English tutor.&lt;/p&gt;

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

&lt;p&gt;English communication skills can create opportunities in education, employment, and professional growth. However, access to quality coaching is not equally available to everyone.&lt;/p&gt;

&lt;p&gt;Open innovation makes it possible to experiment with open-weight AI models, customize the coaching experience, and build affordable learning tools without depending entirely on expensive proprietary AI APIs.&lt;/p&gt;

&lt;p&gt;It also creates opportunities to adapt the application for different learning needs, languages, and cultural contexts.&lt;/p&gt;

&lt;p&gt;For example, an English learner in a smaller Indian city should be able to access a personalized English coach without paying the price of traditional one-to-one coaching.&lt;/p&gt;

&lt;p&gt;Open models can also provide greater control over deployment, model selection, privacy, and operating costs, depending on the model license and infrastructure.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Touch Grass Tales: go for a walk, come back with a picture book</title>
      <dc:creator>Ritik Verma</dc:creator>
      <pubDate>Fri, 09 Oct 2026 21:21:42 +0000</pubDate>
      <link>https://dev.to/ritik_verma_a6c3b5117cfd5/touch-grass-tales-go-for-a-walk-come-back-with-a-picture-book-2co</link>
      <guid>https://dev.to/ritik_verma_a6c3b5117cfd5/touch-grass-tales-go-for-a-walk-come-back-with-a-picture-book-2co</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&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%2Fp17ojaizsyydeskha54f.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%2Fp17ojaizsyydeskha54f.png" alt="Touch Grass Tales screenshot" width="799" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Touch Grass Tales&lt;/strong&gt; turns a short walk into an illustrated children's story.&lt;/p&gt;

&lt;p&gt;You step outside, photograph 5 to 10 random things (a park bench, a pigeon, a weird sign, a lamp post), and an open-weight model, &lt;strong&gt;Gemma&lt;/strong&gt;, turns them into a &lt;strong&gt;story&lt;/strong&gt;, a &lt;strong&gt;rhyming poem&lt;/strong&gt; or a &lt;strong&gt;comic strip&lt;/strong&gt;. The pictures in the finished tale are &lt;em&gt;your own photos&lt;/em&gt;. You pick the mood: &lt;strong&gt;funny&lt;/strong&gt;, &lt;strong&gt;spooky&lt;/strong&gt; (never gory) or &lt;strong&gt;mystery&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The screen is the shortest part of the experience on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The app sends you outside first.&lt;/strong&gt; Each walk starts with a small mission, like &lt;em&gt;"Photograph something that looks like a face"&lt;/em&gt; or &lt;em&gt;"Find something red that isn't a stop sign"&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your phone is just the camera.&lt;/strong&gt; The walk is the fun part, and the tale is the reward when you get back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The tale is easy to read.&lt;/strong&gt; Everything is written in simple English (short sentences, easy words, no idioms, about CEFR A2).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who it's for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parents and kids who want a reason to go outside together, and a bedtime story starring the things they found.&lt;/li&gt;
&lt;li&gt;Beginner English learners, who get a tale they can actually read, about things they saw themselves.&lt;/li&gt;
&lt;li&gt;Anyone who needs an excuse to close the laptop for twenty minutes.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://touch-grass-flutonp.onrender.com/" rel="noopener noreferrer"&gt;https://touch-grass-flutonp.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No API key? The app has a built-in demo (a canned walk with a park bench, a lamp post and a pigeon) and a gallery of sample tales.&lt;/p&gt;

&lt;p&gt;How a tale gets made, step by step:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Connect the AI once.&lt;/strong&gt; Paste a free Google AI Studio key, or point the app at LM Studio on your own computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go for a walk&lt;/strong&gt; with a random mission.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add 5 to 10 photos.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pick a mood and a format.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press Make.&lt;/strong&gt; A live panel shows each photo being checked and what was found in it ("park bench", "pigeon"…), then a sneak peek shows each scene as soon as it's written. A tale takes about 2 to 4 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read it&lt;/strong&gt; as a book or as slides, and &lt;strong&gt;publish&lt;/strong&gt; it to your gallery if you like.&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/week2" rel="noopener noreferrer"&gt;
        week2
      &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;Touch Grass Tales 🌳&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Go outside, photograph 5 to 10 random things, and Gemma AI turns them into a children's &lt;strong&gt;story&lt;/strong&gt;, a rhyming &lt;strong&gt;poem&lt;/strong&gt; or a &lt;strong&gt;comic strip&lt;/strong&gt; (funny, spooky or mystery), illustrated with your own photos. Everything is written in simple words: short sentences, no idioms, about CEFR A2, so young readers and beginner English learners can follow it.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Using the site&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Connect the AI once.&lt;/strong&gt; Paste a free &lt;a href="https://aistudio.google.com/api-keys" rel="nofollow noopener noreferrer"&gt;Google AI Studio&lt;/a&gt; key, or run Gemma locally with &lt;a href="https://lmstudio.ai" rel="nofollow noopener noreferrer"&gt;LM Studio&lt;/a&gt;. &lt;code&gt;/setup.html&lt;/code&gt; walks through both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go for a walk.&lt;/strong&gt; The Create page gives you a random photo mission (optional).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add 5 to 10 photos.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick a mood&lt;/strong&gt; (Funny, Spooky, Mystery) &lt;strong&gt;and a format&lt;/strong&gt; (Story, Poem, Comic).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Press Make.&lt;/strong&gt; Progress and time left stream live, a &lt;strong&gt;photo check&lt;/strong&gt; panel shows each photo being checked and the items found in it, and a &lt;strong&gt;sneak peek&lt;/strong&gt; shows each scene, verse or…&lt;/li&gt;
&lt;/ol&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/week2" 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;The open-source AI core: Gemma, an open-weight model.&lt;/strong&gt; Every word in a tale comes from Gemma. I use two Gemma 4 models, each for the job it's best at:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Look at each photo&lt;/td&gt;
&lt;td&gt;Gemma 4 26B-A4B&lt;/td&gt;
&lt;td&gt;Fast mixture-of-experts model; one small (384px) photo at a time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plan the plot and pick a photo for each moment&lt;/td&gt;
&lt;td&gt;Gemma 4 26B-A4B&lt;/td&gt;
&lt;td&gt;Fast, structured JSON planning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write each scene or verse, then proofread and fix it&lt;/td&gt;
&lt;td&gt;Gemma 4 31B&lt;/td&gt;
&lt;td&gt;The best prose and rhyme&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write comic panel captions and speech bubbles&lt;/td&gt;
&lt;td&gt;Gemma 4 26B-A4B&lt;/td&gt;
&lt;td&gt;Fast; a caption plus up to two bubbles per panel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Many small calls, never one long reply.&lt;/strong&gt; Instead of asking for a whole story at once, the app builds it piece by piece:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Look:&lt;/strong&gt; one call per photo returns the objects in it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan:&lt;/strong&gt; one call writes the plot and decides which photo illustrates which moment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write:&lt;/strong&gt; one call per scene (~170 words), stanza (4 lines) or comic panel, each building on the parts before it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit:&lt;/strong&gt; an "editor" call reviews the whole piece, and up to 3 weak parts are rewritten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readability check:&lt;/strong&gt; this runs without the AI. It measures sentence length and long words, and any scene that's too hard is always sent back for a simpler rewrite.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Small calls keep the model focused, make each reply cheap to retry, and let the page show progress the whole time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rest of the stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; backend with &lt;strong&gt;MongoDB&lt;/strong&gt; (Atlas when deployed) storing every pipeline step. If a step fails, &lt;strong&gt;Retry&lt;/strong&gt; resumes from that exact step instead of starting over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live progress over Server-Sent Events:&lt;/strong&gt; the photo-check panel, a countdown and the sneak peek all update as the tale is written.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plain HTML, CSS and JavaScript&lt;/strong&gt; frontend served by FastAPI, so it's one service to deploy on &lt;strong&gt;Render&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gentle pacing for free API keys:&lt;/strong&gt; calls go back-to-back, and only when a call is rejected does the app back off (30 s, then 60 s, then 90 s) before trying again.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;1. The same open model runs in the cloud &lt;em&gt;or&lt;/em&gt; on your own machine.&lt;/strong&gt;&lt;br&gt;
Because Gemma's weights are open, the app has two interchangeable back ends: Google AI Studio (free key, nothing to install) and &lt;strong&gt;LM Studio&lt;/strong&gt;, which runs Gemma locally. Switching is one click in the app, with no code changes. With LM Studio, your photos never leave your computer: the model that looks at your walk runs on your own hardware. A closed, API-only model can't offer that choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Your walk stays yours.&lt;/strong&gt;&lt;br&gt;
Photos of a walk can reveal where you live. So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Location data is stripped:&lt;/strong&gt; photos are re-encoded and their EXIF data (including GPS location) is removed on upload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photos are short-lived:&lt;/strong&gt; they're deleted from the server after 24 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Published tales stay with you:&lt;/strong&gt; they're saved in &lt;em&gt;your own browser's&lt;/em&gt; local storage, not on my server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your API key stays with you:&lt;/strong&gt; it lives in your browser's local storage for 5 hours and is never stored on the server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. I pick the right model for each job.&lt;/strong&gt;&lt;br&gt;
Open weights come in many sizes, so the app uses a fast mixture-of-experts Gemma for looking and planning, and the large dense Gemma for writing and editing. In LM Studio you can swap in any Gemma build you've downloaded, per task, from a dropdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. It costs nothing to run.&lt;/strong&gt;&lt;br&gt;
Gemma is free to use through a free AI Studio key, and completely free (and limitless) when run locally. A family can make a tale every weekend without a subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where open worked better than closed:&lt;/strong&gt; &amp;lt;!-- TODO: in one or two sentences, add a concrete moment from building this, e.g. swapping models in LM Studio, testing locally for free, or keeping photos on your machine --&amp;gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; every tale is written, planned and proofread by Gemma 4 (26B-A4B and 31B), and the photos are read by Gemma too. LM Studio runs Gemma locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; every tale's pipeline state lives in MongoDB Atlas, which is what lets a failed step resume exactly where it stopped. We don't save user generated tales.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Use of Render:&lt;/strong&gt; the app is deployed as a single Render web service (&lt;code&gt;render.yaml&lt;/code&gt; in the repo).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hf26challenge</category>
      <category>devchallenge</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <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>
