<?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: BARI ANKIT VINOD </title>
    <description>The latest articles on DEV Community by BARI ANKIT VINOD  (@bariankitvinod).</description>
    <link>https://dev.to/bariankitvinod</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%2F1246423%2F4705b57c-532b-4482-a8b9-d8af604e98b8.jpeg</url>
      <title>DEV Community: BARI ANKIT VINOD </title>
      <link>https://dev.to/bariankitvinod</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bariankitvinod"/>
    <language>en</language>
    <item>
      <title>Spotter: a private workout form coach I built for a friend who trains at home</title>
      <dc:creator>BARI ANKIT VINOD </dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:46:55 +0000</pubDate>
      <link>https://dev.to/bariankitvinod/spotter-a-private-workout-form-coach-i-built-for-a-friend-who-trains-at-home-3cll</link>
      <guid>https://dev.to/bariankitvinod/spotter-a-private-workout-form-coach-i-built-for-a-friend-who-trains-at-home-3cll</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;Spotter is a workout form coach for my friend, who trains at home. There's no gym nearby and no budget for a private trainer, so a phone propped on a shelf is the only feedback they get. Every "AI coach" app they tried either wanted a subscription, sent their workout videos to a company's servers, or repeated generic YouTube advice.&lt;/p&gt;

&lt;p&gt;So I built something different. They upload a short clip, add a little training context, and get back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the detected exercise and a confidence score&lt;/li&gt;
&lt;li&gt;a rep-by-rep analysis&lt;/li&gt;
&lt;li&gt;valid variations separated from real form issues&lt;/li&gt;
&lt;li&gt;an annotated video plus short clips of each issue&lt;/li&gt;
&lt;li&gt;a grounded coach summary with fixes and a next-session plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It currently supports squats, push-ups and shoulder presses. It also says "I can't tell" on purpose: if a clip isn't one of those movements, Spotter rejects it instead of forcing a guess. It is a practice companion, not a medical device. It doesn't diagnose injuries or claim to prevent them.&lt;/p&gt;

&lt;p&gt;My friend said, "I have good shoulder strength but it helps me in squats".&lt;/p&gt;

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

&lt;p&gt;Video link - &lt;a href="https://youtu.be/DImVwhrrkFA" rel="noopener noreferrer"&gt;https://youtu.be/DImVwhrrkFA&lt;/a&gt;&lt;/p&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/aijadugar" rel="noopener noreferrer"&gt;
        aijadugar
      &lt;/a&gt; / &lt;a href="https://github.com/aijadugar/spotter" rel="noopener noreferrer"&gt;
        spotter
      &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="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
    &lt;th&gt;title&lt;/th&gt;
    &lt;td&gt;Spotter&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;emoji&lt;/th&gt;
    &lt;td&gt;🏋️&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;colorFrom&lt;/th&gt;
    &lt;td&gt;green&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;colorTo&lt;/th&gt;
    &lt;td&gt;blue&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;sdk&lt;/th&gt;
    &lt;td&gt;gradio&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;sdk_version&lt;/th&gt;
    &lt;td&gt;6.17.3&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;python_version&lt;/th&gt;
    &lt;td&gt;3.10&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;app_file&lt;/th&gt;
    &lt;td&gt;app.py&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;fullWidth&lt;/th&gt;
    &lt;td&gt;true&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;short_description&lt;/th&gt;
    &lt;td&gt;Workout form coach for a friend, built on open-weight small models.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;tags&lt;/th&gt;
    &lt;td&gt;
&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
  &lt;td&gt;&lt;div&gt;gradio&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;computer-vision&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;pose-estimation&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;fitness&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;video-analysis&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;llama-cpp&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;open-source&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;local-inference&lt;/div&gt;&lt;/td&gt;
  &lt;td&gt;&lt;div&gt;hacktoberfest&lt;/div&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Spotter&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Spotter is a small-model workout form coach I built for a friend.&lt;/p&gt;
