<?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: Divyansh Saharan</title>
    <description>The latest articles on DEV Community by Divyansh Saharan (@divyanshsaharan).</description>
    <link>https://dev.to/divyanshsaharan</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%2F4157638%2F65d533f8-8b95-4207-bdbd-372af4c3df8c.png</url>
      <title>DEV Community: Divyansh Saharan</title>
      <link>https://dev.to/divyanshsaharan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/divyanshsaharan"/>
    <language>en</language>
    <item>
      <title>OneLap: I Fine-Tuned Qwen to Help Me Touch Grass</title>
      <dc:creator>Divyansh Saharan</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:20:10 +0000</pubDate>
      <link>https://dev.to/divyanshsaharan/onelap-i-fine-tuned-qwen-to-help-me-touch-grass-4hg2</link>
      <guid>https://dev.to/divyanshsaharan/onelap-i-fine-tuned-qwen-to-help-me-touch-grass-4hg2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Work and commuting take up roughly 7 AM to 7 PM of my day. By the time I’m home, planning an outdoor adventure feels like another task.&lt;/p&gt;

&lt;p&gt;But fifteen minutes outside? That feels possible.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;OneLap&lt;/strong&gt; for that gap: &lt;strong&gt;after work, before scrolling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OneLap uses an open-weight model to turn a small window of time into one outdoor observation mission. Choose 10, 15, or 20 minutes, a familiar setting, daylight or evening, and something that interests you: sounds, textures, light, or simply discovering something.&lt;/p&gt;

&lt;p&gt;Read the short instruction, select &lt;strong&gt;“I'm heading out,”&lt;/strong&gt; and put the phone away.&lt;/p&gt;

&lt;p&gt;When you return, save one observation. You can also say whether the task was useful, too difficult, or not for you. Completing, stopping, and skipping are all valid outcomes.&lt;/p&gt;

&lt;p&gt;There is no GPS tracking, compulsory photograph, timer, streak, leaderboard, or feed. The app does not pretend to verify that you went outside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal is to make the screen the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  An ordinary moment worth noticing
&lt;/h3&gt;

&lt;p&gt;One observation I saved and synchronized to Atlas was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I thought all DTC blue buses were electric. But when I walked past one, I heard what sounded like a diesel engine. That surprised me and made me question my assumption.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The sound alone does not establish the bus’s fuel type. What interested me was the gap between what I expected and what I noticed.&lt;/p&gt;

&lt;p&gt;That is the kind of moment I want OneLap to encourage. You do not need a mountain trail or an impressive photograph. Something familiar can become interesting when you pay attention.&lt;/p&gt;

&lt;p&gt;A next activity can build on that curiosity: notice one sound during a familiar lap and describe its rhythm or tone before deciding what caused it.&lt;/p&gt;

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

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://onelap-4s17.onrender.com" rel="noopener noreferrer"&gt;Try OneLap in your browser&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No video, download, or installation is required.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign in with Google.&lt;/li&gt;
&lt;li&gt;Choose your time, setting, conditions, and observation focus.&lt;/li&gt;
&lt;li&gt;Review the hosted-model disclosure and create your outing.&lt;/li&gt;
&lt;li&gt;Read the mission, then pocket your phone.&lt;/li&gt;
&lt;li&gt;Return and save an observation locally.&lt;/li&gt;
&lt;li&gt;Optionally synchronize your journal to access it from another device.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The demo has a small, shared inference allowance. New mission generation becomes unavailable when its approved spending or request limit is reached.&lt;/p&gt;

&lt;p&gt;Journal-based AI reflection is implemented and has been tested separately, but remains disabled in the last verified public-demo configuration. Synchronizing a note does not automatically send it to Qwen.&lt;/p&gt;

