<?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: Dnyaneshwar More</title>
    <description>The latest articles on DEV Community by Dnyaneshwar More (@dnyaneshwarmore2500).</description>
    <link>https://dev.to/dnyaneshwarmore2500</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Dnyaneshwar More</title>
      <link>https://dev.to/dnyaneshwarmore2500</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dnyaneshwarmore2500"/>
    <language>en</language>
    <item>
      <title>Orderly: turning WhatsApp voice notes into priced orders, on the shop's own computer</title>
      <dc:creator>Dnyaneshwar More</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:58:07 +0000</pubDate>
      <link>https://dev.to/dnyaneshwarmore2500/orderly-turning-whatsapp-voice-notes-into-priced-orders-on-the-shops-own-computer-1e55</link>
      <guid>https://dev.to/dnyaneshwarmore2500/orderly-turning-whatsapp-voice-notes-into-priced-orders-on-the-shops-own-computer-1e55</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my 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;
  
  
  The side hustle
&lt;/h2&gt;

&lt;p&gt;Every evening between 6:30 and 8:30 PM, Ramesh's neighborhood grocery store gets bombarded with WhatsApp messages and 15-second voice notes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"bhaiya, do kilo cheeni, ek tel, aur adha kilo chai patti, Patil ke ghar bhej do."

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Between bagging goods and attending to counter customers, Ramesh has to replay each audio note multiple times, scribble items on a paper slip, calculate the prices by hand, and type out an invoice reply.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Orderly&lt;/strong&gt; takes that voice note or typed text and instantly produces an itemized, priced order and a ready-to-send WhatsApp reply. Would the shop pay? Ramesh confirmed he would readily pay ₹150–₹200 a month: &lt;em&gt;"If it calculates my voice orders with zero math errors right from my counter laptop, it easily saves me an hour every single evening."&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://youtu.be/nqq5O7QAI9w" rel="noopener noreferrer"&gt;Watch the demo on YouTube&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%2F0qhn36y50utkk7yxebzb.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%2F0qhn36y50utkk7yxebzb.jpg" alt="Orderly App Interface" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/dnano-more/orderly" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open source mattered here
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The data belongs to the customers.&lt;/strong&gt; Voice notes carry names, home addresses and what a family buys. A small shop should not have to send that to a foreign cloud service to read its own orders. Orderly's speech-to-text (faster-whisper) and its language model (Gemma, via Ollama) both run on the shop's own computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cost per order is zero.&lt;/strong&gt; A shop that handles 30 orders a day cannot absorb a per-message fee. With open weights, the 10,000th order costs the same as the first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The language gap is real.&lt;/strong&gt; Customers rarely order in dictionary Hindi or Marathi. They mix Marathi words (&lt;em&gt;tandul&lt;/em&gt;, &lt;em&gt;sakhar&lt;/em&gt;, &lt;em&gt;varan&lt;/em&gt;, &lt;em&gt;pith&lt;/em&gt;), Hindi (&lt;em&gt;cheeni&lt;/em&gt;, &lt;em&gt;atta&lt;/em&gt;, &lt;em&gt;bhej do&lt;/em&gt;), number words (&lt;em&gt;don&lt;/em&gt;, &lt;em&gt;ek&lt;/em&gt;, &lt;em&gt;char&lt;/em&gt;) and fractions (&lt;em&gt;aadha kilo&lt;/em&gt;). Because the models are open and local, I could test these real edge cases directly, choose the Whisper size, and tune the prompt for this exact kind of message. faster-whisper transcribes locally on the shop's computer, and Gemma extracts items and units as strict JSON at temperature 0.
## How it works
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;voice note -&amp;gt; faster-whisper -&amp;gt; Gemma (JSON, temperature 0) -&amp;gt; validator
           -&amp;gt; prices from the shop's own catalogue.json -&amp;gt; invoice + reply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The decision I'm most sure about: &lt;strong&gt;the model reads, the code prices.&lt;/strong&gt; Gemma extracts items and quantities. It never sees a price. Prices come from the shop's catalogue, so the model cannot invent a total. Anything unclear (an item not in the catalogue, "2 litre" of something sold per packet, a quantity it cannot read) is shown in a "Check these" list instead of being guessed.&lt;/p&gt;

