<?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: Sunil Kumawat</title>
    <description>The latest articles on DEV Community by Sunil Kumawat (@sunil_kumawat).</description>
    <link>https://dev.to/sunil_kumawat</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%2F4156156%2F44d5620a-4f13-4a7f-af2a-7ad53ec02ddc.png</url>
      <title>DEV Community: Sunil Kumawat</title>
      <link>https://dev.to/sunil_kumawat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sunil_kumawat"/>
    <language>en</language>
    <item>
      <title>Slowly: Catch Up on Group Chats Without Reading Them, Fully On My Phone</title>
      <dc:creator>Sunil Kumawat</dc:creator>
      <pubDate>Fri, 23 Oct 2026 06:14:21 +0000</pubDate>
      <link>https://dev.to/sunil_kumawat/slowly-catch-up-on-group-chats-without-reading-them-fully-on-my-phone-3283</link>
      <guid>https://dev.to/sunil_kumawat/slowly-catch-up-on-group-chats-without-reading-them-fully-on-my-phone-3283</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Slowly is a small web app that summarizes a group chat on your phone. You paste a chat (or share a WhatsApp export) and about half a minute later you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The gist in one or two sentences&lt;/li&gt;
&lt;li&gt;To-dos, with the owner named, as a checklist&lt;/li&gt;
&lt;li&gt;Dates and plans that were mentioned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can choose the summary language: English, Hinglish or Hindi. Every summary is saved on your phone, and you can search or delete it later.&lt;/p&gt;

&lt;p&gt;I live in a village where the internet is slow. I did not want to send my private chats to someone else's server, so I built a tool that does all the work on the phone itself.&lt;/p&gt;

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

&lt;p&gt;Live app (open in Chrome on Android): &lt;a href="https://sunilkumawat-ai.github.io/slowly/" rel="noopener noreferrer"&gt;https://sunilkumawat-ai.github.io/slowly/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Proof: it works offline, in airplane mode
&lt;/h3&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%2F2046jvyyylij7flze4mn.jpg" 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%2F2046jvyyylij7flze4mn.jpg" alt="Slowly English summary in airplane mode" width="800" height="1678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look at the top of this screenshot. Airplane mode is on, and the app shows the "Offline" tag. There is no internet, and Slowly still read the chat and wrote the summary: the gist, three to-dos and the dates. It took about 21 seconds, at around 6 tokens per second, on my Realme X7 Max.&lt;/p&gt;

&lt;p&gt;The model was downloaded once. After that, the phone does everything by itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hinglish summary
&lt;/h3&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%2Fvkudqnxsx988ceq7zytt.jpg" 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%2Fvkudqnxsx988ceq7zytt.jpg" alt="Slowly Hinglish summary" width="800" height="1512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same chat, summarized in Hinglish. Common lines like "book the tickets" and "bring snacks" are translated with a built-in dictionary, so they are exact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hindi summary
&lt;/h3&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%2Fmh10axcz6db78dhylfnk.jpg" 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%2Fmh10axcz6db78dhylfnk.jpg" alt="Slowly Hindi summary" width="800" height="1492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same chat in Hindi. The speed and token numbers at the bottom are real, measured on my phone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model picker
&lt;/h3&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%2Fzd1thkgkrewut2zpglwp.jpg" 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%2Fzd1thkgkrewut2zpglwp.jpg" alt="Slowly model picker" width="800" height="1542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Slowly lists the open models my phone can run, with their download size. It auto-picks the best one that fits, and it remembers which models failed.&lt;/p&gt;

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

