<?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: Nikitha Kishore Avadootha</title>
    <description>The latest articles on DEV Community by Nikitha Kishore Avadootha (@nikithakls17sys).</description>
    <link>https://dev.to/nikithakls17sys</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%2F4160275%2F4d59f68d-0427-4480-a947-b3e994c4de2b.jpg</url>
      <title>DEV Community: Nikitha Kishore Avadootha</title>
      <link>https://dev.to/nikithakls17sys</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikithakls17sys"/>
    <language>en</language>
    <item>
      <title>Every group chat has one person who plans everything. I built an app so nobody has to be that person.</title>
      <dc:creator>Nikitha Kishore Avadootha</dc:creator>
      <pubDate>Mon, 26 Oct 2026 03:47:07 +0000</pubDate>
      <link>https://dev.to/nikithakls17sys/every-group-chat-has-one-person-who-plans-everything-i-built-an-app-so-nobody-has-to-be-that-nlm</link>
      <guid>https://dev.to/nikithakls17sys/every-group-chat-has-one-person-who-plans-everything-i-built-an-app-so-nobody-has-to-be-that-nlm</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;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;We all have that group chat. The one where we make plans.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"We should go here."&lt;/em&gt; &lt;em&gt;"We should go there."&lt;/em&gt; &lt;em&gt;"We should really get together soon!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hundreds of plans. And somehow, none of them ever happen.&lt;/p&gt;

&lt;p&gt;Why? Because planning is &lt;strong&gt;tedious&lt;/strong&gt;. And if a plan &lt;em&gt;does&lt;/em&gt; happen, the whole job falls on &lt;strong&gt;one person&lt;/strong&gt;. They have to collect everyone's free times, find a place, book the tickets, and plan every detail by themselves. How exhausting.&lt;/p&gt;

&lt;p&gt;So I thought: what if we made that job simple, so everyone could just be &lt;strong&gt;happy about going out&lt;/strong&gt;, instead of stressed about planning something that's supposed to be fun?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nobody Plans.&lt;/strong&gt; One person sends a link. Everyone answers a few taps. The app does the planning.&lt;/p&gt;

&lt;p&gt;And it doesn't have to be in person. It works &lt;strong&gt;online&lt;/strong&gt; too, for all your long-distance friends.&lt;/p&gt;

&lt;p&gt;It's very simple, and it works just like a paper planner:&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%2Fxooqmql06s3iepd360bk.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%2Fxooqmql06s3iepd360bk.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tab&lt;/th&gt;
&lt;th&gt;You&lt;/th&gt;
&lt;th&gt;The app&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pick in person or online&lt;/td&gt;
&lt;td&gt;Asks if you have an idea, or &lt;strong&gt;builds one for you&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Who&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Add names&lt;/td&gt;
&lt;td&gt;Gives you a share link + a short group key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Connect Google Calendar.&lt;/strong&gt; That's it.&lt;/td&gt;
&lt;td&gt;Reads only &lt;strong&gt;busy or free&lt;/strong&gt;, and finds when the whole group is free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Budget&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Set your own, or one limit for everyone&lt;/td&gt;
&lt;td&gt;Uses the &lt;strong&gt;lowest&lt;/strong&gt; budget, so nobody is priced out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Activity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pick any, or add your own&lt;/td&gt;
&lt;td&gt;Shows what the group picked, with a &lt;strong&gt;Majority&lt;/strong&gt; tag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Where&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Location is detected for you; pick how far and car or no car&lt;/td&gt;
&lt;td&gt;Finds &lt;strong&gt;real places&lt;/strong&gt; that work for everyone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Plans&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pick up to 2 favourites&lt;/td&gt;
&lt;td&gt;Majority wins: &lt;strong&gt;"Yay, plan fixed"&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tap Done, or Swap&lt;/td&gt;
&lt;td&gt;Splits the jobs &lt;strong&gt;fairly&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;You don't even have to type your free times.&lt;/strong&gt; Connect Google Calendar, and the app reads only when you're busy or free (never what your events are), and matches it with everyone else.&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%2Fm98kckhkv36nzd7d2kb9.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%2Fm98kckhkv36nzd7d2kb9.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Designed so you don't have to think
&lt;/h2&gt;

&lt;p&gt;If an app takes longer to figure out than the group chat, nobody will use it. So every design choice is about saving you time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It looks exactly like a planner:&lt;/strong&gt; ruled paper on a bold magenta desk, pastel tabs down the side, and pages that actually &lt;strong&gt;turn&lt;/strong&gt; (and curl away on your phone)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One question per page&lt;/strong&gt;, with the most common answer already picked&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You never answer the same thing twice.&lt;/strong&gt; Everyone fills in only their own dates and budget, once&lt;/li&gt;
&lt;li&gt;Place options show up as &lt;strong&gt;sticker cards&lt;/strong&gt; you can tap&lt;/li&gt;
&lt;li&gt;Everyone gets their own &lt;strong&gt;colour + initials&lt;/strong&gt; (24 colour-blind-friendly choices), so you see who picked what at a glance&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  See it on a map
&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%2F2iztoeg3r34vu0qf7fy1.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%2F2iztoeg3r34vu0qf7fy1.jpg" alt=" " width="438" height="638"&gt;&lt;/a&gt;&lt;br&gt;
Every place card has a small map, and so does the final plan:&lt;/p&gt;

&lt;p&gt;A pin for the meeting place&lt;br&gt;
A coloured initials dot for each friend, placed at their rough area (about 10 km), never their exact address&lt;br&gt;
You can see at a glance if a place is fair for everyone, or if one friend would have to travel much further than the rest&lt;/p&gt;

&lt;p&gt;It's built with Leaflet + OpenStreetMap: open-source maps, no API key, no tracking. Online plans skip the map.&lt;/p&gt;
&lt;h3&gt;
  
  
  Planning for every friend
&lt;/h3&gt;