&lt;p&gt;The bus note is my own reported observation, not a captured model response. The documented end-to-end integration checks used fictional observations; a formal physical-phone outdoor workflow test remains pending.&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/DivyanshSaharan" rel="noopener noreferrer"&gt;
        DivyanshSaharan
      &lt;/a&gt; / &lt;a href="https://github.com/DivyanshSaharan/OneLap" rel="noopener noreferrer"&gt;
        OneLap
      &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;OneLap&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;After work, before scrolling.&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;One short outdoor observation mission. Read it, put the phone away, and bring back one thing you noticed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://onelap-4s17.onrender.com" rel="nofollow noopener noreferrer"&gt;Open the live demo&lt;/a&gt;&lt;/strong&gt; · &lt;a href="https://github.com/DivyanshSaharan/OneLap/docs/pilot-results.md" rel="noopener noreferrer"&gt;Fine-tuning results&lt;/a&gt; · &lt;a href="https://github.com/DivyanshSaharan/OneLap#run-locally" rel="noopener noreferrer"&gt;Setup guide&lt;/a&gt; · &lt;a href="https://github.com/DivyanshSaharan/OneLap/plan.md" rel="noopener noreferrer"&gt;Build plan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/150341afc5b32f15cca127d4c0da0226a975a4ce75bc8bb0b4e74c7b44922846/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f70656e2d2d7765696768745f6d6f64656c2d5177656e332e352d2d34422d363535346330"&gt;&lt;img src="https://camo.githubusercontent.com/150341afc5b32f15cca127d4c0da0226a975a4ce75bc8bb0b4e74c7b44922846/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f70656e2d2d7765696768745f6d6f64656c2d5177656e332e352d2d34422d363535346330" alt="Model: Qwen3.5-4B"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b9cf65282d97513e12b2dcb3dd79a078ed20818183171bc5e4873ae3f11f9cad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696e652d2d74756e696e672d54696e6b65725f4c6f52412d323238623639"&gt;&lt;img src="https://camo.githubusercontent.com/b9cf65282d97513e12b2dcb3dd79a078ed20818183171bc5e4873ae3f11f9cad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46696e652d2d74756e696e672d54696e6b65725f4c6f52412d323238623639" alt="Fine-tuning: Tinker LoRA"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1ae9d8d10f03514eb28da14c7d06ffd41fb309f0ffe0cae4aa7a79657ce39b8e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f796d656e742d52656e6465722d343633306562"&gt;&lt;img src="https://camo.githubusercontent.com/1ae9d8d10f03514eb28da14c7d06ffd41fb309f0ffe0cae4aa7a79657ce39b8e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f796d656e742d52656e6465722d343633306562" alt="Deployment: Render"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;Hacktoberfest Open-Source AI Challenge — Touch Grass&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why OneLap?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Work and commuting can fill the stretch from 7 AM to 7 PM. A big adventure is not always realistic. Fifteen minutes outside might be.&lt;/p&gt;
&lt;p&gt;OneLap makes that small window easier to use: choose a familiar setting and something to notice, get one brief mission, then leave the app behind.&lt;/p&gt;
&lt;p&gt;It is not a route planner, fitness tracker, or conversation to keep open while walking. There is no GPS tracking, compulsory photograph, timer, streak, leaderboard, or feed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The goal is to make the screen the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try it&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Visit &lt;strong&gt;&lt;a href="https://onelap-4s17.onrender.com" rel="nofollow noopener noreferrer"&gt;onelap-4s17.onrender.com&lt;/a&gt;&lt;/strong&gt; in your phone or desktop browser. No…&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/DivyanshSaharan/OneLap" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The repository includes the application, synthetic training corpus, evaluation tooling, automated tests, Docker configuration, and documented experiment results.&lt;/p&gt;

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

&lt;p&gt;The AI core is &lt;strong&gt;&lt;a href="https://huggingface.co/Qwen/Qwen3.5-4B" rel="noopener noreferrer"&gt;Qwen3.5-4B&lt;/a&gt;&lt;/strong&gt;, accessed and fine-tuned through &lt;strong&gt;Thinking Machines’ Tinker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The application uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React, TypeScript, and Vite&lt;/strong&gt; for the browser interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI and Pydantic&lt;/strong&gt; for the API and structured-response validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IndexedDB&lt;/strong&gt; for local missions and observations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; for account-scoped journals, authentication sessions, and durable spending counters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google sign-in&lt;/strong&gt; for verified identity and journal isolation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker and Render&lt;/strong&gt; for a single deployment serving the frontend and backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Initial generation sends generic selections to Tinker—not GPS coordinates or journal history. The backend validates the response before displaying it. A rejected response produces an error, not a fabricated substitute mission.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fine-tuning for one specific job
&lt;/h3&gt;

&lt;p&gt;Generating outdoor ideas is easy. Consistently producing one brief, structured, phone-free task is more specific.&lt;/p&gt;

