<?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: Gourav</title>
    <description>The latest articles on DEV Community by Gourav (@gourav_75728ebebcf38a8732).</description>
    <link>https://dev.to/gourav_75728ebebcf38a8732</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%2F4186851%2F78443a74-2307-453f-899d-77f7d2fb1c17.png</url>
      <title>DEV Community: Gourav</title>
      <link>https://dev.to/gourav_75728ebebcf38a8732</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gourav_75728ebebcf38a8732"/>
    <language>en</language>
    <item>
      <title>Yap Now, Find It Later: A Voice Notebook on Open Models</title>
      <dc:creator>Gourav</dc:creator>
      <pubDate>Sun, 18 Oct 2026 17:30:54 +0000</pubDate>
      <link>https://dev.to/gourav_75728ebebcf38a8732/yap-now-find-it-later-a-voice-notebook-on-open-models-371n</link>
      <guid>https://dev.to/gourav_75728ebebcf38a8732/yap-now-find-it-later-a-voice-notebook-on-open-models-371n</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;&lt;strong&gt;YapIt is a private voice notebook.&lt;/strong&gt; You tap the mic, talk the way you normally would, and it turns what you said into a structured note you can actually use later. Nothing leaves your computer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Ravi owes me 1.5 lakh for the laptop, he'll pay next Friday."&lt;/em&gt;&lt;br&gt;
→ &lt;strong&gt;Payment&lt;/strong&gt; · Ravi · owes you · ₹1,50,000 · due Fri 30 Oct&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Team review with Sunita and Tarun next Wednesday at 2 pm."&lt;/em&gt;&lt;br&gt;
→ &lt;strong&gt;Event&lt;/strong&gt; · Team review · Wed 28 Oct · 2 PM · Sunita, Tarun&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It sorts every note into one of five types (payment, promise, event, info, general), fills in the details, double-checks them, and shows you a draft to confirm. It also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turns away things that aren't notes (a mic test, &lt;em&gt;"play some music"&lt;/em&gt;);&lt;/li&gt;
&lt;li&gt;asks you to re-record unclear audio;&lt;/li&gt;
&lt;li&gt;warns you about notes that don't make sense, like a meeting at &lt;em&gt;25 PM&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The problem it solves:&lt;/strong&gt; quick thoughts get lost, or end up as messy text you never read again. Apps that &lt;em&gt;understand&lt;/em&gt; your notes usually send everything to a cloud server, and many notes are private: money, plans, other people's details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who would pay:&lt;/strong&gt; anyone who captures things on the move.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Students:&lt;/strong&gt; deadlines, and who borrowed their notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freelancers:&lt;/strong&gt; client promises, and who owes them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small business owners:&lt;/strong&gt; orders, payments, appointments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everyone:&lt;/strong&gt; splitting bills, birthdays, reminders.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;YapIt runs on your own machine with zero per-note cost, so it can be sold as a cheap &lt;strong&gt;one-time purchase&lt;/strong&gt;. There's no server bill eating the margin.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ipW-0ybAFug" width="710" height="399"&gt;
  &lt;/iframe&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%2F7bw1jtbgo4lp5zymq2kv.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%2F7bw1jtbgo4lp5zymq2kv.png" alt="Demo img" width="800" height="450"&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%2Fpe8arlokcj5n2uwcufuq.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%2Fpe8arlokcj5n2uwcufuq.png" alt="Demo img" width="800" height="450"&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%2Fkadpsmvngtwgdem9tz06.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%2Fkadpsmvngtwgdem9tz06.png" alt="Demo img" width="800" height="450"&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/gouravk001" rel="noopener noreferrer"&gt;
        gouravk001
      &lt;/a&gt; / &lt;a href="https://github.com/gouravk001/YapIt" rel="noopener noreferrer"&gt;
        YapIt
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI Note taking application 
    &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;YapIt&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A private voice notebook: say it, and YapIt turns it into an organised note, entirely on your own computer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Speak naturally and YapIt figures out what kind of note it is and fills in the details:&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You say&lt;/th&gt;
&lt;th&gt;YapIt saves&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;"Ravi owes me 1.5 lakh for the laptop, he'll pay next Friday"&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Payment:&lt;/strong&gt; Ravi · owes you · ₹1,50,000 · due Fri 30 Oct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;"Physics assignment is due on the 25th, I told Meera I'd share my notes"&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Promise:&lt;/strong&gt; Meera · share notes · due Sun 25 Oct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;"Team review with Sunita and Tarun next Wednesday at 2 pm"&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Event:&lt;/strong&gt; Team review · Wed 28 Oct · 2 PM · Sunita, Tarun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;"The office Wi-Fi password is brew2026"&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Info:&lt;/strong&gt; Office Wi-Fi password · brew2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;You check the draft and save it. Speech recognition and the language model run locally on
open-weight models, so nothing leaves your machine and there's…&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/gouravk001/YapIt" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Setup is in the README. With Ollama installed, &lt;code&gt;./dev.sh&lt;/code&gt; starts everything.&lt;/p&gt;

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

