<?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: Suman Kumar Jha</title>
    <description>The latest articles on DEV Community by Suman Kumar Jha (@electron005).</description>
    <link>https://dev.to/electron005</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%2F4157513%2Ff4984f09-2a3e-4472-ad37-4625ad4ee1eb.png</url>
      <title>DEV Community: Suman Kumar Jha</title>
      <link>https://dev.to/electron005</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/electron005"/>
    <language>en</language>
    <item>
      <title>Noted: a Hinglish-aware app that turns my friend's WhatsApp chaos into calendar events</title>
      <dc:creator>Suman Kumar Jha</dc:creator>
      <pubDate>Sun, 04 Oct 2026 15:20:22 +0000</pubDate>
      <link>https://dev.to/electron005/noted-a-hinglish-aware-app-that-turns-my-friends-whatsapp-chaos-into-calendar-events-44nh</link>
      <guid>https://dev.to/electron005/noted-a-hinglish-aware-app-that-turns-my-friends-whatsapp-chaos-into-calendar-events-44nh</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I asked a friend what app he wished he had, and the answer was this one.&lt;/p&gt;

&lt;p&gt;Like most of us, his college information doesn't arrive in a calendar. It arrives in WhatsApp groups, buried between memes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Bhai kal 11 baje DBMS ka quiz hai, unit 3 tak.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Assignment submission last date 18/10 5pm.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By the time you scroll back to find it, you've already missed it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Noted&lt;/strong&gt; is an Android app that closes the gap between "a message in a group" and "I won't forget this":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Share or paste&lt;/strong&gt; a WhatsApp message into Noted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swipe right&lt;/strong&gt; to add it to the calendar, &lt;strong&gt;swipe left&lt;/strong&gt; to save it as a note with a topic checklist, or &lt;strong&gt;long-press&lt;/strong&gt; to set a reminder.&lt;/li&gt;
&lt;li&gt;It understands &lt;strong&gt;English, Hinglish and Devanagari&lt;/strong&gt; ("kal", "parso", "saadhe 9 baje", "कल सुबह ८ बजे") and asks you to confirm ambiguous dates instead of guessing.&lt;/li&gt;
&lt;li&gt;Reminders fire &lt;strong&gt;even when the app is closed&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;study planner&lt;/strong&gt; turns your deadlines into a 7-day schedule around your classes and sleep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything stays on the phone. No account and no server are needed.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Download the APK: &lt;a href="https://github.com/SkjOO5/Noted/releases/latest" rel="noopener noreferrer"&gt;https://github.com/SkjOO5/Noted/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&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/SkjOO5" rel="noopener noreferrer"&gt;
        SkjOO5
      &lt;/a&gt; / &lt;a href="https://github.com/SkjOO5/Noted" rel="noopener noreferrer"&gt;
        Noted
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Turn messy college WhatsApp messages into calendar events, notes and reminders with one swipe. 100% offline-first Android app + ML Study Planner.
    &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;Noted&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Turn messy college WhatsApp messages into calendar events, notes and reminders, with one swipe.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bhoolna mat. Don't forget.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hacktoberfest.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a2b318140d58f56862ecd5581d006b961f44164e891dbd5fd6834b93f824756f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d626c756576696f6c6574" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://dev.to" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d9ae8780eb4fd11ded12d5caafb773c4b8bb80b2f040aa1456c99c0cd8f00048/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4445562532304368616c6c656e67652d4275696c64253230666f7225323061253230467269656e642d626c61636b" alt="DEV Challenge"&gt;&lt;/a&gt;