&lt;p&gt;My friend trains at home: no gym nearby, no budget for a private trainer, and a phone propped on a
shelf is the only feedback they get. Every "AI coach" app they tried wanted a subscription, shipped
their workout videos to a company's servers, or paraphrased generic YouTube advice. So I built
Spotter for them instead.&lt;/p&gt;
&lt;p&gt;A user uploads a short exercise video, adds basic training context, and gets a structured form-review
report with rep counts, movement notes, annotated video, and a grounded coach summary — produced by
open-weight models that cost nothing to run and never…&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/aijadugar/spotter" 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;Spotter is a pipeline of small, checkable steps rather than one big chatbot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;video + profile
  -&amp;gt; video quality check
  -&amp;gt; pose extraction (MediaPipe Pose Landmarker Lite)
  -&amp;gt; pose cleaning
  -&amp;gt; exercise router (custom PyTorch BiLSTM, 182,796 parameters)
  -&amp;gt; exercise-specific rep counter
  -&amp;gt; per-rep analysis -&amp;gt; variation detection -&amp;gt; issue markers
  -&amp;gt; annotated video + issue clips
  -&amp;gt; coach summary (Nemotron-3-Nano-4B + LoRA)
  -&amp;gt; verifier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The models.&lt;/strong&gt; The router is a tiny BiLSTM over 30-frame windows of pose landmarks. The coach summary comes from &lt;code&gt;nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16&lt;/code&gt;, fine-tuned with a LoRA on task-specific data. Training and publishing run as Modal jobs. For fully local use, the summary can run through &lt;code&gt;llama.cpp&lt;/code&gt; with a GGUF build, so MediaPipe, the router and the coach summary all run on a laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence first, language second.&lt;/strong&gt; The numbers (reps, depth, issue counts) come from deterministic code. The language model only phrases them. A verifier then checks the summary against that evidence and blocks claims it can't ground or that sound like a diagnosis. I'd rather the coach say less than say something it can't back up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optional extras, all opt-in.&lt;/strong&gt; Spotter's core promise is that it runs locally with no account, so anything cloud-based is off by default and falls back quietly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice coach (ElevenLabs).&lt;/strong&gt; Short spoken cues for the top issues, like "rep 3: knees drifted inward". It only speaks text that already passed the verifier, caches audio on disk so repeat runs cost nothing, and enforces a per-run character budget. Only text is sent, never video.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-session memory (Backboard).&lt;/strong&gt; A "vs last session" comparison, so my friend can see whether a fault is fading. SQLite stays the source of truth. Only derived metrics (date, exercise, rep count, issue counts) are synced, never video, frames or landmarks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tuning pipeline (Tinker).&lt;/strong&gt; A LoRA fine-tune of a small Qwen model for the progress-plan step, with a dry-run mode that prints token counts and cost before spending anything. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment (Render).&lt;/strong&gt; A Render Blueprint with a health check and a persistent disk for history. Live require credit card (I don't have).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built this with Claude Code in a long session of small, verified steps.&lt;/p&gt;

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

&lt;p&gt;Three things my friend cares about would have been impossible, or paid for, with a closed API:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Their workout videos stay on their machine.&lt;/strong&gt; Videos of someone training at home, often in their living room, are personal. With open weights and local inference, there is no server that has to see them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run and needs no account.&lt;/strong&gt; There is no subscription and no per-request bill. That matters when the whole point is that a trainer is too expensive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can change it for them.&lt;/strong&gt; The coach's voice and focus come from a LoRA I trained, so when a better 4B model appears or my friend wants a different style, I retrain the adapter instead of waiting for a vendor. The small router and the verifier mean every claim can be inspected, not just trusted.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>GuWiki: Building a Gujarati AI Wikipedia from Scratch 🇮🇳</title>
      <dc:creator>BARI ANKIT VINOD </dc:creator>
      <pubDate>Fri, 05 Jun 2026 16:31:04 +0000</pubDate>
      <link>https://dev.to/bariankitvinod/guwiki-building-a-gujarati-ai-wikipedia-from-scratch-12c6</link>
      <guid>https://dev.to/bariankitvinod/guwiki-building-a-gujarati-ai-wikipedia-from-scratch-12c6</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;GuWiki is an AI-powered Wikipedia-style platform built specifically for the Gujarati language.&lt;/p&gt;

&lt;p&gt;Gujarati is spoken by more than &lt;strong&gt;60 million people worldwide&lt;/strong&gt;, yet high-quality AI tools, language models, and speech technologies for Gujarati remain limited compared to English and other major languages.&lt;/p&gt;

&lt;p&gt;I wanted to help close that gap.&lt;/p&gt;

&lt;p&gt;Instead of relying on existing foundation models, I built the core AI components from scratch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Gujarati Large Language Model (LLM)&lt;/li&gt;
&lt;li&gt;A Gujarati Automatic Speech Recognition (ASR) model&lt;/li&gt;
&lt;li&gt;A complete data engineering pipeline&lt;/li&gt;
&lt;li&gt;A Wikipedia-style knowledge platform powered by these models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users can search, read, and interact with Gujarati knowledge using AI that understands the language natively.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Models
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Gujarati NanoGPT (LLM)
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/aijadugar/gujarati-nanogpt" rel="noopener noreferrer"&gt;https://huggingface.co/aijadugar/gujarati-nanogpt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A language model trained specifically on Gujarati text to understand vocabulary, grammar, and language patterns.&lt;/p&gt;

&lt;h4&gt;
  
  
  Gujarati ASR Model
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/aijadugar/gujarati-asr" rel="noopener noreferrer"&gt;https://huggingface.co/aijadugar/gujarati-asr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A speech-to-text model trained for Gujarati audio, enabling voice-based interaction and accessibility.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Live Application
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://gu-wiki.vercel.app/" rel="noopener noreferrer"&gt;https://gu-wiki.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Video Walkthrough
&lt;/h3&gt;

&lt;p&gt;🎥 &lt;a href="https://www.loom.com/share/b5e278e624724d8f975e95b0fc3c6297" rel="noopener noreferrer"&gt;https://www.loom.com/share/b5e278e624724d8f975e95b0fc3c6297&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AI-powered Gujarati knowledge search&lt;/li&gt;
&lt;li&gt;Native Gujarati language understanding&lt;/li&gt;
&lt;li&gt;Speech-to-text capabilities&lt;/li&gt;
&lt;li&gt;Custom-trained Gujarati LLM&lt;/li&gt;
&lt;li&gt;Custom-trained Gujarati ASR&lt;/li&gt;
&lt;li&gt;End-to-end data engineering pipeline&lt;/li&gt;
&lt;li&gt;Fast and responsive web interface&lt;/li&gt;
&lt;li&gt;Open-source repository for community contribution&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;This project started as an ambitious idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can I build AI infrastructure for Gujarati instead of simply consuming models built for English?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer turned out to be much harder than expected.&lt;/p&gt;

&lt;p&gt;The biggest challenge wasn't building the website.&lt;/p&gt;

&lt;p&gt;It was the data.&lt;/p&gt;

&lt;p&gt;Gujarati lacks the abundance of high-quality datasets available for English. I spent significant time collecting, cleaning, validating, and preparing Gujarati text and speech data before any model training could even begin.&lt;/p&gt;

&lt;p&gt;The project went through multiple iterations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rebuilding data pipelines&lt;/li&gt;
&lt;li&gt;Cleaning noisy datasets&lt;/li&gt;
&lt;li&gt;Experimenting with tokenization strategies&lt;/li&gt;
&lt;li&gt;Training and retraining language models&lt;/li&gt;
&lt;li&gt;Improving speech recognition quality&lt;/li&gt;
&lt;li&gt;Optimizing inference performance&lt;/li&gt;
&lt;li&gt;Connecting everything into a single user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the Finish-Up-A-Thon, I focused on turning these individual research efforts into a complete, usable product.&lt;/p&gt;

&lt;p&gt;I improved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model integration&lt;/li&gt;
&lt;li&gt;Frontend experience&lt;/li&gt;
&lt;li&gt;Deployment workflows&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Performance optimizations&lt;/li&gt;
&lt;li&gt;Repository structure&lt;/li&gt;
&lt;li&gt;End-to-end user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is GuWiki: a fully working AI-powered knowledge platform designed around Gujarati language users.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot played a significant role throughout development.&lt;/p&gt;

&lt;p&gt;While building GuWiki, I worked across multiple domains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data engineering&lt;/li&gt;
&lt;li&gt;Machine learning&lt;/li&gt;
&lt;li&gt;Deep learning&lt;/li&gt;
&lt;li&gt;Model training&lt;/li&gt;
&lt;li&gt;API development&lt;/li&gt;
&lt;li&gt;Frontend development&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Switching contexts constantly can slow development, and Copilot helped reduce that friction.&lt;/p&gt;

&lt;p&gt;Some of the ways it helped include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generating boilerplate code&lt;/li&gt;
&lt;li&gt;Accelerating API development&lt;/li&gt;
&lt;li&gt;Creating data processing utilities&lt;/li&gt;
&lt;li&gt;Writing training scripts faster&lt;/li&gt;
&lt;li&gt;Refactoring repetitive code&lt;/li&gt;
&lt;li&gt;Generating documentation&lt;/li&gt;
&lt;li&gt;Suggesting fixes during debugging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I appreciated most was that Copilot allowed me to stay focused on solving the actual AI and language challenges instead of spending time on repetitive implementation details.&lt;/p&gt;

&lt;p&gt;It felt less like autocomplete and more like a development companion that helped maintain momentum throughout the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Project Matters
&lt;/h2&gt;

&lt;p&gt;Most AI innovation today happens in a small number of major languages.&lt;/p&gt;

&lt;p&gt;Millions of people speak Gujarati every day, but the ecosystem of open-source AI tools for the language is still developing.&lt;/p&gt;

&lt;p&gt;GuWiki is my contribution toward making AI more accessible for Gujarati speakers by building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open-source language models&lt;/li&gt;
&lt;li&gt;Open-source speech models&lt;/li&gt;
&lt;li&gt;Public datasets and pipelines&lt;/li&gt;
&lt;li&gt;Real-world applications powered by those models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My goal is not only to build a product but to help strengthen the Gujarati AI ecosystem so future developers and researchers can build on top of it.&lt;/p&gt;

&lt;p&gt;If even a small part of this work helps expand access to knowledge and AI for Gujarati speakers, then the project has already succeeded.&lt;/p&gt;




&lt;h2&gt;
  
  
  Repository &amp;amp; Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/aijadugar/GuWiki" rel="noopener noreferrer"&gt;https://github.com/aijadugar/GuWiki&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live App: &lt;a href="https://gu-wiki.vercel.app/" rel="noopener noreferrer"&gt;https://gu-wiki.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo: &lt;a href="https://www.loom.com/share/b5e278e624724d8f975e95b0fc3c6297" rel="noopener noreferrer"&gt;https://www.loom.com/share/b5e278e624724d8f975e95b0fc3c6297&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gujarati LLM: &lt;a href="https://huggingface.co/aijadugar/gujarati-nanogpt" rel="noopener noreferrer"&gt;https://huggingface.co/aijadugar/gujarati-nanogpt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gujarati ASR: &lt;a href="https://huggingface.co/aijadugar/gujarati-asr" rel="noopener noreferrer"&gt;https://huggingface.co/aijadugar/gujarati-asr&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⭐ If you find the project interesting, feel free to explore the repository and share feedback.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>githubcopilot</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