&lt;p&gt;When one friend uses a wheelchair, someone usually ends up calling every cafe to ask. I wanted the app to care about that from the start:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anyone can &lt;strong&gt;privately&lt;/strong&gt; add access needs: step-free entrance, accessible restroom, seating, quiet, close parking&lt;/li&gt;
&lt;li&gt;The planner only sees that &lt;strong&gt;someone&lt;/strong&gt; has a need, never who&lt;/li&gt;
&lt;li&gt;Places that can't meet the need are dropped&lt;/li&gt;
&lt;li&gt;Places with no info say &lt;strong&gt;"Access not confirmed, call ahead"&lt;/strong&gt; instead of guessing&lt;/li&gt;
&lt;/ul&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%2Fxnh4vcn4wk5dwrs2s7cv.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%2Fxnh4vcn4wk5dwrs2s7cv.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://nobody-plans.onrender.com" rel="noopener noreferrer"&gt;https://nobody-plans.onrender.com&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/nikithakls17-sys" rel="noopener noreferrer"&gt;
        nikithakls17-sys
      &lt;/a&gt; / &lt;a href="https://github.com/nikithakls17-sys/group-planner" rel="noopener noreferrer"&gt;
        group-planner
      &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&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nobody Plans&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Every group chat has one person who does all the planning.&lt;br&gt;This app does it so nobody has to be that person.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ebb60c83f1a4259ca4893d791b152e100188e0837e213f1b0d7a36520cd820ce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c4c4d2d47656d6d61253230342d3432383546343f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/ebb60c83f1a4259ca4893d791b152e100188e0837e213f1b0d7a36520cd820ce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c4c4d2d47656d6d61253230342d3432383546343f7374796c653d666c61742d737175617265" alt="Gemma 4"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9453bdff1e07992a2952592021fb83ecc632cc0ab6363de079f01a131f84c954/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6261636b656e642d466173744150492d3030393638383f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/9453bdff1e07992a2952592021fb83ecc632cc0ab6363de079f01a131f84c954/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6261636b656e642d466173744150492d3030393638383f7374796c653d666c61742d737175617265" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fc545cc5fdcd5888689a61b42e20fa413397789a2f2b496888e768b5502c1e4d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f66726f6e74656e642d5265616374253230253242253230566974652d3631444146423f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/fc545cc5fdcd5888689a61b42e20fa413397789a2f2b496888e768b5502c1e4d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f66726f6e74656e642d5265616374253230253242253230566974652d3631444146423f7374796c653d666c61742d737175617265" alt="React"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fd5065449ec987d851f3a554384fc1040c4f4c0f558d4bbd8286c618e6a6d3c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646174612d4d6f6e676f444225323041746c61732d3437413234383f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/fd5065449ec987d851f3a554384fc1040c4f4c0f558d4bbd8286c618e6a6d3c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646174612d4d6f6e676f444225323041746c61732d3437413234383f7374796c653d666c61742d737175617265" alt="MongoDB Atlas"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7a74b8d24c7062521902070f43fac4869e99b65f2e3b682689adc6b9278acbf8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f686f737465642532306f6e2d52656e6465722d3436453342373f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/7a74b8d24c7062521902070f43fac4869e99b65f2e3b682689adc6b9278acbf8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f686f737465642532306f6e2d52656e6465722d3436453342373f7374796c653d666c61742d737175617265" alt="Render"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9eead00c10983cb8085dbc400a54a1b20d87be40bfac8394327613266a0a6568/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f747261636564253230776974682d53656e7472792d3336324435393f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/9eead00c10983cb8085dbc400a54a1b20d87be40bfac8394327613266a0a6568/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f747261636564253230776974682d53656e7472792d3336324435393f7374796c653d666c61742d737175617265" alt="Sentry"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Built for the DEV Hacktoberfest Open-Source AI Challenge, Week 3: "Slow and Steady".&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://nobody-plans.onrender.com" rel="nofollow noopener noreferrer"&gt;https://nobody-plans.onrender.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/14-confirmed-laptop.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F14-confirmed-laptop.jpg" alt="The confirmed plan on a laptop: a two-page planner book with the stamped place, a small map and the Effort saved note"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;All taken on the live site with real places from Google Maps (via SerpApi), ranked by Gemma 4 and checked by code.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Real places to pick from&lt;/th&gt;
&lt;th&gt;The map: meeting pin, everyone's rough area&lt;/th&gt;
&lt;th&gt;When are you free?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/12-places-phone.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F12-places-phone.jpg" width="260" alt="Places page on a phone: real cafes as sticker cards with cost, distance per person and a Pick button"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/16-map-place-card-phone.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F16-map-place-card-phone.jpg" width="260" alt="A place card with a small map: a pin for the cafe and coloured initials dots at each person's city-level spot"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/08-dates-phone.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F08-dates-phone.jpg" width="260" alt="Dates page on a phone: Connect Google Calendar, or tap free dates on a month calendar"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Home&lt;/th&gt;
&lt;th&gt;What are we planning?&lt;/th&gt;
&lt;th&gt;Jobs split fairly&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/01-home-laptop.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F01-home-laptop.jpg" width="300" alt="Home on a laptop: the planner book with the main menu tabs on the left and your plans on the right"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/06-new-what-laptop.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F06-new-what-laptop.jpg" width="300" alt="First page of a new plan: in person or online, then what kind of plan"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots/13-tasks-laptop.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2Fgroup-planner%2FHEAD%2Fdocs%2Fscreenshots%2F13-tasks-laptop.jpg" width="300" alt="Tasks page: jobs split across people, with drag to move and ask to swap"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Every screen, on phone and laptop, is in &lt;a href="https://github.com/nikithakls17-sys/group-planner/docs/screenshots" rel="noopener noreferrer"&gt;&lt;code&gt;docs/screenshots&lt;/code&gt;&lt;/a&gt;.&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;Planning one dinner takes dozens of messages over days. Someone asks when everyone is free, chases replies,
finds a place, checks it fits everyone's budget, splits the jobs and sends reminders. If that person stops,
nothing happens.&lt;/p&gt;
&lt;p&gt;When2meet does times. Splitwise does money. Google Maps does places. Nobody takes over the whole…&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/nikithakls17-sys/group-planner" 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;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;What I used&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;The brain&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Gemma 4 (31B)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open-weight model: suggests plans, explains why each place fits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where Gemma runs&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;DigitalOcean&lt;/strong&gt; serverless inference&lt;/td&gt;
&lt;td&gt;Hosted open model; switches to &lt;strong&gt;Ollama&lt;/strong&gt; on a laptop with one setting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real places&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;SerpApi&lt;/strong&gt; (Google Maps)&lt;/td&gt;
&lt;td&gt;Real names, opening hours, accessibility info, so nothing is made up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Calendar&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Auth0 for AI Agents&lt;/strong&gt; (Token Vault) + Google Calendar&lt;/td&gt;
&lt;td&gt;Never stores your Google login; only sees busy or free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MongoDB Atlas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Groups, answers, votes, task history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Render&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The whole app is one Docker service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Errors&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Sentry&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Traces every Gemma call and every rejected plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;App&lt;/td&gt;
&lt;td&gt;React + Vite + TypeScript + Tailwind, FastAPI&lt;/td&gt;
&lt;td&gt;Works on phone and laptop&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%2Fkbi384bffcrw9xb7irj9.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%2Fkbi384bffcrw9xb7irj9.jpg" alt=" " width="390" height="1673"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemma suggests. Code checks.
&lt;/h3&gt;