&lt;a href="https://github.com/SkjOO5/Noted/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com/SkjOO5/Noted/CONTRIBUTING.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dd0b24c1e6776719edb2c273548a510d6490d8d25269a043dfabbd38419905da/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667" alt="PRs Welcome"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3d1d2708359293a890e92b0a7fbfff75a1dd7fa930c9bc12d4f5f4e4baa2e5aa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506c6174666f726d2d416e64726f69642d334444433834"&gt;&lt;img src="https://camo.githubusercontent.com/3d1d2708359293a890e92b0a7fbfff75a1dd7fa930c9bc12d4f5f4e4baa2e5aa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506c6174666f726d2d416e64726f69642d334444433834" alt="Platform"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9d9bbb18ae38f7a257e2cb9c9c9bf2054cd2197cc24429d9cd570a8e02940068/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f576f726b732d6f66666c696e652d6f72616e6765"&gt;&lt;img src="https://camo.githubusercontent.com/9d9bbb18ae38f7a257e2cb9c9c9bf2054cd2197cc24429d9cd570a8e02940068/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f576f726b732d6f66666c696e652d6f72616e6765" alt="Offline"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/SkjOO5/Noted/../../releases" rel="noopener noreferrer"&gt;Download APK&lt;/a&gt; · &lt;a href="https://github.com/SkjOO5/Noted/../../issues" rel="noopener noreferrer"&gt;Report a bug&lt;/a&gt; · &lt;a href="https://github.com/SkjOO5/Noted/../../issues" rel="noopener noreferrer"&gt;Request a feature&lt;/a&gt; · &lt;a href="https://github.com/SkjOO5/Noted#" rel="noopener noreferrer"&gt;Read the DEV post&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots&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;Messages&lt;/th&gt;
&lt;th&gt;Calendar&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Reminders&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/SkjOO5/Noted/docs/screenshots/messages.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%2FSkjOO5%2FNoted%2FHEAD%2Fdocs%2Fscreenshots%2Fmessages.png" alt="Messages"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/SkjOO5/Noted/docs/screenshots/calendar.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%2FSkjOO5%2FNoted%2FHEAD%2Fdocs%2Fscreenshots%2Fcalendar.png" alt="Calendar"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/SkjOO5/Noted/docs/screenshots/notes.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%2FSkjOO5%2FNoted%2FHEAD%2Fdocs%2Fscreenshots%2Fnotes.png" alt="Notes"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer" href="https://github.com/SkjOO5/Noted/docs/screenshots/reminders.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%2FSkjOO5%2FNoted%2FHEAD%2Fdocs%2Fscreenshots%2Freminders.png" alt="Reminders"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The problem&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Most college information now lives in WhatsApp groups: quiz dates, syllabus, assignment deadlines, room changes, holidays. It arrives buried between "good morning" messages and memes. To act on any of it, you have to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;leave WhatsApp,&lt;/li&gt;
&lt;li&gt;open a calendar or notes app,&lt;/li&gt;
&lt;li&gt;retype the date and details,&lt;/li&gt;
&lt;li&gt;set a reminder,&lt;/li&gt;
&lt;li&gt;go back and hope you did not lose your place.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;People skip the steps, and then miss the quiz. This project was built for a friend who kept doing exactly that.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The solution&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Share (or paste) a WhatsApp message into &lt;strong&gt;Noted&lt;/strong&gt;. It reads the message, understands the date and time (including Hinglish like &lt;em&gt;"kal 10 baje DBMS quiz,&lt;/em&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/SkjOO5/Noted" 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;WhatsApp has no API for reading your chats&lt;/strong&gt;, so I didn't pretend it does. Noted gets messages through the Android share sheet, paste, or an exported chat file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;App:&lt;/strong&gt; React, TypeScript and Capacitor for Android, with Dexie for on-device storage and scheduled local notifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Date parser:&lt;/strong&gt; a Hinglish and Devanagari normalizer in front of chrono-node. Relative words like "kal" are resolved against &lt;strong&gt;the message's own timestamp&lt;/strong&gt;, so importing an old chat still gives the right date. It is covered by dozens of bilingual test fixtures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguity is shown, not hidden:&lt;/strong&gt; "11/12" asks for confirmation, and a missing time is marked "time unconfirmed" (defaulting to 9:00 AM).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The open-weight AI part
&lt;/h3&gt;

&lt;p&gt;I wanted to know whether an open model could generate good study plans. I fine-tuned &lt;strong&gt;Qwen3-8B with LoRA on Tinker&lt;/strong&gt;, using 800 training, 100 validation and 100 held-out scenarios. A rule-based validator checks 8 constraints on every plan: overlaps, sleep window, classes, deadlines, daily limit, breaks, topic coverage and buffers.&lt;/p&gt;

&lt;p&gt;The fine-tuned model beat the base model by a small margin (17 vs. 21 out of 100, which is within noise) and was far behind the greedy planner. Scheduling under hard constraints is a poor fit for free-form text generation.&lt;/p&gt;

&lt;p&gt;So the design follows the data: &lt;strong&gt;the offline greedy planner is the default, and it is the only planner in the shipped APK.&lt;/strong&gt; The APK does not contain or download any model. The Qwen3-8B + LoRA planner lives in an optional cloud backend in the repo (&lt;code&gt;cloud/&lt;/code&gt;), where every model plan is checked by the same validator and invalid ones fall back to the greedy plan.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I could test my own assumption.&lt;/strong&gt; Open weights and cheap fine-tuning let me compare a base model, a tuned model and a plain algorithm on my own data. The answer was "keep the model optional," and I only learned that because the whole pipeline was mine to run and measure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy for a group chat.&lt;/strong&gt; College chats are full of names. The core app never uploads them, and the optional planner is designed to send only dates, durations and course labels, never message text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I keep what I trained.&lt;/strong&gt; The LoRA adapter is mine to host, swap or retrain as better small open models appear, and the app works fine without it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Messages come in through share, paste or export. Noted can't read WhatsApp on its own.&lt;/li&gt;
&lt;li&gt;Android only. Reminder timing can vary on phones that aggressively kill background apps, so Noted also exports &lt;code&gt;.ics&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;Parsing is heuristic and covers common phrasing, not every sentence.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Tinker:&lt;/strong&gt; a LoRA fine-tune of Qwen3-8B with a held-out benchmark, reported honestly (a modest gain over the base model, well below the rule-based planner).&lt;/li&gt;
&lt;/ul&gt;

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