<?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: Tushar Goyal</title>
    <description>The latest articles on DEV Community by Tushar Goyal (@tgoyal63).</description>
    <link>https://dev.to/tgoyal63</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%2F509186%2Fc1e2bc7f-227c-47cc-b356-e87b054f0509.png</url>
      <title>DEV Community: Tushar Goyal</title>
      <link>https://dev.to/tgoyal63</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tgoyal63"/>
    <language>en</language>
    <item>
      <title>Loose Ends: keep the condition with the task</title>
      <dc:creator>Tushar Goyal</dc:creator>
      <pubDate>Thu, 22 Oct 2026 14:34:51 +0000</pubDate>
      <link>https://dev.to/tgoyal63/loose-ends-keep-the-condition-with-the-task-1lcc</link>
      <guid>https://dev.to/tgoyal63/loose-ends-keep-the-condition-with-the-task-1lcc</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;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;An action list can change a promise by losing one word: &lt;strong&gt;if&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the review passes, Mina will archive the old checklist.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This synthetic note appears in the Loose Ends demo. “Archive the old checklist”&lt;br&gt;
is the action. The review condition belongs beside it, where the person&lt;br&gt;
reviewing the list can still see it.&lt;/p&gt;

&lt;p&gt;Loose Ends is a small local web app that turns scattered notes into editable&lt;br&gt;
action drafts. An open-weight model proposes the tasks; each card carries its&lt;br&gt;
original source. The repetitive work is finding and copying follow-ups from&lt;br&gt;
notes. The person reviewing them decides what belongs on the final list.&lt;/p&gt;

&lt;p&gt;Paste notes, generate drafts, and inspect the quotations. Edit an action, remove&lt;br&gt;
it, mark it done, then export Markdown. Human edits keep their original evidence&lt;br&gt;
and are labelled. Nothing is sent, scheduled or carried out automatically.&lt;/p&gt;

&lt;p&gt;For ordinary notes, keep each action and its conditions on one line. Timestamped&lt;br&gt;
transcripts are also supported, with the speaker, original turn and nearby&lt;br&gt;
conversation attached. Longer meetings remain a known weakness, described below.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://loose-ends-demo.vercel.app/" rel="noopener noreferrer"&gt;Watch the narrated local-model walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;1-minute-58-second tutorial&lt;/strong&gt;, recorded on &lt;strong&gt;October 22, 2026&lt;/strong&gt;, shows&lt;br&gt;
actual local Qwen inference on synthetic handoff notes: three drafts, the complete&lt;br&gt;
review condition, a human edit, completion and an actual Markdown download. One&lt;br&gt;
additional model proposal was rejected by the source checks. API responses were&lt;br&gt;
not mocked. This demonstrates local processing, not the optional Groq mode.&lt;/p&gt;

&lt;p&gt;The edited video adds locally generated Bella narration, optional captions, restrained motion,&lt;br&gt;
readable close-ups and labelled reading holds. The full inference wait plays at&lt;br&gt;
its original speed; the edited timeline is not a performance benchmark. The page&lt;br&gt;
keeps captions off by default, with a Show captions button. It also includes ten&lt;br&gt;
chapters, a full text transcript, the exported list and a separate&lt;br&gt;
mobile screenshot. The app's state animations respect reduced-motion preferences.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://loose-ends-demo.vercel.app/demo/release-walkthrough.mp4" rel="noopener noreferrer"&gt;original continuous silent recording&lt;/a&gt;&lt;br&gt;
remains available. &lt;a href="https://github.com/tgoyal63/loose-ends/blob/main/docs/demo/narrated-notes.md" rel="noopener noreferrer"&gt;Production notes and evidence&lt;/a&gt;&lt;br&gt;
document the new capture, editing and verification.&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%2Fpavcoxhyz08wfxf7bss3.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%2Fpavcoxhyz08wfxf7bss3.png" alt="Three action drafts beside the original synthetic handoff notes" width="800" height="670"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/tgoyal63/loose-ends" rel="noopener noreferrer"&gt;Read the source and setup instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application code is MIT licensed. Model weights are downloaded separately&lt;br&gt;
and retain their own licenses. The repository documents the runtime, synthetic&lt;br&gt;
evaluation cases and observed limitations.&lt;/p&gt;

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