&lt;p&gt;AI is great at ideas and bad at rules. So &lt;strong&gt;Gemma&lt;/strong&gt; suggests the plans, but before anyone sees one, a &lt;strong&gt;plan checker&lt;/strong&gt; (plain code, no AI) checks it:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule&lt;/th&gt;
&lt;th&gt;What it checks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free time&lt;/td&gt;
&lt;td&gt;Is everyone actually free then?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sane hour&lt;/td&gt;
&lt;td&gt;Is it a normal hour in &lt;strong&gt;every&lt;/strong&gt; time zone? (no 3 AM calls)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Budget&lt;/td&gt;
&lt;td&gt;Is it under the &lt;strong&gt;lowest&lt;/strong&gt; budget in the group?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Distance&lt;/td&gt;
&lt;td&gt;Can everyone get there, with or without a car?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real place&lt;/td&gt;
&lt;td&gt;Did it come from real Google Maps results, and is it &lt;strong&gt;open&lt;/strong&gt; then?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access needs&lt;/td&gt;
&lt;td&gt;Does it meet everyone's needs?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Break a rule and Gemma gets &lt;strong&gt;one retry&lt;/strong&gt; with the problem named. Break it again and the plan is dropped.&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%2Fv79mqapcm6q0bmdxn4ox.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%2Fv79mqapcm6q0bmdxn4ox.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What I tested
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Test 1: 20 tricky groups.&lt;/strong&gt; A friend with a &lt;strong&gt;$0 budget&lt;/strong&gt;. A friend &lt;strong&gt;30 km away&lt;/strong&gt;. Friends in &lt;strong&gt;different time zones&lt;/strong&gt;. All with real Gemma calls.&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;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raw Gemma options that broke at least one rule&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;75%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Broken options the checker caught&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Good options wrongly rejected&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Where Gemma went wrong most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Money:&lt;/strong&gt; it suggested paid places to a group with a $0-budget friend &lt;strong&gt;10 times&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distance:&lt;/strong&gt; &lt;strong&gt;23 of 28&lt;/strong&gt; distance breaks came from groups with one friend 30 km away, where no meetup spot could work. Gemma suggested one anyway. (Next: suggest an online plan instead.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Test 2: a live plan in Bengaluru.&lt;/strong&gt; $20 limit, a cafe and a park, one step-free need. It found &lt;strong&gt;6 real places in 14 seconds&lt;/strong&gt;. The 2 with a confirmed wheelchair-accessible entrance came &lt;strong&gt;first&lt;/strong&gt;, and the rest were honestly labelled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test 3: the whole flow, start to finish, on the live site.&lt;/strong&gt; An automated run with 3 test people: everyone answered, Gemma and SerpApi found places, everyone voted, the plan locked at a real cafe, and the jobs were split. The "Effort saved" page showed &lt;strong&gt;3 people answered 22 questions, and the app checked 24 places&lt;/strong&gt; for them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test 4: a real plan with my boyfriend.&lt;/strong&gt;&lt;br&gt;
My boyfriend was away for college work, and I was missing him. Normally, planning a call means one of us has to sort out a time while he’s buried in assignments. This time, I sent him the link, he tapped through it, and the app suggested an online watch party. We picked the latest Telugu movie, Rana Bali, and watched it together. We didn’t finish it, but that’s not the point. He had two jobs this week, his assignments and keeping me happy, and now at least one of them is easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bugs I hit:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemma wrote "the majority voted for this" &lt;strong&gt;before anyone voted&lt;/strong&gt;. I changed the prompt so it describes the place itself.&lt;/li&gt;
&lt;li&gt;The page flip didn't show at first, because every section built a brand-new book. Now one book stays open and its pages turn.&lt;/li&gt;
&lt;li&gt;Google keeps new apps in &lt;strong&gt;testing mode&lt;/strong&gt;, so for now only approved test users can connect their calendar. Everyone else can tap their free days instead.&lt;/li&gt;
&lt;/ul&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%2Fv5pzej0oktfzpm3gipks.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%2Fv5pzej0oktfzpm3gipks.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This app holds the data you'd least want to hand over: &lt;strong&gt;when your friends are free, where they live, what they can spend, and their accessibility needs.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I choose where that data goes.&lt;/strong&gt; Gemma is open-weight, so I decide where it runs. Today it's DigitalOcean. With one setting it runs on a laptop through Ollama, and nobody's plans leave the device. With a closed API, every friend's budget and access needs would go to a company I don't control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It stays free.&lt;/strong&gt; A planner for friend groups shouldn't need ads or a subscription. An open model is cheap enough to keep it free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The rules are mine, not the model's.&lt;/strong&gt; Budget, distance and access checks live in my code, and I can swap the model without rewriting the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest limit:&lt;/strong&gt; a bigger closed model might write livelier descriptions. It would still break rules sometimes and need the same checker.&lt;/li&gt;
&lt;/ul&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%2F3pa21pjtg83sq73j007y.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%2F3pa21pjtg83sq73j007y.jpg" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You used to...&lt;/th&gt;
&lt;th&gt;Now you just...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ask everyone "when are you free?"&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Connect Google Calendar&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Think of what to do&lt;/td&gt;
&lt;td&gt;Tap &lt;strong&gt;"Build it for me"&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google places and check every budget&lt;/td&gt;
&lt;td&gt;Get &lt;strong&gt;real places&lt;/strong&gt; that already fit everyone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argue over where to go&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Majority wins&lt;/strong&gt; automatically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chase people who haven't answered&lt;/td&gt;
&lt;td&gt;Tap &lt;strong&gt;Nudge&lt;/strong&gt;: your email opens with the message already written&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Do every task yourself&lt;/td&gt;
&lt;td&gt;Tasks are &lt;strong&gt;split fairly&lt;/strong&gt;, with Swap&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The planner's whole job shrinks to &lt;strong&gt;sending one link&lt;/strong&gt;. At the end, the confirmed page shows &lt;strong&gt;"Effort saved"&lt;/strong&gt;: how many questions each person answered, how many places the app checked, and how many tasks it split for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it does, and what it doesn't
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;It does&lt;/strong&gt; the boring parts: finding a time, finding places, checking every budget and access need, running the vote, and splitting the tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn't:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;book or pay&lt;/strong&gt; for anything. Booking stays a task with a link, so you're always in control of your money.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;send messages as you.&lt;/strong&gt; Nudges open in your own email, and you choose to hit Send.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;read your calendar events.&lt;/strong&gt; It only sees when you're busy or free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;show anyone's access needs by name.&lt;/strong&gt; The planner only knows someone has one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, I'm testing it with my friends across India and the US. Slowly, but steadily.&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%2F2anklcb3qz09dikpo0up.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%2F2anklcb3qz09dikpo0up.jpg" alt=" " width="800" height="500"&gt;&lt;/a&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 4 suggests and explains every plan, checked by code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of DigitalOcean&lt;/strong&gt;: Gemma runs on DigitalOcean serverless inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of SerpApi&lt;/strong&gt;: real places, opening hours and accessibility info&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Auth0 for AI Agents&lt;/strong&gt;: Google Calendar busy/free through Token Vault&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt;: groups, answers, votes and task history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt;: the whole app runs on Render&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Sentry&lt;/strong&gt;: every Gemma call and rejected plan is traced&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Articulate Me: Duolingo, but for talking</title>
      <dc:creator>Nikitha Kishore Avadootha</dc:creator>
      <pubDate>Mon, 19 Oct 2026 05:06:29 +0000</pubDate>
      <link>https://dev.to/nikithakls17sys/articulate-me-duolingo-but-for-talking-42mn</link>
      <guid>https://dev.to/nikithakls17sys/articulate-me-duolingo-but-for-talking-42mn</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;I don't pay for things online. Ever. Free tier, free trial, cancel before it renews, that's me.&lt;/p&gt;

&lt;p&gt;Except once. I paid for an intro to data science course, because I wanted to get better at what I do. And it turns out I'm not alone: online education is projected to be a &lt;strong&gt;$199 billion&lt;/strong&gt; market this year. People don't pay for apps. They pay to grow.&lt;/p&gt;

&lt;p&gt;So when this week's theme asked &lt;em&gt;"what would someone actually pay for?"&lt;/em&gt;, I asked myself and my friends a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does everyone actually want to learn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not a programming language. Not a new tool. Every answer, in some form, came back to the same thing: &lt;strong&gt;how to communicate.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the thing nobody says out loud. We all know how to &lt;em&gt;speak&lt;/em&gt; a language. Very few of us know how to &lt;em&gt;communicate&lt;/em&gt; in it: how to get to the point, how to be understood the first time, how to say the thing in your head the way it sounds in your head.&lt;/p&gt;

&lt;p&gt;And it shows up everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;job seeker&lt;/strong&gt; who rambles through "tell me about yourself" and watches the interviewer's eyes glaze over.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;interviewer&lt;/strong&gt; who can't explain what the role actually is.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;customer service&lt;/strong&gt; worker calming down someone who's already angry.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;content creator&lt;/strong&gt; who loses people in the first five seconds.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;international student&lt;/strong&gt; (hi, that's me) standing in a group where everyone is laughing at a reference she doesn't get, wanting so badly to just &lt;em&gt;join in&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Job, no job, any job. Everyone needs to make themselves understood. And almost nobody is ever taught how.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So I built Articulate Me: Duolingo, but for talking.&lt;/strong&gt; Not a new language. Your own language, spoken well. A little every day.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem, in numbers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Who&lt;/th&gt;
&lt;th&gt;What the data says&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Job seekers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;98.7% of employers say communication matters for new grads. They rate only &lt;strong&gt;55.4%&lt;/strong&gt; as proficient.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;International students&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;41%&lt;/strong&gt; find it hard to make close friends with domestic students.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Anyone who wants help&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A private speaking coach costs &lt;strong&gt;$100–300 an hour&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;People already paying&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Speaking-coach apps charge up to &lt;strong&gt;$20/month&lt;/strong&gt;, and Toastmasters is about &lt;strong&gt;$12/month&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Figure 1. Sources: &lt;a href="https://www.jobscan.co/blog/career_readiness_skills_2026/" rel="noopener noreferrer"&gt;NACE Job Outlook 2026 via Jobscan&lt;/a&gt;, &lt;a href="https://www.insidehighered.com/node/24249" rel="noopener noreferrer"&gt;World Education Services via Inside Higher Ed&lt;/a&gt;, &lt;a href="https://www.vocalimage.app/en/public-speaking/coach/" rel="noopener noreferrer"&gt;Vocal Image&lt;/a&gt;, &lt;a href="https://trainingcost.com/toastmasters-cost" rel="noopener noreferrer"&gt;Toastmasters dues&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That last row is why I believe people will pay. The market already exists. There are plenty of AI speech apps out there, but most of them do one thing: you talk, they count your "um"s. That tells you &lt;em&gt;what&lt;/em&gt; went wrong. It never teaches you &lt;em&gt;how&lt;/em&gt; to get better. I wanted a real course.&lt;/p&gt;