&lt;p&gt;GitHub repo (MIT license): &lt;a href="https://github.com/Sunilkumawat-ai/slowly" rel="noopener noreferrer"&gt;https://github.com/Sunilkumawat-ai/slowly&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is plain HTML, CSS and JavaScript. There is no backend and no build step.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WebLLM and WebGPU&lt;/strong&gt; run an open-weight model inside Chrome, on the phone's GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight models&lt;/strong&gt; from Meta, Alibaba, Google, Microsoft and Hugging Face (Llama 3.2, Qwen3, Phi-3.5, Gemma 2, SmolLM2).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline after first load.&lt;/strong&gt; A service worker keeps the app and the model engine, and the browser keeps the model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules plus model.&lt;/strong&gt; Plain code first reads the chat into "who said what" and finds the to-dos and dates. The model then writes the short gist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every model line is checked.&lt;/strong&gt; Small models make mistakes. If the gist repeats itself, invents a name or number, has broken characters, or is too short, Slowly throws it away and shows a plain summary built from the chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long chats are split&lt;/strong&gt; into parts, turned into notes, and the notes are summarized again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everything is stored in the browser&lt;/strong&gt; (&lt;code&gt;localStorage&lt;/code&gt;). There is no server and no database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested on a Realme X7 Max with Chrome on Android. These are single runs, not a rigorous benchmark:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;th&gt;Total time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 1B&lt;/td&gt;
&lt;td&gt;English&lt;/td&gt;
&lt;td&gt;6.0 tok/s&lt;/td&gt;
&lt;td&gt;21 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 1B&lt;/td&gt;
&lt;td&gt;Hinglish&lt;/td&gt;
&lt;td&gt;6.3 tok/s&lt;/td&gt;
&lt;td&gt;33 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 1B&lt;/td&gt;
&lt;td&gt;Hindi&lt;/td&gt;
&lt;td&gt;5.9 tok/s&lt;/td&gt;
&lt;td&gt;43 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3 1.7B&lt;/td&gt;
&lt;td&gt;Hinglish / Hindi&lt;/td&gt;
&lt;td&gt;about 6.2 tok/s&lt;/td&gt;
&lt;td&gt;45 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;What I saw while testing: Llama 3.2 1B gave the most reliable gist on my phone. Qwen3 1.7B sometimes wrote a gist that failed the checks. Gemma 3 1B loaded but wrote broken text, so it is not in the list.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;Slowly rewards laziness in the best way. Instead of scrolling through 50 messages, you read about 5 lines: the gist, who has to do what, and the dates.&lt;/p&gt;

&lt;p&gt;In my 5-line test chat, the summary was ready in about 21 seconds, with no internet, no account and no API key. It does the boring reading so you don't have to.&lt;/p&gt;

&lt;p&gt;I have tested it on my own phone with sample chats. It is a small model, so I still check the original chat before doing anything important.&lt;/p&gt;

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

&lt;p&gt;Slowly only works because the model is open.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Closed cloud API&lt;/th&gt;
&lt;th&gt;Slowly (open weights, on device)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Where your chat goes&lt;/td&gt;
&lt;td&gt;Sent to a server you don't control&lt;/td&gt;
&lt;td&gt;Stays on your phone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per summary&lt;/td&gt;
&lt;td&gt;Pay per token&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Account or API key&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Works offline&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, after the first download&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swap the model&lt;/td&gt;
&lt;td&gt;Whatever the vendor offers&lt;/td&gt;
&lt;td&gt;Pick any compatible open model&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The airplane mode screenshot above is the proof of the "Works offline" row. A closed cloud API cannot do that.&lt;/p&gt;

&lt;p&gt;For a personal chat, the privacy row alone is the reason to build it this way. The first model download took me about 20 minutes on village internet. That is the "slow" part. After that the model lives on the phone and I do not wait for anyone's server. The "steady" part is that small models are unreliable, so Slowly checks every line before showing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;Small models make mistakes. They can miss a detail, merge two people or misread sarcasm. Check the original chat before acting on anything important. Hinglish and Hindi are not perfect, and unusual lines may stay in English. It needs a recent Chrome on Android with WebGPU. The first download is large, so use Wi-Fi.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built by &lt;a href="https://github.com/Sunilkumawat-ai" rel="noopener noreferrer"&gt;Sunil Kumawat&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>DukaanAI: a product photo in, a ready-to-post listing out (built on Gemma)</title>
      <dc:creator>Sunil Kumawat</dc:creator>
      <pubDate>Sun, 18 Oct 2026 04:17:51 +0000</pubDate>
      <link>https://dev.to/sunil_kumawat/dukaanai-a-product-photo-in-a-ready-to-post-listing-out-built-on-gemma-4nf</link>
      <guid>https://dev.to/sunil_kumawat/dukaanai-a-product-photo-in-a-ready-to-post-listing-out-built-on-gemma-4nf</guid>
      <description>&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;Small sellers in India run shops on WhatsApp and Instagram, from their phones. Writing a good listing for every product takes time, and many sellers are more comfortable in Hindi or Hinglish than in formal English.&lt;/p&gt;