&lt;p&gt;If Ollama is not running, a rule-based parser takes over and the page says which one was used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does it work? (real numbers)
&lt;/h2&gt;

&lt;p&gt;I ran &lt;code&gt;python eval.py --model gemma3:1b&lt;/code&gt; on 30 [[CONFIRM: "real customer messages" if they came from real customers, otherwise "realistic messages I wrote from the orders Ramesh gets"]] in Hindi, Marathi, Hinglish and English (&lt;code&gt;eval/cases.jsonl&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Whole orders exactly right:&lt;/strong&gt; 30 of 30&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Item precision:&lt;/strong&gt; 100%&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Item recall:&lt;/strong&gt; 100%
I tuned the prompt and parser using the mistakes on these 30, so I also wrote 10 fresh messages without looking at the code. On those: [[CONFIRM: X of 10 whole orders exactly right]].&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;One honest failure, and the fix.&lt;/strong&gt; On &lt;code&gt;"bhaiya 2 kilo toor dal aur 1 litre tel bhej do"&lt;/code&gt;, my rule-based fallback parser dropped &lt;code&gt;toor dal&lt;/code&gt; and kept only the oil. The greeting &lt;code&gt;bhaiya&lt;/code&gt; was being read as part of the first item instead of being separated from the quantity &lt;code&gt;2&lt;/code&gt;. Marathi orders also use &lt;code&gt;don&lt;/code&gt; instead of &lt;code&gt;do&lt;/code&gt; for two, and items like &lt;code&gt;tandul&lt;/code&gt; (rice) or &lt;code&gt;varan&lt;/code&gt; (dal). I fixed it by stripping conversational prefixes (&lt;code&gt;bhaiya&lt;/code&gt;, &lt;code&gt;bhau&lt;/code&gt;, &lt;code&gt;kaka&lt;/code&gt;, &lt;code&gt;dada&lt;/code&gt;) and adding Marathi number words (&lt;code&gt;don&lt;/code&gt;: 2, &lt;code&gt;daha&lt;/code&gt;: 10) in &lt;code&gt;orderly.py&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first user
&lt;/h2&gt;

&lt;p&gt;I tested Orderly with a local kirana store owner in Maharashtra whose customers regularly send order lists and voice notes on WhatsApp in Marathi and Hinglish.&lt;/p&gt;

&lt;p&gt;During the evening rush he juggles writing voice orders on paper pads while answering phone calls and calculating rates by hand. What first confused the system was fast colloquial phrasing (&lt;em&gt;tandul&lt;/em&gt;, &lt;em&gt;varan&lt;/em&gt;, &lt;em&gt;pith&lt;/em&gt;) and greetings with addresses (&lt;em&gt;bhaiya&lt;/em&gt;, &lt;em&gt;Patil ke ghar&lt;/em&gt;). Once the aliases and his price catalogue were set up, he said: &lt;em&gt;"It saves writing down items on scrap paper and punching totals on the calculator while three people are waiting at the counter."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When I asked if he would pay, he said he would gladly pay ₹150–₹200 a month for a simple tool on his counter laptop that doesn't charge per message and keeps customer addresses and buying history private.&lt;/p&gt;

&lt;h2&gt;
  
  
  Partner tech
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prize category: Best Use of Gemma.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gemma is the order-reading model, run locally through Ollama. I used Google's &lt;code&gt;gemma3:1b&lt;/code&gt; (about 806 MB of weights), which runs on CPU at roughly 12–15 seconds per order at temperature 0 and returns clean, structured JSON without a GPU or any cloud API key.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd do next
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;In-browser catalogue editor:&lt;/strong&gt; let shopkeepers add and edit items and mark items out of stock from the web page, without editing &lt;code&gt;catalogue.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp Business API connection:&lt;/strong&gt; capture incoming voice notes and post ready invoices back automatically, instead of using a &lt;code&gt;wa.me&lt;/code&gt; link.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily ledger and totals:&lt;/strong&gt; an end-of-day summary of orders, quantities sold and pending cash on delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More dialects:&lt;/strong&gt; Gujarati, Kannada and regional Marathi variants.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>gemmachallenge</category>
    </item>
  </channel>
</rss>