&lt;h3&gt;
  
  
  A course, not a chatbot
&lt;/h3&gt;

&lt;p&gt;Every day in Articulate Me has three steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Learn&lt;/strong&gt; one real technique, like getting to the point, or opening strong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Practice&lt;/strong&gt; it in a conversation with someone who talks back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get feedback&lt;/strong&gt; on whether you actually used it, quoting your own words, with one thing to fix. Then try again.&lt;/li&gt;
&lt;/ol&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%2Fq75haihq6rzyds0s34ch.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%2Fq75haihq6rzyds0s34ch.png" alt=" " width="635" height="865"&gt;&lt;/a&gt;&lt;br&gt;
Finish lessons, keep your streak, and earn &lt;strong&gt;badges&lt;/strong&gt; along the way. Get to the end and you've got a whole new way of talking.&lt;/p&gt;
&lt;h3&gt;
  
  
  Why it looks like a textbook
&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%2F6fiwqc8sed4d9j2loq4g.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%2F6fiwqc8sed4d9j2loq4g.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made every design choice on purpose, because I wanted it to feel like a course you're &lt;em&gt;taking&lt;/em&gt;, not another app you're scrolling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It looks like a textbook.&lt;/strong&gt; Simple, serif type, chapter numbers, figures and footnotes, with lessons you flip like real pages. Turning a page feels like progress in a way scrolling never does. I gave it a slightly brutalist edge (thick borders, hard shadows) so it feels bold, not boring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The blobs.&lt;/strong&gt; A little squad of blob characters, each with its own personality, shows up as you learn: cheering, nudging, celebrating. Learning to speak up is a little scary. It helps to have someone in your corner, even if that someone is a blob.&lt;/li&gt;
&lt;/ul&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%2Fryuwdv4npza9cfc40e4u.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%2Fryuwdv4npza9cfc40e4u.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;An hourglass timer&lt;/strong&gt; sits at the top so you can see how long you've studied today and how much is left of your daily goal.&lt;/li&gt;
&lt;/ul&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%2F72ki99bjd21w9ief0js9.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%2F72ki99bjd21w9ief0js9.png" alt=" " width="627" height="877"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notes.&lt;/strong&gt; Highlight anything in a lesson and save it, so you can come back to it before a big interview or presentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laptop and phone, designed separately.&lt;/strong&gt; On a laptop it opens like a book with your notes beside it. On a phone it's one page at a time, made for five minutes on the bus.&lt;/li&gt;
&lt;/ul&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%2F5qxsosupjvcxqcosc0b8.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%2F5qxsosupjvcxqcosc0b8.png" alt=" " width="800" height="493"&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%2Fc5mbsrp1um3b26wm4xh8.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%2Fc5mbsrp1um3b26wm4xh8.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credit where it's due.&lt;/strong&gt; The lessons are built from two free, openly licensed college textbooks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wisconsin.pressbooks.pub/uwmpublicspeaking/" rel="noopener noreferrer"&gt;&lt;em&gt;Stand up, Speak out: The Practice and Ethics of Public Speaking&lt;/em&gt;&lt;/a&gt; (University of Wisconsin-Milwaukee edition, CC BY-NC-SA 4.0)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://open.maricopa.edu/exploringpublicspeaking" rel="noopener noreferrer"&gt;&lt;em&gt;Exploring Public Speaking&lt;/em&gt;, 4th edition&lt;/a&gt;, by Barbara G. Tucker and co-authors (CC BY-NC-SA 4.0)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every lesson page shows which book and chapter it came from. The real teachers here are the authors who made their books free for everyone.&lt;/p&gt;
&lt;h3&gt;
  
  
  The conversation is the whole point
&lt;/h3&gt;

&lt;p&gt;You can't learn to talk by reading. A communication app without real conversation is just a book with extra steps. So this is the part I spent the most time on.&lt;/p&gt;

&lt;p&gt;When you hit &lt;strong&gt;Practice&lt;/strong&gt;, someone answers you, out loud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 plays the other person.&lt;/strong&gt; A strict interviewer for job seekers. A professor for students. An upset customer for customer service. A classmate at a party for New Here. Each scenario is written so you &lt;em&gt;have&lt;/em&gt; to use that day's technique to do well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs gives each of them a real voice,&lt;/strong&gt; with their own personality. The strict interviewer sounds strict. The friendly classmate sounds friendly. When you reply, ElevenLabs also turns your voice into text so the coach can read exactly what you said.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DigitalOcean runs Gemma 4&lt;/strong&gt; in the cloud, so a reply comes back in a few seconds, on any phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Then the coach grades you,&lt;/strong&gt; quoting your actual words as proof. If it can't find the quote in what you really said, it won't make one up.&lt;/li&gt;
&lt;/ul&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%2Flt91p0zyny2j4vmwk1k2.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%2Flt91p0zyny2j4vmwk1k2.png" alt=" " width="800" height="364"&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%2Fja0nywknl05h2ed4j0un.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%2Fja0nywknl05h2ed4j0un.png" alt=" " width="567" height="866"&gt;&lt;/a&gt;&lt;br&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%2Frlkfiqifyowmkbgm9an7.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%2Frlkfiqifyowmkbgm9an7.png" alt=" " width="565" height="462"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  New Here
&lt;/h3&gt;

&lt;p&gt;This part is personal.&lt;/p&gt;

&lt;p&gt;When I moved to the US, the hardest part wasn't the classes. It was the conversations around the classes: the jokes, the slang, the shows everyone had watched, knowing when it's okay to jump in. I wanted to fit in and I didn't know the rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New Here&lt;/strong&gt; is the course I wish I'd had. Pick a country and a setting (campus, workplace, neighbourhood, social events), and it teaches how small talk works there, the references people assume you know, how humour lands, and how to turn "nice to meet you" into an actual friendship. Mid-conversation, an &lt;strong&gt;Explain that&lt;/strong&gt; button tells you what a phrase means without interrupting the conversation. It talks about common habits, never stereotypes, and it never asks you to stop being who you are.&lt;/p&gt;
&lt;h3&gt;
  
  
  Who would pay, and how
&lt;/h3&gt;