&lt;p&gt;I trained one &lt;strong&gt;rank-16 LoRA adapter&lt;/strong&gt; through Tinker using &lt;strong&gt;100 synthetic supervised examples over three epochs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The corpus covers initial missions and follow-ups that adapt to observation feedback. Scenario families were split before their variants were written. Base and adapter evaluation used unchanged prompts, application checks, and decoding.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measurement&lt;/th&gt;
&lt;th&gt;Base Qwen&lt;/th&gt;
&lt;th&gt;Fine-tuned adapter&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Development application acceptance&lt;/td&gt;
&lt;td&gt;16/20 — 80%&lt;/td&gt;
&lt;td&gt;20/20 — 100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Held-out application acceptance&lt;/td&gt;
&lt;td&gt;20/30 — 66.7%&lt;/td&gt;
&lt;td&gt;29/30 — 96.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Held-out JSON/schema validity&lt;/td&gt;
&lt;td&gt;24/30 — 80%&lt;/td&gt;
&lt;td&gt;30/30 — 100%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That is a &lt;strong&gt;30-percentage-point improvement in held-out application acceptance&lt;/strong&gt;, not a claim of 96.7% overall accuracy.&lt;/p&gt;

&lt;p&gt;The dataset is small and synthetic, its variants are correlated, and independent human semantic review is pending.&lt;/p&gt;

&lt;p&gt;One remaining failure was revealing: the adapter said &lt;strong&gt;“without recording it,”&lt;/strong&gt; but the conservative keyword filter rejected the recording-related wording. I kept the failure in the results rather than changing the check after seeing it.&lt;/p&gt;

&lt;p&gt;The deployed configuration selects the trained adapter. The &lt;a href="https://github.com/DivyanshSaharan/OneLap/blob/main/docs/pilot-results.md" rel="noopener noreferrer"&gt;full pilot report&lt;/a&gt; explains the method, remaining failure, costs, and limitations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Personalization without background analysis
&lt;/h3&gt;

&lt;p&gt;When enabled, the separate follow-up flow lets you select one completed, synced observation and optionally two earlier notes.&lt;/p&gt;

&lt;p&gt;After explicit sharing approval, the server retrieves those account-owned records from Atlas. Qwen should reflect on what was actually reported and propose another activity while preserving the original duration, setting, conditions, and focus.&lt;/p&gt;

&lt;p&gt;The suggestion is yours to accept or discard. Journal notes do not automatically retrain the model, and ordinary mission generation does not silently include your history.&lt;/p&gt;

&lt;p&gt;Saved missions and observations are local-first. A verified signed-in tab can remain usable offline, but a fresh session check and new inference require connectivity. &lt;strong&gt;This is not local inference.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;A closed API could generate an outdoor prompt too. What open weights gave me was the ability to adapt the underlying model for this particular experience and compare that adaptation against its base model.&lt;/p&gt;

&lt;p&gt;Instead of relying only on a longer prompt, I trained a small adapter and measured a narrowly defined improvement using unchanged application checks.&lt;/p&gt;

&lt;p&gt;Tinker made that experiment practical without managing training hardware.&lt;/p&gt;

&lt;p&gt;The model provider is also separate from the application’s validation, storage, consent, and spending rules. That leaves room for another compatible runtime later, although local inference is not implemented today.&lt;/p&gt;

&lt;p&gt;Open weights do not automatically make hosted requests private or free. OneLap’s model inputs currently go to Tinker. Its privacy choices come from collecting less: no precise location, no photos or audio, local-first notes, and explicit sharing.&lt;/p&gt;

&lt;p&gt;For me, the point of AI here is not another conversation that never ends.&lt;/p&gt;

&lt;p&gt;It is one small reason to go outside—and then getting out of the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;No public agent-session replay is included. The &lt;a href="https://github.com/DivyanshSaharan/OneLap/blob/main/plan.md" rel="noopener noreferrer"&gt;build plan&lt;/a&gt; and &lt;a href="https://github.com/DivyanshSaharan/OneLap/blob/main/docs/pilot-results.md" rel="noopener noreferrer"&gt;experiment report&lt;/a&gt; document the development process and measured results.&lt;/p&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; Task-specific Qwen LoRA fine-tuning, with held-out application acceptance improving from 20/30 to 29/30 in a matched baseline comparison.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; A deployed Docker web service hosting OneLap’s frontend and backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; Account-scoped journal storage and durable spending counters that survive application restarts.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>GuardMate: 'Leave it with the guard' shouldn't need another phone call</title>
      <dc:creator>Divyansh Saharan</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:30:35 +0000</pubDate>
      <link>https://dev.to/divyanshsaharan/guardmate-leave-it-with-the-guard-shouldnt-need-another-phone-call-1p00</link>
      <guid>https://dev.to/divyanshsaharan/guardmate-leave-it-with-the-guard-shouldnt-need-another-phone-call-1p00</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;My friend and I physically go to the office. I live at home, but he is from far away, so he stays in a PG—a paying guest accommodation.&lt;/p&gt;