&lt;p&gt;DukaanAI turns one product photo into a ready-to-post listing: a title, a short description, key points and hashtags. It works in English, Hindi and Hinglish, and the result is formatted for WhatsApp so the seller can copy it or send it in one tap.&lt;/p&gt;

&lt;p&gt;Who would pay: sellers who list many products every week. My plan is a free tier plus a small paid plan. The first price I want to test with real sellers is ₹199 for 10 listings; I have not validated it yet.&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%2Ff8ug6364lccj7xr90zk5.jpg" 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%2Ff8ug6364lccj7xr90zk5.jpg" alt="DukaanAI home page with the form to add a product photo, price and language" width="800" height="1476"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Try it here: &lt;a href="https://dukaanai.dukaantools.workers.dev" rel="noopener noreferrer"&gt;https://dukaanai.dukaantools.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demo access code for judges: &lt;code&gt;dukanai-aitools&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add a product photo, optionally type details and a price, pick a language, and tap "Create my listing". If you see "The AI service is busy", tap the button again; the model sometimes has short delays.&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%2Fu4iggn21gr4ydloq9xov.jpg" 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%2Fu4iggn21gr4ydloq9xov.jpg" alt="Form with a product photo, details and price filled in before creating the listing" width="800" height="1177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my test, this listing came back in 7 seconds:&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%2Fpf2siggyi9rmplbax69d.jpg" 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%2Fpf2siggyi9rmplbax69d.jpg" alt="Generated listing with title, description, bullet points, price and hashtags, with copy and WhatsApp buttons" width="800" height="1469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also refuses photos that are not products, instead of writing a fake listing:&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%2F9f7jvvey06lloqpuletv.jpg" 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%2F9f7jvvey06lloqpuletv.jpg" alt="Red message saying no product was found in the uploaded photo" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/Sunilkumawat-ai/dukaanai" rel="noopener noreferrer"&gt;https://github.com/Sunilkumawat-ai/dukaanai&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Model: Gemma, an open-weight model (gemma-4-26b-a4b-it) through Google AI Studio's API.&lt;/li&gt;
&lt;li&gt;Backend: one Cloudflare Worker that serves the page and calls the model. It is always on, with no server to manage.&lt;/li&gt;
&lt;li&gt;On the phone: the photo is resized in the browser first, so it uses less mobile data.&lt;/li&gt;
&lt;li&gt;Honest listings: the model may only describe what is visible or what the seller typed. It cannot invent materials, sizes or claims, and text inside the photo or note is treated as data, never as instructions (prompt-injection defence).&lt;/li&gt;
&lt;li&gt;Non-product photos: if the photo is not a product, such as a screenshot, the app says so instead of writing a fake listing. I found this bug myself while testing.&lt;/li&gt;
&lt;li&gt;Security: strict content security policy with no inline scripts, constant-time access-code check, and rate limits per IP. Photos are not stored by my server.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Because Gemma is open-weight, a product like this does not depend on a single closed provider. It could later run on cheaper hosting, be tuned for Hindi product words, or be self-hosted. That matters for sellers who watch every rupee, and for a side hustle where API costs decide whether the price works at all.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TrailShield: a quick-check outdoor safety buddy with a Privacy Proof screen</title>
      <dc:creator>Sunil Kumawat</dc:creator>
      <pubDate>Sun, 11 Oct 2026 09:20:22 +0000</pubDate>
      <link>https://dev.to/sunil_kumawat/trailshield-a-quick-check-outdoor-safety-buddy-with-a-privacy-proof-screen-1jj9</link>
      <guid>https://dev.to/sunil_kumawat/trailshield-a-quick-check-outdoor-safety-buddy-with-a-privacy-proof-screen-1jj9</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Most AI apps want you to stay on the screen. TrailShield is built to do the opposite.&lt;/p&gt;

&lt;p&gt;It is a small web app for short outdoor checks. You tap &lt;strong&gt;Start Trail&lt;/strong&gt;, and when something on the path looks uncertain (a rocky patch, a fallen branch, a muddy slope), you take a photo. Gemma looks at it and gives a short, cautious note. Then the app tells you: "📵 Put your phone away and continue your trail."&lt;/p&gt;