&lt;p&gt;Job seekers and students preparing for interviews will probably find it first. But I built it for everyone, because everyone talks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free:&lt;/strong&gt; your first three chapters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro, $5/month:&lt;/strong&gt; the full course, unlimited practice, custom scenarios ("I have a nursing interview on Friday"), and weekly progress reports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prep Pack, $3 one-time:&lt;/strong&gt; a three-day mini course before one big moment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Five dollars a month is less than a coffee a week, and less than every other option on the market. Because it runs on an open model, it can be.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://articulate-me.onrender.com" rel="noopener noreferrer"&gt;https://articulate-me.onrender.com&lt;/a&gt; (no sign-up, allow the microphone)&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/yAs5s_PFebE" width="710" height="399"&gt;
  &lt;/iframe&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/nikithakls17-sys" rel="noopener noreferrer"&gt;
        nikithakls17-sys
      &lt;/a&gt; / &lt;a href="https://github.com/nikithakls17-sys/articulate-me" rel="noopener noreferrer"&gt;
        articulate-me
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A daily 5-minute speaking course, like Duolingo for talking. Learn one technique from open public speaking textbooks, say it out loud, and Gemma checks whether you used it, quoting your own words. Runs fully local (Ollama + Whisper) or hosted.
    &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;Articulate Me&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A daily speaking course, like Duolingo for talking. Read one real technique in a short illustrated chapter written
from open public speaking textbooks, then practice it in a short &lt;strong&gt;spoken conversation&lt;/strong&gt;: Gemma plays the interviewer
professor, customer or friend and pushes you to use the technique. You get feedback with your own words quoted as
evidence, one fix, and a retry.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; writes the chapters from the textbooks (RAG, with citations), plays your conversation partner, and grades
whether you used the technique&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;grounding validator&lt;/strong&gt; rejects any "evidence" quote that isn't really in what you said&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick several worlds&lt;/strong&gt; (student, job seeker, customer-facing, creator, everyday); examples and partners adapt&lt;/li&gt;
&lt;li&gt;Highlight-to-notes, quick checks, streaks, targets and badges; installs to your phone's home screen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local mode&lt;/strong&gt; runs fully offline on about 1 GB of RAM: &lt;code&gt;gemma3:1b&lt;/code&gt; + faster-whisper + browser speech&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted mode&lt;/strong&gt;: Gemma on DigitalOcean serverless inference…&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/nikithakls17-sys/articulate-me" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The README explains how to run it fully offline on your own laptop.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The stack:&lt;/strong&gt; React + Vite + TypeScript + Tailwind on the front, FastAPI on the back, all in one Docker service on &lt;strong&gt;Render&lt;/strong&gt;. &lt;strong&gt;Gemma 4 (31B)&lt;/strong&gt; on &lt;strong&gt;DigitalOcean&lt;/strong&gt; serverless inference teaches, plays every conversation partner, and grades. &lt;strong&gt;ElevenLabs&lt;/strong&gt; does voices and speech-to-text. &lt;strong&gt;MongoDB Atlas&lt;/strong&gt; stores the textbooks, users, notes and progress. &lt;strong&gt;Sentry&lt;/strong&gt; watches every model call.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teaching from real textbooks, not model guesses
&lt;/h3&gt;

&lt;p&gt;I didn't want an AI making up advice. So I split both textbooks into &lt;strong&gt;1,138 passages&lt;/strong&gt;, stored them in &lt;strong&gt;MongoDB Atlas&lt;/strong&gt; with vector search, and built every chapter by pulling the passages for that technique and having Gemma write the lesson &lt;em&gt;only&lt;/em&gt; from them. Each chapter took about 30 seconds on hosted Gemma. Then I read every single one myself. One draft described another culture's way of speaking as "inefficient." That's exactly the kind of thing this app should never say, so I rewrote it.&lt;/p&gt;

&lt;h3&gt;
  
  
  A coach that can't lie about you
&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%2Fw8wtqrwpkvckcjbovghx.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%2Fw8wtqrwpkvckcjbovghx.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;br&gt;
Feedback works in three steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Plain measurements, no AI:&lt;/strong&gt; speaking pace, filler words, pauses, and how long it took you to get to your point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma grades the technique&lt;/strong&gt; against a checklist I wrote by hand for each lesson, and has to quote your words as evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A checker compares every quote to your real transcript.&lt;/strong&gt; If it's not there, Gemma gets one more try. If it fails again, the app says "couldn't verify" instead of inventing something. Every failure shows up in &lt;strong&gt;Sentry&lt;/strong&gt;, along with the speed, tokens and cost of every Gemma call.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A coach that praises you with words you never said is worse than no coach at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One honest finding:&lt;/strong&gt; I first ran everything on my laptop with the smallest Gemma. It was way too nice. It once gave 100% to a clearly vague answer. The bigger Gemma 4 on DigitalOcean grades in about &lt;strong&gt;5 seconds&lt;/strong&gt; and is much stricter. So the live app uses that, and the small one stays as the free, offline option.&lt;/p&gt;

&lt;h3&gt;
  
  
  Things that broke at 2 AM
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 kept returning empty answers.&lt;/strong&gt; It was spending all its effort "thinking" and never answering. Turning that off fixed it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The AI returned &lt;code&gt;{}&lt;/code&gt;&lt;/strong&gt; for long lessons 5 out of 6 times in strict JSON mode. Now it quietly retries the normal way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iPhones and Chrome record audio differently.&lt;/strong&gt; Found out the fun way. It handles both now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My laptop ran out of memory.&lt;/strong&gt; 16 GB, no graphics card, Gemma plus Whisper plus Chrome. Something had to give, and it was my Chrome tabs.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Because people practise their scariest conversations here.&lt;/strong&gt; Their real interview. Their real boss. Their real social anxiety. In offline mode, everything runs on your own laptop, and your voice never leaves your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because it keeps the price fair.&lt;/strong&gt; Offline costs nothing. Hosted Gemma 4 costs a fraction of a cent per lesson. That's what makes $5 a month a real business instead of a loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because I'm not locked in.&lt;/strong&gt; The same lessons, checklists and checker run on Gemma on my laptop or on DigitalOcean, switched with one setting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because knowledge should be open too.&lt;/strong&gt; The textbooks behind every lesson are free. That's why every page can show its source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honestly, where a closed model would win:&lt;/strong&gt; it might grade more consistently and write livelier lessons out of the box. But it would still need the same quote checker, and it would put a bill and someone else's data policy between a nervous person and their practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One honest limit:&lt;/strong&gt; both textbooks are licensed for non-commercial use. Perfect for the free tier. The paid tier will need original lessons, built the same grounded way.&lt;/p&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;I sent it to friends on Sunday night and held my breath.&lt;/p&gt;

&lt;p&gt;Four people tried it. &lt;strong&gt;All four rated it 5 out of 5.&lt;/strong&gt; Two said they'd pay $5 a month, two said maybe, and nobody said no. The "maybe" who named a fair price said $3–5.&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;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rated it useful&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 of 4 gave it 5/5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Would pay $5/month&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2 yes, 2 maybe, 0 no&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fair price (from a "maybe")&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$3–5/month&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Liked most&lt;/td&gt;
&lt;td&gt;Progress and badges, talking with the AI partner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who should use it&lt;/td&gt;
&lt;td&gt;Everyone (every single answer)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Figure 2. From the in-app feedback card. A small sample, honest numbers.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;[SCREENSHOT: admin feedback charts]&lt;/p&gt;