&lt;p&gt;Everything runs locally on my laptop: an &lt;strong&gt;RTX 4060 Laptop GPU with 8 GB of VRAM&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 4B&lt;/strong&gt; (open weights, run through &lt;strong&gt;Ollama&lt;/strong&gt;) understands the notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;faster-whisper&lt;/strong&gt; (&lt;code&gt;small.en&lt;/code&gt;) turns speech into text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI + SQLite&lt;/strong&gt; with full-text search store the notes; &lt;strong&gt;React + Vite + Tailwind&lt;/strong&gt; for the app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model size wasn't arbitrary: an 8 GB GPU has to hold Whisper and the language model at the same time, so about 4B parameters is the sweet spot. Bigger models get much slower.&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%2Fur67mqsd628pjqq98tdf.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%2Fur67mqsd628pjqq98tdf.png" alt="Pipeline Diagram" width="433" height="931"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A single "turn this into JSON" prompt on a 4B model is fragile, so YapIt runs a short pipeline where each step does one job, and every LLM reply is forced into a JSON schema:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Transcribe&lt;/strong&gt; with Whisper, with voice activity detection turned on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classify:&lt;/strong&gt; is this a note at all, and which type?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extract&lt;/strong&gt; the fields. The schema comes from a YAML type definition, so a new note type needs no code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolve&lt;/strong&gt; dates, money and names &lt;em&gt;in code, not in the model.&lt;/em&gt; "Next Friday", "end of the month" and "1.5 lakh" are computed exactly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refine:&lt;/strong&gt; a second pass re-reads the transcript, fixes mistakes, and writes a one-line summary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plausibility check:&lt;/strong&gt; cheap rules first, then one short question to the model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The UI streams each stage live (&lt;em&gt;Understanding → Filling in details → Tidying up → Double-checking&lt;/em&gt;), so the ~2.7 s wait never feels stuck.&lt;/p&gt;

&lt;h3&gt;
  
  
  What broke, and how I fixed it
&lt;/h3&gt;

&lt;p&gt;Some of the Problems I encountered:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whisper invented text from silence.&lt;/strong&gt; When a recording had no real speech, just silence, a beep or background noise, Whisper didn't return nothing. It returned confident nonsense. Turning on voice activity detection, rejecting known junk phrases and low-confidence transcripts, and refusing transcripts that are too short fixed it. YapIt now says &lt;em&gt;"Let's try that again"&lt;/em&gt; instead of saving garbage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma kept getting who owes whom backwards.&lt;/strong&gt; &lt;em&gt;"I have to give Ram 200 rupees"&lt;/em&gt; was saved as &lt;em&gt;Ram owes me&lt;/em&gt;. Two changes helped most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the model first restates the note in plain words (&lt;em&gt;"so I will give Ram ₹200"&lt;/em&gt;);&lt;/li&gt;
&lt;li&gt;it chooses between plain sentences, "I will give the money" and "I will receive the money", instead of codes like &lt;code&gt;i_owe_them&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On my hardest phrasings, that went from &lt;strong&gt;4/10 to 8/10&lt;/strong&gt; correct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Small models copy your examples.&lt;/strong&gt; After I added example summaries to the prompt, "Team meeting tomorrow" came back as &lt;em&gt;"Team lunch with Sara, Thursday"&lt;/em&gt;, lifted straight from an example. Examples are now explicitly marked "style only".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"30th of February" became 30 October.&lt;/strong&gt; My date parser ignored month names entirely. It now understands them, and impossible dates are left blank and flagged rather than guessed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning about unrealistic notes took three attempts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;asking inside an existing step: the model never raised anything;&lt;/li&gt;
&lt;li&gt;a multiple-choice "what's wrong?" prompt: 31 false alarms on 40 ordinary notes;&lt;/li&gt;
&lt;li&gt;a second "verify" pass: it rejected every warning, real ones included.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What worked was rules first (dates decades away, absurd amounts, impossible dates), then one focused yes/no question only when the rules find nothing. Result: &lt;strong&gt;all 6 unreasonable test notes caught, and 1 false alarm in 39 ordinary ones.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tried and postponed:&lt;/strong&gt; auto-correcting mishearings ("welding" → "wedding"). The model fixed about half, but it also "fixed" &lt;em&gt;"buy welding rods"&lt;/em&gt; into &lt;em&gt;"wedding rods"&lt;/em&gt;. A wrong correction is worse than none.&lt;/p&gt;

&lt;h3&gt;
  
  
  Picking the model: a benchmark, not vibes
&lt;/h3&gt;