&lt;p&gt;A plain HTML/CSS/JavaScript interface talks to a small Python server. The tested&lt;br&gt;
local runtime is &lt;a href="https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507" rel="noopener noreferrer"&gt;Qwen3-4B-Instruct-2507&lt;/a&gt;,&lt;br&gt;
using a &lt;a href="https://huggingface.co/mlx-community/Qwen3-4B-Instruct-2507-4bit/tree/50d427756c6b1b2fe0c0a10f67fbda1fc8e82c1b" rel="noopener noreferrer"&gt;pinned four-bit MLX conversion&lt;/a&gt;&lt;br&gt;
through &lt;a href="https://github.com/ml-explore/mlx-lm" rel="noopener noreferrer"&gt;MLX-LM&lt;/a&gt; on an Apple silicon Mac.&lt;/p&gt;

&lt;p&gt;The model's proposal passes through source checks before becoming a card.&lt;br&gt;
For notes, the quotation must match a complete original line, and the proposed&lt;br&gt;
action and attribution must be supported by its text. Detected conditions keep&lt;br&gt;
the full line. Unknown owners and dates stay unknown; relative dates stay&lt;br&gt;
relative. These checks make the output easier to inspect, but matching words&lt;br&gt;
cannot establish that the model understood a promise correctly.&lt;/p&gt;

&lt;p&gt;Recorded real-model runs passed five small synthetic note cases locally and&lt;br&gt;
five through Groq. A short hosted meeting produced all four expected actions.&lt;br&gt;
The harder test told a different story: the latest recorded hosted run on a&lt;br&gt;
120-turn synthetic meeting found &lt;strong&gt;nine of ten&lt;/strong&gt; outstanding actions. It missed&lt;br&gt;
a promise to verify an account after access was restored. The acceptance check&lt;br&gt;
failed, and the local model also failed the long-meeting check. These are dated,&lt;br&gt;
limited observations, rather than a general accuracy score or a completed&lt;br&gt;
transcript fix. The &lt;a href="https://github.com/tgoyal63/loose-ends/blob/main/docs/release.md" rel="noopener noreferrer"&gt;release evidence and limits&lt;/a&gt;&lt;br&gt;
link to the saved results.&lt;/p&gt;

&lt;p&gt;That omission matters as much as an invented task. A clean-looking list can&lt;br&gt;
still leave work behind. Every draft needs review against the original notes.&lt;/p&gt;

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

&lt;p&gt;The open model performs the central task: identifying potential actions in&lt;br&gt;
ordinary language. Downloadable weights make local inference possible after&lt;br&gt;
setup, without a hosted inference account. The Qwen model and its MLX conversion&lt;br&gt;
identify their license as Apache-2.0. The prompt, source checks and export code&lt;br&gt;
can also be inspected and changed.&lt;/p&gt;

&lt;p&gt;Local setup requires a model download, disk space and suitable hardware.&lt;br&gt;
Optional &lt;strong&gt;Groq-hosted GPT-OSS 120B&lt;/strong&gt; avoids that local model setup, but requires&lt;br&gt;
explicit selection and an API key, sends the complete submitted source to Groq,&lt;br&gt;
and may consume paid credit. Fresh pages default to local processing, with no&lt;br&gt;
automatic switch to hosted inference. The separate local model service and&lt;br&gt;
hosted provider have their own data-handling behavior.&lt;/p&gt;

&lt;p&gt;The intended “Slow and Steady” payoff is a smaller chore: review a draft beside&lt;br&gt;
its evidence, then take an editable Markdown list away. No measured time saving&lt;br&gt;
or personal-use success story is claimed.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Disclosure
&lt;/h2&gt;

&lt;p&gt;AI agents implemented and tested the project and wrote this article. The article&lt;br&gt;
is marked &lt;code&gt;fully_autonomous&lt;/code&gt;. The demonstration and evaluation inputs described&lt;br&gt;
here are synthetic.&lt;/p&gt;

&lt;p&gt;Synthetic narration was generated locally with&lt;br&gt;
&lt;a href="https://huggingface.co/hexgrad/Kokoro-82M" rel="noopener noreferrer"&gt;Kokoro-82M&lt;/a&gt;, voice &lt;code&gt;af_bella&lt;/code&gt;, through&lt;br&gt;
&lt;a href="https://github.com/thewh1teagle/kokoro-onnx" rel="noopener noreferrer"&gt;kokoro-onnx&lt;/a&gt;. No paid voice credits&lt;br&gt;
were used. Each scene uses one connected paragraph at normal speed, with no&lt;br&gt;
burned-in dialogue captions. Kokoro model weights are Apache-2.0; kokoro-onnx code is MIT licensed.&lt;/p&gt;

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