&lt;p&gt;My favourite moment: one tester did a practice conversation, read the feedback, and tried again. Their pace went from a hesitant &lt;strong&gt;72 to 143 words per minute&lt;/strong&gt;, right into the comfortable range, and their score on the day's technique went from &lt;strong&gt;0 to 50%&lt;/strong&gt;. Their filler words went up, though, from 0 to 5.7 a minute. Talking more fluently came with more "um"s, which is exactly what the deliberate-pause chapter is for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And the feedback that stung (in a good way):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Confusing to navigate."&lt;/strong&gt; My very first tester asked me for "a conversation." The app already had one. She just couldn't find it. That night I added a big &lt;strong&gt;Practice this&lt;/strong&gt; button at the end of every chapter. Navigation is the first thing I'm reworking next.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Feedback felt generic."&lt;/strong&gt; The hardest problem in the whole app, and the one I care most about fixing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's next:&lt;/strong&gt; easier navigation, original paid chapters, more New Here countries, and weekly progress reports.&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 4 writes every lesson from textbook passages, plays every conversation partner, explains slang mid-conversation, and grades with quoted evidence. It runs as 31B on DigitalOcean and as a small Gemma offline on a laptop with no graphics card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of DigitalOcean:&lt;/strong&gt; serverless inference runs Gemma 4 31B for every lesson, conversation turn and grade, with no GPU to manage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; one Docker web service from a &lt;code&gt;render.yaml&lt;/code&gt; Blueprint serves the whole app, with keys kept out of the repo and usage limits set as environment variables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs:&lt;/strong&gt; a different expressive voice for every conversation partner, plus speech-to-text for every reply, on both Android and iPhone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; vector search over 1,138 textbook passages to build grounded lessons, plus users, notes, progress and feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Sentry Agent Tracing:&lt;/strong&gt; every Gemma call traced with speed, tokens and cost, and every made-up quote the checker catches becomes a Sentry issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built solo with Claude Code, over one very long weekend.&lt;/p&gt;

&lt;p&gt;If you've ever known exactly what you wanted to say and watched it come out wrong, try Chapter 1. Then tell me in the comments: what conversation do &lt;em&gt;you&lt;/em&gt; wish you could practise?&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Made Walking a Game: Quests, a Diary, and an App That Judges Your Screen Time</title>
      <dc:creator>Nikitha Kishore Avadootha</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:09:38 +0000</pubDate>
      <link>https://dev.to/nikithakls17sys/i-made-walking-a-game-quests-a-diary-and-an-app-that-judges-your-screen-time-2fii</link>
      <guid>https://dev.to/nikithakls17sys/i-made-walking-a-game-quests-a-diary-and-an-app-that-judges-your-screen-time-2fii</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;I'm a tired, busy, sometimes anxious college student, and &lt;strong&gt;going outside is what really heals me.&lt;/strong&gt; When I'm out, I notice the little things around me and write them down in my journal. I'm the girl who always stops to take pictures of the sky.&lt;/p&gt;

&lt;p&gt;To me, &lt;strong&gt;being in nature and really looking around is the break people actually need.&lt;/strong&gt; Step counters never gave me that. A number goes up and nothing changes. So I wondered: what if that break could feel like a game?&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Walk Journal&lt;/strong&gt;: &lt;strong&gt;an app that gives you a small outdoor quest, tells you to put your phone away, and then checks your proof.&lt;/strong&gt; Every walk becomes a page in a little diary.&lt;br&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%2Fkocb3ela9as6ipt0xea6.jpeg" 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%2Fkocb3ela9as6ipt0xea6.jpeg" alt=" " width="738" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The goal of the whole app is for you to use it as little as possible.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;It even measures its own screen time, so it knows if you're cheating with your eyes on the phone instead of the sky.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Walk Journal turns a walk into a short quest with 3 to 7 photo tasks. It's for anyone who spends too much time at a screen and wants a gentle reason to go outside and notice things.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You pick how far and how hard.&lt;/strong&gt; "Walk from here" starts from wherever you are, with no destination. "Find me a walk" uses SerpApi to find real parks and trails near you, and Gemma picks the best three for right now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma writes a quest for this place, this season, and this time of day.&lt;/strong&gt; In Missouri in October that means a red leaf, an acorn, the sky before sunset. On an evening walk it skips sky tasks after dark. If the place has a lake in its search data, a task can mention the lake. If it doesn't, the quest is not allowed to invent one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Then the app tells you to put your phone away. 📵&lt;/strong&gt; This is the most important step. Your tasks sit in a notification on your lock screen, so you &lt;strong&gt;don't have to keep opening the app&lt;/strong&gt;. You only take the phone out to snap a photo.
&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%2Fkh9hu0wzomrbz36srdf5.png" alt=" " width="362" height="580"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You take a photo when you find something.&lt;/strong&gt;  Three checks decide if it counts:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Right place:&lt;/strong&gt; the phone's GPS at the moment of the photo, compared to the walk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right time:&lt;/strong&gt; taken during the quest, not last week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right thing:&lt;/strong&gt; Gemma looks at the photo and decides if it's really a red leaf.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When you finish&lt;/strong&gt;, you write a short note on how it felt, and the walk is saved as a diary page with your photos taped in, plus a pin on your map.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the end of every walk, it shows one number I care about more than steps:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;382 seconds on screen. 26 minutes outside.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's from a real tester's walk: &lt;strong&gt;her phone was away for about three quarters of it.&lt;/strong&gt; The less you look at Walk Journal, the better it's working.&lt;br&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%2F5ju35012v6ozbkmuzwn9.jpeg" 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%2F5ju35012v6ozbkmuzwn9.jpeg" alt=" " width="785" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some choices I made on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No daily streaks:&lt;/strong&gt; a weekly goal instead, and the app never says "streak broken."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;75% is a finished walk:&lt;/strong&gt; can't find a ladybug? Most tasks still count, and partial walks are saved too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swaps:&lt;/strong&gt; if a task doesn't fit where you are, Gemma writes a new one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety first:&lt;/strong&gt; no climbing, water, animals, or photos near traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A calm look:&lt;/strong&gt; a cozy farmland style with softly swaying grass.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/e2tGIX1L37w" width="710" height="399"&gt;
  &lt;/iframe&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/nikithakls17-sys" rel="noopener noreferrer"&gt;
        nikithakls17-sys
      &lt;/a&gt; / &lt;a href="https://github.com/nikithakls17-sys/Walk-Journal-" rel="noopener noreferrer"&gt;
        Walk-Journal-
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A quest-giving outdoor journal: local Gemma finds real walks, writes seasonal photo quests, reads them aloud, and verifies your photo proof. The screen is the shortest part. DEV Hacktoberfest 2026 Touch Grass.
    &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;Walk Journal 🌾&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A quest-giving outdoor journal. The screen is the shortest part.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Walk Journal finds real walks near you, writes a seasonal, place-specific photo quest, and reads it aloud so your phone can go in your pocket. When you snap proof, it checks the place, the time, and what's in the photo, all on your own laptop with Gemma. Every walk you finish becomes a pin on your map and a page in your journal.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Built for the &lt;strong&gt;DEV Hacktoberfest 2026 Open-Source AI Challenge, Week 1: Touch Grass&lt;/strong&gt;: &lt;em&gt;"Build something with open-weight models or open-source AI that gets people off the screen and into the world."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nikithakls17-sys/Walk-Journal-/docs/screens.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnikithakls17-sys%2FWalk-Journal-%2FHEAD%2Fdocs%2Fscreens.png" alt="Walk Journal screens: home, dusk mode, phone-away, quest intro, journal"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it gets you outside&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Tap &lt;strong&gt;Find me a walk&lt;/strong&gt;. Pick a distance (Nearby / Walk-Run / Adventure) and a difficulty (Easy / Medium / Hard).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi&lt;/strong&gt; finds real parks, trails and lakes nearby. &lt;strong&gt;Gemma&lt;/strong&gt; picks the best 3 &lt;em&gt;for right&lt;/em&gt;…&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/nikithakls17-sys/Walk-Journal-" 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 main rule: Gemma does the creative work and the seeing. Plain code owns every fact.&lt;/strong&gt;&lt;br&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%2Fv0iukjyu180hkrgglo8z.jpeg" 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%2Fv0iukjyu180hkrgglo8z.jpeg" alt=" " width="738" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;Done by&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Write the quest, rank nearby walks, write swap tasks&lt;/td&gt;