&lt;p&gt;That is the whole interaction: a few seconds on the screen, then back outside. There is no chat, no feed, no account and no gamification. TrailShield never says a place is "safe" or "dangerous". It says "possible" and "appears", and always ends with "Use your judgment".&lt;/p&gt;

&lt;p&gt;I built it entirely from my phone, as a beginner, with no laptop.&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%2Fzv209hvhcu32yy6tz0qw.jpg" 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%2Fzv209hvhcu32yy6tz0qw.jpg" alt="TrailShield home screen with Start Trail button" width="800" height="1056"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Live app: &lt;a href="https://sunilkumawat-ai.github.io/trailshield/" rel="noopener noreferrer"&gt;https://sunilkumawat-ai.github.io/trailshield/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The free server sleeps when idle, so the first photo check can take up to a minute.&lt;/p&gt;

&lt;p&gt;Here is a real response from my phone. I tested with an indoor photo of an air cooler. Gemma described it correctly and flagged it as an unexpected environment, instead of pretending it was a trail:&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%2Femrxhjmjgogegzjmmjiq.jpg" 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%2Femrxhjmjgogegzjmmjiq.jpg" alt="Gemma's cautious answer for an indoor photo" width="800" height="1465"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/sunilkumawat-ai/trailshield" rel="noopener noreferrer"&gt;https://github.com/sunilkumawat-ai/trailshield&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Model.&lt;/strong&gt; Gemma (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;), an open-weight model that accepts images. It is the only AI in the app. It looks at the photo and writes the advice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Page.&lt;/strong&gt; A single &lt;code&gt;index.html&lt;/code&gt; hosted on GitHub Pages. Before anything is sent, it shrinks the photo and re-draws it on a canvas, which removes GPS and other hidden metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server.&lt;/strong&gt; A roughly 30-line Flask app on Render's free plan. It keeps the API key in an environment variable (never in the page or the repo) and forwards the photo to Gemma.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt.&lt;/strong&gt; Under 60 words: a short title, what the image appears to show, one "Consider..." tip, and never a claim of absolute safety.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check-in reminder.&lt;/strong&gt; A simple timer that asks "Are you okay?" while the page is open. It is a reminder, not an emergency alert.&lt;/p&gt;

&lt;h3&gt;
  
  
  The honest part: it is not offline
&lt;/h3&gt;

&lt;p&gt;My first plan was to run Gemma inside the phone's browser so nothing would leave the device. I dropped that idea because I did not want to push a multi-gigabyte model through my own phone's memory and chip, and I only had a few days. So the AI runs in the cloud, and I chose not to hide it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy Proof
&lt;/h3&gt;

&lt;p&gt;Instead of a "we care about your privacy" line, the app has a &lt;strong&gt;Privacy Proof&lt;/strong&gt; screen with real counters from its own code:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Photos sent to cloud&lt;/td&gt;
&lt;td&gt;Counted every time you tap Check&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud AI requests&lt;/td&gt;
&lt;td&gt;Counted the same way&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Location collected&lt;/td&gt;
&lt;td&gt;0 (the app never asks for it)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Account required&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI processing&lt;/td&gt;
&lt;td&gt;CLOUD (not on device)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trail session data&lt;/td&gt;
&lt;td&gt;This browser only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&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%2Fsbuud1zz2yncejhukxsd.jpg" 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%2Fsbuud1zz2yncejhukxsd.jpg" alt="Privacy Proof screen showing 4 photos sent, location 0" width="800" height="1325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also explains what really happens: one resized photo with no GPS goes to my Render server, then to Google's hosted Gemma. My code does not store photos, but Render and Google may keep request logs under their own policies. &lt;strong&gt;Delete Trail Data&lt;/strong&gt; clears the local session and counters, but it cannot remove anything already sent to the cloud, and the app says so.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I tested, and what I did not
&lt;/h3&gt;

&lt;p&gt;I ran the full loop several times from my phone: photo, server, Gemma, answer, Privacy Proof counters and Delete. The screenshots above are from that testing, and the counters show 4 photos and 4 requests because I tapped Check four times.&lt;/p&gt;

&lt;p&gt;I did &lt;strong&gt;not&lt;/strong&gt; get to do a proper outdoor trail test before the deadline, so I cannot claim how accurate Gemma is on real trails. The indoor test only shows that it describes what it sees and does not force a hazard onto a photo that has none. A real outdoor test is the first thing I would do next.&lt;/p&gt;