&lt;p&gt;He also orders quite a few things online.&lt;/p&gt;

&lt;p&gt;That combination creates a surprisingly repetitive problem: a courier arrives while he is at work, finds his room locked, and calls to ask where to leave the parcel.&lt;/p&gt;

&lt;p&gt;Usually, his answer is the same: &lt;strong&gt;hand it to security at the guard room near the entrance.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But he cannot always take that call. Sometimes, the parcel ends up being returned. On weekends, he might actually be in his room, so repeating the same instruction regardless of his availability would not solve the problem either.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;GuardMate&lt;/strong&gt;, a personal AI delivery assistant around his routine.&lt;/p&gt;

&lt;p&gt;It uses saved PG directions, guard-room instructions, weekly availability and a daily override to guide a courier through a delivery conversation. Each courier gets a separate session, so one parcel’s confirmations and approvals cannot accidentally carry over to another.&lt;/p&gt;

&lt;p&gt;The challenge was not making an AI say “guard room.” It was teaching the system when &lt;strong&gt;not&lt;/strong&gt; to say it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the parcel prepaid?&lt;/li&gt;
&lt;li&gt;Is security actually available to receive it?&lt;/li&gt;
&lt;li&gt;Does this delivery require payment, an OTP or a signature?&lt;/li&gt;
&lt;li&gt;Is the courier proposing somewhere the resident has not approved?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GuardMate can provide directions, remember confirmed facts and request a resident decision. It does not treat a courier’s suggestion as permission.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/DivyanshSaharan/GuardMate/blob/main/docs/media/guardmate-demo.mp4" rel="noopener noreferrer"&gt;Watch the GuardMate product demo — MP4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DivyanshSaharan/GuardMate/blob/main/docs/media/guardmate-call-recording.mp3" rel="noopener noreferrer"&gt;Listen to the call recording — MP3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use GitHub’s download control if playback is unavailable. The recording is shared with all speakers’ permission.&lt;/p&gt;

&lt;p&gt;There is no public deployment. The application runs locally, and the cellular experiment uses Windows Phone Link with an Android phone.&lt;/p&gt;

&lt;p&gt;In one consenting fictional courier call on a vivo T2x 5G running Android 15, we demonstrated the complete path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Caller audio → local Whisper → hosted Qwen → permission checks → local Piper → caller
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The caller confirmed hearing the full greeting and three checked replies.&lt;/p&gt;

&lt;p&gt;The most useful moment was a failure: the final speech transcript was ambiguous. Qwen proposed recording a delivery outcome, but GuardMate’s application checks rejected the unsupported completion and asked for clarification instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No parcel actually changed hands, and no completed delivery was recorded.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That test used manual answering and transcript review. Automatic conversation after manual answering is now implemented with offline regression coverage, but it has not yet been demonstrated on a live call. Automatic answering and hangup are not implemented.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DivyanshSaharan/GuardMate/blob/main/docs/live-cellular-test-2026-10-04.md" rel="noopener noreferrer"&gt;Read the actual live-call test report&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/DivyanshSaharan/GuardMate" rel="noopener noreferrer"&gt;GuardMate on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository includes setup instructions, the delivery dataset, training and evaluation tools, test reports, and the demo recordings.&lt;/p&gt;

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

&lt;p&gt;The dashboard uses &lt;strong&gt;React, TypeScript and Vite&lt;/strong&gt;. The backend uses &lt;strong&gt;FastAPI and Pydantic&lt;/strong&gt;, with &lt;strong&gt;SQLite&lt;/strong&gt; for resident settings, conversation history and approvals.&lt;/p&gt;

&lt;p&gt;At the AI core is the open-weight &lt;strong&gt;Qwen3.5-4B&lt;/strong&gt;, accessed through &lt;strong&gt;Tinker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is not a single-message classifier. The planner receives conversation history, saved instructions, current availability, confirmed parcel facts and resident-decision state. It returns a structured action plan.&lt;/p&gt;

&lt;p&gt;GuardMate then checks that plan before executing it.&lt;/p&gt;