&lt;td&gt;Gemma 4 (&lt;code&gt;gemma4:e4b&lt;/code&gt;), running locally through Ollama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check what's in a photo, read fitness-tracker screenshots&lt;/td&gt;
&lt;td&gt;Gemma 4 vision, locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Season, sunset time, deadlines, distance, photo time and GPS checks, points&lt;/td&gt;
&lt;td&gt;Python code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find real parks and trails&lt;/td&gt;
&lt;td&gt;SerpApi (cached for 7 days)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Map&lt;/td&gt;
&lt;td&gt;Leaflet + OpenStreetMap&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I didn't want to trust a model with anything a person shouldn't have to double-check. So every quest goes through a rule checker before anyone sees it: tasks that mention features the place doesn't have are dropped, unsafe tasks are dropped, repeats of recent task types are dropped, and the deadline is cut so the quest ends before sunset. If Gemma's draft breaks the rules, it gets another try.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base Camp&lt;/strong&gt; is a FastAPI server on my laptop with Ollama, SQLite, and the rule checker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The phone app&lt;/strong&gt; is a plain HTML/JS PWA you can add to your home screen. Phone browsers only allow the camera and GPS over HTTPS, so Base Camp is reached through a Cloudflare tunnel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It works without signal on the trail.&lt;/strong&gt; The quest is saved on the phone before you leave, and photos are stored on the phone with their time and GPS, then sync and get checked when you're back online.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are 106 automated tests, and none of them touch real data or real API keys.&lt;/p&gt;

&lt;p&gt;I built it with Claude Code as my coding assistant. I kept a &lt;code&gt;BUILD_LOG.md&lt;/code&gt; the whole time, which is where the "What went wrong" section below comes from.&lt;/p&gt;

&lt;h3&gt;
  
  
  Taking it outside: real testers
&lt;/h3&gt;

&lt;p&gt;I sent the link to two people: my friend &lt;strong&gt;Veda&lt;/strong&gt;, who lives in Hyderabad, India, and my &lt;strong&gt;dad&lt;/strong&gt;. I asked both the same four questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Veda&lt;/strong&gt; walked for &lt;strong&gt;26 minutes&lt;/strong&gt; and spent &lt;strong&gt;382 seconds&lt;/strong&gt; on screen, so for about three quarters of her walk the phone was away.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Instead of simply monitoring my steps, I think this is a fun way to relax and get some steps in for the day."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;She'd use it again ("yep definitely") and rated it &lt;strong&gt;8/10&lt;/strong&gt;. She wanted more swaps and faster replies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My dad&lt;/strong&gt; said it got him out of the house that day too, and rated it &lt;strong&gt;6/10&lt;/strong&gt;. His honest feedback: quests take too long to appear, he'd use it more if there were rewards like points or coins, and it doesn't know anything about &lt;em&gt;him&lt;/em&gt;, so every walker gets the same kind of quest.&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%2F8y9c4jrx5orqtavsqwtn.jpeg" 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%2F8y9c4jrx5orqtavsqwtn.jpeg" alt=" " width="800" height="1063"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;And me.&lt;/strong&gt; I tapped "Find me a walk," and it sent me to &lt;strong&gt;Lions Lake&lt;/strong&gt; near my apartment for a sunset stroll. The sunset was beautiful. I found exactly what the quest asked for, took my photos along the way, and snuck in a few selfies too.&lt;/p&gt;

&lt;p&gt;The part that surprised me: &lt;strong&gt;I didn't check my phone once in between.&lt;/strong&gt; I knew the app was counting my screen time, and that was enough to keep it in my pocket. For once a walk wasn't about steps or a number. &lt;strong&gt;It was a reason to go outside, look around a little more carefully, and just notice nature for a while.&lt;/strong&gt; That's exactly what I wanted it to feel like.&lt;/p&gt;

&lt;h3&gt;
  
  
  What went wrong (and what I changed)
&lt;/h3&gt;

&lt;p&gt;Real testing broke things that 100 tests didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Gemma asked my friend in Hyderabad to find a red leaf.&lt;/strong&gt;&lt;br&gt;
My season logic was "October + northern hemisphere = fall." That's true in Missouri. In Hyderabad, October is just after the monsoon: green, warm, and full of flowers. She swapped the red leaf and got... an acorn. Now, anywhere between the tropics gets local seasons (summer, monsoon, post-monsoon, winter), with examples like hibiscus, bougainvillea, neem leaves, crows, and mynas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. One photo was checked by Gemma nine times at once, and it crashed my laptop.&lt;/strong&gt;&lt;br&gt;
The phone retries "pending" photos every time it syncs. A photo that was &lt;em&gt;still being checked&lt;/em&gt; counted as pending, so every sync started another parallel check. On a laptop with 16 GB of RAM and a 4.4 GB model loaded, free memory dropped to 0.4 GB and the server was killed. Now a photo that's already being checked is never checked again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Gallery photos arrived with no time or location at all.&lt;/strong&gt;&lt;br&gt;
My dad checked his settings and location was on. It wasn't his phone: phones strip location from photos picked for a website, for privacy. The app labeled these honestly as "time/place not confirmed," but never said &lt;em&gt;why&lt;/em&gt;, so one tester re-picked the same task five times. That's most of her 382 seconds on screen. Now the app explains it and points you to "Take photo."&lt;br&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%2Fba68dpnrh893cktr2i7u.jpeg" 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%2Fba68dpnrh893cktr2i7u.jpeg" alt=" " width="718" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Repeated taps stacked up quests.&lt;/strong&gt;&lt;br&gt;
Writing a quest takes about a minute on my laptop. Testers tapped again while waiting, and each tap queued another quest behind the first, so replies grew from 30 seconds to almost 2 minutes. Now extra taps are ignored and the loading screen says "about 1 minute."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The free tunnel link changed in the middle of a walk.&lt;/strong&gt;&lt;br&gt;
The quick Cloudflare tunnel gives a random link that only lives as long as the tunnel does. When it restarted, the link changed, and photos taken offline were stranded on testers' phones, tied to a link that no longer existed. They aren't lost, but they can't sync. The fix is a permanent tunnel, and it's the first thing on my list.&lt;/p&gt;

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

&lt;p&gt;Look at what this app collects: photos of where you walk, the exact time and GPS of each one, the route near your home, and a note about how you felt. That's a map of someone's daily life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Your photos and location never leave the laptop.&lt;/strong&gt; Gemma checks every photo on my own machine. There's no "we don't train on your data" promise to trust, because the data physically never goes to an AI company. With a closed vision API, checking a photo &lt;em&gt;means&lt;/em&gt; uploading it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. It costs nothing per photo.&lt;/strong&gt; A walk can take ten photo checks and two swaps. Nobody has to wonder whether a retake is "worth" an API call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. I could see inside it and fix it.&lt;/strong&gt; When Gemma's thinking mode broke my JSON, I turned it off. When replies were slow after idle time, I could see it was the model reloading into memory and keep it loaded. A hosted API would just have been slow or broken with no explanation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. I can swap models.&lt;/strong&gt; Today it's &lt;code&gt;gemma4:e4b&lt;/code&gt; because that's what fits on my laptop. With a better GPU it's one setting to use a bigger model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What goes off the laptop, honestly:&lt;/strong&gt; place searches to SerpApi (like "parks near Warrensburg") and nothing else. Quest photos, GPS, journal notes, and moods stay on my machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-off is speed.&lt;/strong&gt; Running a vision model on a normal student laptop is slow: about a minute to write a quest and 10 to 30 seconds per photo check. Both testers noticed. I think it's the right trade for an app whose whole job is to be on your screen as little as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest limits:&lt;/strong&gt; Gemma can tell "this is a lake," not "this is &lt;em&gt;that&lt;/em&gt; lake" (the GPS check covers that), and it only measures time spent in Walk Journal, not your whole phone.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;permanent link&lt;/strong&gt; so offline photos always sync, &lt;strong&gt;faster quests&lt;/strong&gt;, &lt;strong&gt;rewards&lt;/strong&gt; like coins (my dad is right that points aren't enough), &lt;strong&gt;personalization&lt;/strong&gt; by fitness level, and &lt;strong&gt;more swaps&lt;/strong&gt;, as Veda asked.&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 4 (&lt;code&gt;gemma4:e4b&lt;/code&gt;) runs locally through Ollama and does all the AI work: writing seasonal, place-aware quests, ranking nearby walks, writing swap tasks, checking every photo with vision, and reading fitness-tracker screenshots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of SerpApi:&lt;/strong&gt; SerpApi's Google Maps search finds real parks and trails near the walker, so Gemma only ever builds quests around places that actually exist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading. Go outside for ten minutes. Find a leaf.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>serpapi</category>
    </item>
    <item>
      <title>My Friend loves baking sweets but wants to eat healthy</title>
      <dc:creator>Nikitha Kishore Avadootha</dc:creator>
      <pubDate>Sun, 04 Oct 2026 18:30:00 +0000</pubDate>
      <link>https://dev.to/nikithakls17sys/my-friend-loves-baking-sweets-but-wants-to-eat-healthy-5b96</link>
      <guid>https://dev.to/nikithakls17sys/my-friend-loves-baking-sweets-but-wants-to-eat-healthy-5b96</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;My friend Akshitha loves baking sweets. She's also managing PCOS, which means every meal comes with a mental checklist: &lt;em&gt;Is this okay for me? What's actually in it? Is there a better version?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;She counts calories, swaps meals for "lighter" versions, and looks up ingredients constantly. It's a lot of thinking for something that should feel good, like cooking.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Akshitha's Kitchen&lt;/strong&gt;: a small web app that already knows her health needs, so she doesn't have to start from zero every time she's hungry.&lt;/p&gt;