&lt;p&gt;Things that went wrong along the way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Failed to fetch" errors, because the server's default 30-second limit was too short for image requests. I raised it to 120 seconds.&lt;/li&gt;
&lt;li&gt;Render had a paid $7 plan selected by default. I switched it to the free plan.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Because Gemma is open-weight, the biggest weakness of my app is something anyone can fix, including me.&lt;/p&gt;

&lt;p&gt;My server is tiny and the model is swappable. Someone who wants zero upload can run the same code against a self-hosted copy of Gemma, and the Privacy Proof counters would then honestly show 0 cloud requests. With a closed API, that option would not exist: the photo would always go to a vendor I cannot inspect or replace.&lt;/p&gt;

&lt;p&gt;Open weights also let me choose a model by what fit the job, and explain in plain words what it is, instead of treating the AI as a black box.&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 does all the image understanding and writes every piece of advice in the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; the Flask server that protects the API key and forwards photos runs on Render's free plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Safety note: TrailShield is not a replacement for your own judgment, trail signs or emergency services. In an emergency, call your local emergency number (India: 112).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>BCA Study Buddy: A Free AI Tutor I Built for My Friends, Using Only My Phone</title>
      <dc:creator>Sunil Kumawat</dc:creator>
      <pubDate>Sat, 03 Oct 2026 13:45:30 +0000</pubDate>
      <link>https://dev.to/sunil_kumawat/bca-study-buddy-a-free-ai-tutor-i-built-for-my-friends-using-only-my-phone-op6</link>
      <guid>https://dev.to/sunil_kumawat/bca-study-buddy-a-free-ai-tutor-i-built-for-my-friends-using-only-my-phone-op6</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 am a BCA student in India. Some of my friends find &lt;strong&gt;Coding, Digital Logic and Maths&lt;/strong&gt; very hard. They say "I don't understand this" and then they give up.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;BCA Study Buddy&lt;/strong&gt;, a free AI study helper for them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose a subject: Coding, Digital Logic or Maths.&lt;/li&gt;
&lt;li&gt;Choose a mode: &lt;strong&gt;Explain&lt;/strong&gt; (step by step, with a real-life example) or &lt;strong&gt;Quiz me&lt;/strong&gt; (one question at a time, with kind feedback).&lt;/li&gt;
&lt;li&gt;Ask in English or Hindi.&lt;/li&gt;
&lt;li&gt;One tap opens YouTube videos about your exact question.&lt;/li&gt;
&lt;li&gt;Save any chat as a &lt;strong&gt;PDF&lt;/strong&gt; or a text file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built all of it on my &lt;strong&gt;phone&lt;/strong&gt;. I do not have a laptop right now.&lt;/p&gt;

&lt;h3&gt;
  
  
  What my friend said
&lt;/h3&gt;

&lt;p&gt;I gave the app to my friend Anas and asked for an honest review. He tried it on a Maths topic (sets) and liked it. Then he sent me this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Badhya hai bs isme ek feature add krde jisme video bhi ho taake visual bhi dikh jaye. Ya YT se connect video link jod de"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In simple English: &lt;em&gt;"It's great. Just add a feature with video, so we can see visuals too. Or connect YouTube video links."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;He was right. Some topics are hard to understand from text only, like K-maps and logic gates. So I added two buttons under every answer: &lt;strong&gt;Watch video (English)&lt;/strong&gt; and &lt;strong&gt;Watch video (Hindi)&lt;/strong&gt;. They open YouTube with videos about the exact question.&lt;/p&gt;

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