&lt;p&gt;For example, an alternative handoff location requires an explicit, expiring resident approval. A courier cannot authorize it by claiming to be the owner. Changes to resident instructions invalidate stale decisions. Delivery outcomes remain labelled &lt;strong&gt;courier-reported&lt;/strong&gt;, not independently verified receipt.&lt;/p&gt;

&lt;p&gt;For voice, &lt;strong&gt;whisper.cpp&lt;/strong&gt; performs local transcription and &lt;strong&gt;Piper&lt;/strong&gt; generates speech locally. Capture and playback happen in separate phases to avoid deliberately recording the assistant’s own reply.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fine-tuning Qwen with Tinker
&lt;/h3&gt;

&lt;p&gt;I used Tinker for a real delivery-specific &lt;strong&gt;LoRA training pilot&lt;/strong&gt;, not just inference.&lt;/p&gt;

&lt;p&gt;The pilot used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;15 owner-reviewed fictional training scenarios.&lt;/li&gt;
&lt;li&gt;40 structured planner targets.&lt;/li&gt;
&lt;li&gt;LoRA rank 16 and batch size 4.&lt;/li&gt;
&lt;li&gt;Three epochs, producing 30 optimizer updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The targets teach the next planning action—not just a list of phrases to repeat.&lt;/p&gt;

&lt;p&gt;I then ran a fresh, matched comparison between base and tuned Qwen on six development scenarios:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Base&lt;/th&gt;
&lt;th&gt;Tuned&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Strict planner agreement&lt;/td&gt;
&lt;td&gt;7/13 — 53.85%&lt;/td&gt;
&lt;td&gt;8/13 — 61.54%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checked scenario success&lt;/td&gt;
&lt;td&gt;5/6&lt;/td&gt;
&lt;td&gt;5/6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Median text-model/policy latency&lt;/td&gt;
&lt;td&gt;2.133 s&lt;/td&gt;
&lt;td&gt;3.113 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Fine-tuning produced &lt;strong&gt;one additional correctly matched planner turn: a 7.69-percentage-point improvement on this small rubric&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The limits matter. Checked scenario success did not improve, and median latency worsened. These are fictional, exposed development cases—not evidence of real-world accuracy or generalization.&lt;/p&gt;

&lt;p&gt;The recorded live call used base Qwen; the tuned model was evaluated separately. Completing training did not automatically promote the checkpoint.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/DivyanshSaharan/GuardMate/blob/main/docs/pilot-2026-10-04.md" rel="noopener noreferrer"&gt;Read the training recipe, matched results and remaining errors&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;For GuardMate, openness means being able to work on the pieces that fail.&lt;/p&gt;

&lt;p&gt;During the call test, Whisper sometimes recognized “parcel” as “passion” or “option.” Because the speech pipeline is local and inspectable, I can investigate capture timing and compare installed speech models without replacing the entire application or uploading raw audio to a cloud speech API.&lt;/p&gt;

&lt;p&gt;Open-weight Qwen also gave me a model I could adapt to this narrow task through Tinker, then compare against its base version under the same application checks.&lt;/p&gt;

&lt;p&gt;That combination gives me three useful kinds of control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data control:&lt;/strong&gt; routine speech processing stays local.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model control:&lt;/strong&gt; I can fine-tune the planner and evaluate a specific checkpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavior control:&lt;/strong&gt; permission-sensitive actions remain inspectable application logic rather than an instruction buried inside a prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Closed services can offer fine-tuning too. My reason for choosing this approach was the replaceable open components and the ability to inspect and change the system—not a claim that every closed model would perform worse.&lt;/p&gt;

&lt;p&gt;There is also an important privacy boundary: &lt;strong&gt;GuardMate is not fully offline.&lt;/strong&gt; Recognized text, previous messages and saved resident context go to Tinker for planning. Local speech avoids hosted audio processing, not all hosted data sharing.&lt;/p&gt;

&lt;p&gt;The prototype still needs better transcription and a real handover test with my friend. I have not claimed that it has reduced returned parcels yet.&lt;/p&gt;

&lt;p&gt;The goal is small and personal: help him receive his deliveries without repeatedly interrupting his workday.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Tinker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GuardMate uses Tinker to fine-tune open-weight Qwen for delivery-conversation planning and evaluate it against a fresh, matched baseline.&lt;/p&gt;

&lt;p&gt;The measured improvement is in strict planner agreement: &lt;strong&gt;53.85% → 61.54%&lt;/strong&gt;. The small sample, unchanged checked delivery behavior and slower median latency are reported alongside that gain.&lt;/p&gt;

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