&lt;p&gt;It does four things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Swap It:&lt;/strong&gt; She types any dish she ate or saw, like butter chicken with naan or bubble tea, and gets a more nourishing version: each ingredient, what to swap it for, and why, while keeping the foods she loves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Fridge:&lt;/strong&gt; She adds what she already has, and it suggests 3 recipes, flags anything missing, and explains why each one works for PCOS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Day Plan:&lt;/strong&gt; Breakfast, lunch, snack and dinner for today, built around her kitchen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Food Log:&lt;/strong&gt; She writes what she ate in plain words, and it tags it by protein, fiber, veggies and added sugar, then gives one kind tip.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The one rule I gave myself: no calorie numbers anywhere.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Akshitha already spends so much energy counting. Another app showing her numbers would just be another thing judging her. I wanted this to feel like a friend in the kitchen, focused on what to &lt;em&gt;add&lt;/em&gt; to her plate, not just what to take away.&lt;/p&gt;

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

&lt;p&gt;Swapping a dish, cooking from the fridge, and planning the day:&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%2Frp2gm50bz8xpodedegvs.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%2Frp2gm50bz8xpodedegvs.png" alt="Akshitha's Kitchen screenshot" width="799" height="364"&gt;&lt;/a&gt;&lt;br&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%2Fcbewd7ku0z8dmj109x1r.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%2Fcbewd7ku0z8dmj109x1r.png" alt="Akshitha's Kitchen screenshot" width="800" height="365"&gt;&lt;/a&gt;&lt;br&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%2Fewqxifdl6ia8vjq16nbs.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%2Fewqxifdl6ia8vjq16nbs.png" alt="Akshitha's Kitchen screenshot" width="799" height="366"&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/nikithakls17-sys" rel="noopener noreferrer"&gt;
        nikithakls17-sys
      &lt;/a&gt; / &lt;a href="https://github.com/nikithakls17-sys/Akshitha-s-needs-help-cooking" rel="noopener noreferrer"&gt;
        Akshitha-s-needs-help-cooking
      &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;Akshita's Kitchen&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A friendly little web app that helps you cook nourishing food you actually love, built around your health conditions and whatever's already in your fridge.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Who it's for&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Akshita (and anyone like her) who manages health conditions such as &lt;strong&gt;PCOS, thyroid, or insulin resistance&lt;/strong&gt; through food. She wants healthier, more nourishing versions of foods she enjoys, not diets or restriction. The app has &lt;strong&gt;no calorie numbers anywhere&lt;/strong&gt;. It focuses on balance and adding good things, and keeps a warm, encouraging tone.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tab&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Swap It&lt;/strong&gt; (the main feature, and the first screen)&lt;/td&gt;
&lt;td&gt;Type any dish ("butter chicken with naan", "bubble tea") to get a lighter, more nourishing version: ingredient swaps (original → swap → why) and how to make it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;My Fridge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Add what you have as chips. "What can I make?" gives 3 recipes using mostly those items, marks what you're&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nikithakls17-sys/Akshitha-s-needs-help-cooking" 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;AI:&lt;/strong&gt; Gemma 4 (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;), Google's open-weight model, through the free Google AI Studio API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App:&lt;/strong&gt; one HTML file with plain JavaScript. No backend, no build step, no install. Akshitha just opens it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; her profile, fridge and food log live only in her own browser (localStorage). There's no database and no account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built with:&lt;/strong&gt; Claude Code as my coding assistant, on a very tight deadline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How Gemma is wired in:&lt;/strong&gt; every request includes Akshitha's profile (PCOS, the foods she loves, the foods she avoids, and her diet style). So Gemma never gives generic "healthy eating" advice. Every answer is written for &lt;em&gt;her&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I asked Gemma to reply in JSON, so the app can turn its answers into clean recipe cards and swap tables instead of walls of text. If a reply doesn't come back clean, the app shows a friendly retry instead of breaking.&lt;/p&gt;

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

&lt;p&gt;This app handles some of the most personal data there is: a diagnosis, eating habits, and what someone ate today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Her data, her device.&lt;/strong&gt; Because Gemma is open-weight, the model isn't locked behind one company's servers. The app has a setting to switch to a local Gemma through Ollama, so it can run fully on Akshitha's own laptop with no internet, and her health details never leave her device. With a closed model, that data would always have to go somewhere else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to keep using.&lt;/strong&gt; A student building for a friend shouldn't need a paid AI subscription for that friend to keep using it. Gemma is free on AI Studio's free tier, and free forever if it runs locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No lock-in.&lt;/strong&gt; The same open model runs in the cloud or on her laptop. If a better open model comes along, I can swap it in with one setting, without rewriting the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Akshitha Said
&lt;/h2&gt;

&lt;p&gt;I sent it to her, and this is what she said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I love cooking and I love what you built for me.&lt;br&gt;
Ya, cooking while keeping all the restrictions in mind is tiring, I need something like this.&lt;/p&gt;
&lt;/blockquote&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%2F72bovguerb95wm3ayaok.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%2F72bovguerb95wm3ayaok.png" alt="Akshitha's reaction" width="800" height="366"&gt;&lt;/a&gt;&lt;br&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%2Fsw6fdtxdqagc7ex8d9m3.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%2Fsw6fdtxdqagc7ex8d9m3.png" alt="Akshitha's reaction" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And then:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But AI can't cook as good as I do, so I am gonna use my cookbook and maybe sometimes ask for its opinion.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Honestly? That's exactly what I hoped for. I didn't want to replace her cooking. I wanted to take some of the worrying out of it.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Snap a photo of the fridge and let Gemma read the ingredients&lt;/li&gt;
&lt;li&gt;Recipe steps read aloud while she cooks&lt;/li&gt;
&lt;li&gt;A weekly grocery list built from her day plans&lt;/li&gt;
&lt;li&gt;Healthier swaps for her baking, since that's where her heart is&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 4 is the whole brain of the app. It reads Akshitha's profile and creates every recipe, ingredient swap, day plan, and food log tag.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ideas only, not medical advice. Akshitha still checks with her doctor about her PCOS plan.&lt;/em&gt;&lt;/p&gt;

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