&lt;p&gt;Because the models are open, I could test them properly. I built a benchmark that runs &lt;strong&gt;119 held-out test notes&lt;/strong&gt; through YapIt's real pipeline: tricky payment directions, Indian amounts, relative dates, non-notes and deliberately unreasonable notes. Adding a model to compare is one line in a YAML file: it downloads the model if needed, tests it, and updates the comparison.&lt;/p&gt;

&lt;p&gt;Results on the same laptop (8 GB VRAM):&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;Gemma 3 4B&lt;/th&gt;
&lt;th&gt;Qwen 3.5 4B&lt;/th&gt;
&lt;th&gt;Llama 3.2 3B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Note type correct&lt;/td&gt;
&lt;td&gt;95.8%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;97.5%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;85.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Field accuracy&lt;/td&gt;
&lt;td&gt;94.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;96.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;81.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who owes whom&lt;/td&gt;
&lt;td&gt;81.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;95.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;59.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amounts&lt;/td&gt;
&lt;td&gt;97.5%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;70.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dates&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;90.9%&lt;/td&gt;
&lt;td&gt;95.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Non-notes rejected&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;93.8%&lt;/td&gt;
&lt;td&gt;68.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time per note&lt;/td&gt;
&lt;td&gt;2.67 s&lt;/td&gt;
&lt;td&gt;3.39 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.57 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU memory&lt;/td&gt;
&lt;td&gt;3.9 GB&lt;/td&gt;
&lt;td&gt;3.9 GB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.6 GB&lt;/strong&gt;&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%2Fijrxzpgckzt155r1svwp.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%2Fijrxzpgckzt155r1svwp.png" alt="Comparison Chart" width="488" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What the numbers say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qwen 3.5 is the most accurate, but it "helps" in ways that hurt.&lt;/strong&gt; It sometimes replaces your date words with its own wrong guess ("the day after tomorrow" → "Tuesday"), and it's slower.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 is perfect on dates and on rejecting non-notes, and faster.&lt;/strong&gt; It's the default for now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Llama 3.2 is the fastest but too weak&lt;/strong&gt; on money and directions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small differences are noise:&lt;/strong&gt; the same model moved 1–2 points between runs. The direction gap (95% vs 81%) is real.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Honest limitations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;English only, for now.&lt;/strong&gt; That was mainly a time constraint. A Hinglish version was the original idea, and it's the next big step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistakes still happen&lt;/strong&gt; (81% on who-owes-whom with Gemma), which is why nothing is saved until you confirm the draft.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The test set is synthetic,&lt;/strong&gt; hand-written to cover hard cases, not real users' recordings yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A GPU is recommended;&lt;/strong&gt; it works on CPU, just slower.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;For YapIt, open models aren't a nice-to-have. They're what make the product possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; notes are personal, and payment notes involve &lt;em&gt;other people's&lt;/em&gt; money. With local open models, nothing ever leaves the laptop. A closed API would mean sending every note to someone else's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A side hustle that actually makes money:&lt;/strong&gt; zero per-note cost means a one-time price works. With a paid API, every note a user records costs me money, forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works offline:&lt;/strong&gt; after the first start, no internet is needed at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I could measure and choose.&lt;/strong&gt; Swapping Gemma for Qwen or Llama is one config line, and my benchmark shows exactly what each choice costs in accuracy, speed and memory. With a closed API you get whatever version they ship.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can fine-tune it next.&lt;/strong&gt; The weakest spot, who owes whom, is exactly the narrow kind of task where a small fine-tuned open model can beat a general one.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;My first user was my brother. He used YapIt every day for a while, to take notes in his classes and to capture day-to-day things: plans, events, and promises he'd made to people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What went wrong.&lt;/strong&gt; He found real problems, and they shaped the app more than anything else. His most memorable complaint:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"It listens to whatever I say and doesn't care whether it's a note or not."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He was right. Early YapIt turned &lt;em&gt;everything&lt;/em&gt; into a note: a half-finished sentence, a random question, someone talking in the background. That feedback led directly to two features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The "is this actually a note?" check:&lt;/strong&gt; if what you said isn't a note (a mic test, a question meant for an assistant, background chatter), YapIt says so instead of saving it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The sense check:&lt;/strong&gt; notes that can't be right, like a date that doesn't exist or a meeting at 25 PM, now come with a warning before you save them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What worked for him.&lt;/strong&gt; At the end of each day he could quickly see what was coming up, his upcoming events and the promises he'd made, without scrolling through raw text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he asked for next:&lt;/strong&gt; reminders, meaning an alarm or notification when an event or promise is due. I couldn't build it before the deadline, so it's the first thing on my list.&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 3 4B runs locally through Ollama as YapIt's brain, and was benchmarked against Qwen 3.5 and Llama 3.2.&lt;/li&gt;
&lt;/ul&gt;

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