&lt;p&gt;Live app: &lt;a href="https://bca-study-buddy.streamlit.app/" rel="noopener noreferrer"&gt;https://bca-study-buddy.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first open can take up to a minute, because free hosting puts the app to sleep.&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%2Fd3koxp02msdsgla6yxye.jpg" 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%2Fd3koxp02msdsgla6yxye.jpg" alt="BCA Study Buddy home screen with subject and mode choices" width="800" height="500"&gt;&lt;/a&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%2Fokhdht48ci5e2c096y7v.jpg" 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%2Fokhdht48ci5e2c096y7v.jpg" alt="A coding answer with Watch video and Save as PDF buttons" width="800" height="1463"&gt;&lt;/a&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%2Fbjze643m78tpfhe4vnfq.jpg" 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%2Fbjze643m78tpfhe4vnfq.jpg" alt="A coding answer with more details and in hindi" width="800" height="1418"&gt;&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/Sunilkumawat-ai" rel="noopener noreferrer"&gt;
        Sunilkumawat-ai
      &lt;/a&gt; / &lt;a href="https://github.com/Sunilkumawat-ai/bca-study-buddy" rel="noopener noreferrer"&gt;
        bca-study-buddy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Free AI study helper for BCA students: Coding, Digital Logic, Maths. Built with Gemma + Streamlit.
    &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;📚 BCA Study Buddy&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A free AI study helper for BCA students who find &lt;strong&gt;Coding, Digital Logic and Maths&lt;/strong&gt; hard. It explains topics in simple English or Hindi, quizzes you to practice, and points you to videos when you want to &lt;em&gt;see&lt;/em&gt; the idea.&lt;/p&gt;
&lt;p&gt;Built for a real group of friends for the &lt;strong&gt;Hacktoberfest 2026 "Build for a Friend"&lt;/strong&gt; challenge, and improved after a friend tested it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🔗 Live demo:&lt;/strong&gt; &lt;a href="https://bca-study-buddy.streamlit.app/" rel="nofollow noopener noreferrer"&gt;https://bca-study-buddy.streamlit.app/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The first open can take up to a minute. The app sleeps when nobody uses it (free hosting).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3 subjects:&lt;/strong&gt; Coding, Digital Logic, Maths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2 modes:&lt;/strong&gt; &lt;em&gt;Explain&lt;/em&gt; (step by step, with a real-life example) and &lt;em&gt;Quiz me&lt;/em&gt; (one question at a time, with kind feedback)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;English or Hindi:&lt;/strong&gt; ask in either language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast answers:&lt;/strong&gt; the reply appears word by word while it is being written&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video help:&lt;/strong&gt; one tap opens YouTube with videos on your exact question…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Sunilkumawat-ai/bca-study-buddy" 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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight AI:&lt;/strong&gt; Gemma, used through the Gemini API with a free Google AI Studio key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App:&lt;/strong&gt; Python and Streamlit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Streamlit Community Cloud (free)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF export:&lt;/strong&gt; fpdf2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools:&lt;/strong&gt; only my phone browser and GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each subject has its own teaching style in the prompt. Digital Logic answers use truth tables. Maths answers go step by step. Coding answers explain each line of code.&lt;/p&gt;

&lt;p&gt;I am a beginner, so I used an AI assistant to guide me step by step, and I tested every step myself.&lt;/p&gt;

&lt;p&gt;Things went wrong, and I fixed them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gradio on Hugging Face needed a paid plan.&lt;/strong&gt; I moved to Streamlit, which is free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model name stopped working&lt;/strong&gt; when Google changed it. The fix was one line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Some answers showed raw math code&lt;/strong&gt; like &lt;code&gt;\rightarrow&lt;/code&gt;. I changed the prompt so the AI writes plain text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The app felt slow.&lt;/strong&gt; Now the answer appears word by word, and answers are shorter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A friend got a page loading error.&lt;/strong&gt; A refresh fixed it.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I used Gemma instead of a closed model for three reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It was free to start.&lt;/strong&gt; A student with no money and no laptop could still build and share this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could swap the model easily.&lt;/strong&gt; When the model name changed, I changed one line and the rest of the app stayed the same.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I control how it teaches.&lt;/strong&gt; I can change the prompt and the style to fit my friends. Later, the same idea can run on a local machine, so a student's questions do not have to go to a server they don't control.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I will be honest about the limits. The free key has daily limits. AI can make mistakes, especially in maths, so the app tells students to check important answers with their book or teacher.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma.&lt;/strong&gt; Gemma is the core of the project. It explains, quizzes and teaches in two languages.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Intro</title>
      <dc:creator>Sunil Kumawat</dc:creator>
      <pubDate>Fri, 02 Oct 2026 03:30:53 +0000</pubDate>
      <link>https://dev.to/sunil_kumawat/intro-3deo</link>
      <guid>https://dev.to/sunil_kumawat/intro-3deo</guid>
      <description>&lt;p&gt;Hello everyone myself sunil Kumawat, happy to be part of dev&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
