<?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: Tony</title>
    <description>The latest articles on DEV Community by Tony (@tony_0bff21a994dcd2b693b3).</description>
    <link>https://dev.to/tony_0bff21a994dcd2b693b3</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%2F4180543%2F303675eb-257e-4ad7-a805-2008cdb10a95.jpg</url>
      <title>DEV Community: Tony</title>
      <link>https://dev.to/tony_0bff21a994dcd2b693b3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tony_0bff21a994dcd2b693b3"/>
    <language>en</language>
    <item>
      <title>Manage Your Tasks: a local Gemma assistant that keeps freelance designers out of scope creep</title>
      <dc:creator>Tony</dc:creator>
      <pubDate>Mon, 19 Oct 2026 06:36:14 +0000</pubDate>
      <link>https://dev.to/tony_0bff21a994dcd2b693b3/manage-your-tasks-a-local-gemma-assistant-that-keeps-freelance-designers-out-of-scope-creep-48ko</link>
      <guid>https://dev.to/tony_0bff21a994dcd2b693b3/manage-your-tasks-a-local-gemma-assistant-that-keeps-freelance-designers-out-of-scope-creep-48ko</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;A client asks for "one small extra screen" in a call. Two days later they send a reference image in WhatsApp. A week after that, an email casually says "so we're still on for Friday?" Each message looks harmless. Together they are new scope and a new deadline that nobody agreed to.&lt;/p&gt;

&lt;p&gt;For an independent designer this is unpaid work hiding in plain sight. The hard part isn't writing tasks down. It's reconstructing &lt;em&gt;what was actually asked, where, and whether it was ever approved.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Manage Your Tasks&lt;/strong&gt; is a bilingual (English / 中文), local-first workspace for exactly that. You drop in client feedback. &lt;strong&gt;Google's open-weight Gemma 3 1B, running on your own machine through Ollama&lt;/strong&gt;, flags likely requests and explicit dates, and every suggestion stays pinned to the original sentence it came from. You decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Confirmed request&lt;/strong&gt; → becomes a task, with a suggested due date pre-filled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope or delivery change&lt;/strong&gt; → goes through a separate approval path, recorded against the project baseline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI never creates a task or moves a deadline on its own. It points at the evidence. A human signs off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Would Pay For It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Customer:&lt;/strong&gt; freelance designers and 2–5 person studios juggling several clients, who lose billable hours to "wait, when did they ask for that?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Business model: free core + one-time Pro purchase. No subscription.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free:&lt;/strong&gt; projects, tasks, timeline, source-file storage, rule-based request &amp;amp; date detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro (one-time purchase):&lt;/strong&gt; everything in Free, plus local Gemma semantic understanding (indirect asks, mixed EN/中文), scope-change approval records &amp;amp; baseline history, and add-ons (more import sources, client export/reports).&lt;/p&gt;

&lt;p&gt;This pricing only works &lt;em&gt;because&lt;/em&gt; the model is open and local. A hosted LLM bills per token, forever, so a feature that reads every client message has to become a subscription. With Gemma running on the user's laptop, our marginal inference cost is &lt;strong&gt;$0&lt;/strong&gt;, so we can sell it once and let it keep working, offline, for as long as the user wants. Freelancers are subscription-fatigued. "Pay once, own it" is a selling point.&lt;/p&gt;

&lt;p&gt;To be honest about where we are: this is a business hypothesis. We haven't validated pricing or landed a paying customer yet. The project came from one of our team's own day-to-day coordination problem as a designer, and getting it into other freelancers' hands is our next step.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/_Qp2L0AXsRA" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Because the app runs entirely on your machine, the video is the public demo. It shows the local model status, a real Gemma response with its source evidence, a suggested date filled into the task form, and the separate review a formal scope change requires.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TonySama-BoiledCabbage/scopecheck" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; (MIT licensed)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/TonySama-BoiledCabbage/scopecheck/tree/hacktoberfest-week2-v1" rel="noopener noreferrer"&gt;Frozen Week 2 submission snapshot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/TonySama-BoiledCabbage/scopecheck/pull/1" rel="noopener noreferrer"&gt;Ongoing maintenance PR (review-to-timeline &amp;amp; date improvements)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run it locally: start &lt;code&gt;START_LOCAL_AI.cmd&lt;/code&gt;, which launches Ollama with &lt;code&gt;gemma3:1b&lt;/code&gt; plus the local parsing endpoints, then open the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; &lt;a href="https://github.com/TonySama-BoiledCabbage" rel="noopener noreferrer"&gt;TonySama-BoiledCabbage&lt;/a&gt; (&lt;a href="https://dev.to/tony_0bff21a994dcd2b693b3"&gt;@tony_0bff21a994dcd2b693b3&lt;/a&gt;) and &lt;a href="https://github.com/DD998855" rel="noopener noreferrer"&gt;DD998855&lt;/a&gt; (&lt;a href="https://dev.to/yundiguo"&gt;@yundiguo&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Built during the challenge window in two parallel workstreams. One of us designed and built the ScopeCheck V2 prototype. The other wired its existing HTML/CSS into the Frame local project store, parser and domain rules through a small adapter. We don't claim every underlying Frame service was written for this entry. The candidate tag is frozen, and later fixes live in the PR.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;From real pain to prototype.&lt;/strong&gt; Project info arrived through documents, Outlook, WhatsApp, calls and meetings. Requests got lost or confused with approved changes. Prototype iterations V1 → V4 refined how requests, dates and review status fit together. We then connected it to local storage and domain rules without changing the page structure or interaction style.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma's job is deliberately narrow.&lt;/strong&gt; A 1B model can misread things, so we don't ask it to "manage the project". The pipeline is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Split source material into segments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 1B (local, via Ollama)&lt;/strong&gt; classifies each segment as a possible request or not. When it sees a date, it must return the &lt;em&gt;exact phrase&lt;/em&gt; from the text.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;deterministic resolver&lt;/strong&gt; checks that the phrase really exists in the source, then turns it into a calendar date relative to the message date. It handles full dates and limited relative forms like "within three days" / "三天内". Anything ambiguous stays blank for manual entry.&lt;/li&gt;
&lt;li&gt;Schema checks reject unsupported model output.&lt;/li&gt;
&lt;li&gt;A person reviews. Only then does a task exist, and scope or deadline changes still need their own approval.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Everything stays on the machine.&lt;/strong&gt; Project metadata lives in browser localStorage, original files in IndexedDB, and parsing and inference run on local HTTP endpoints. There is no cloud database. If Ollama isn't running, the app says so. The rule-based mode is a separately labelled option, never a silent fallback that pretends to be AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Known limits, stated plainly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Indirect requests can still be missed.&lt;/li&gt;
&lt;li&gt;Date and relative-date coverage is intentionally limited.&lt;/li&gt;
&lt;li&gt;We haven't measured AI precision or recall on a representative dataset. Our automated tests cover app behavior, not model accuracy.&lt;/li&gt;
&lt;li&gt;Creating a task by clicking or dragging on an empty timeline is still unreliable, and we don't claim it's done.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Privacy is the product.&lt;/strong&gt; Client feedback contains unreleased designs, pricing and commercially sensitive decisions. Many freelancers are under NDA. Sending that to a hosted API is a real risk. With an open-weight model running locally, the material never leaves the designer's laptop, and the app even works offline on a train.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open is also what makes the business work.&lt;/strong&gt; Zero per-request inference cost is why we can offer a one-time Pro purchase instead of another monthly subscription. A closed API would force recurring pricing and lock us into someone else's price changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And it's inspectable.&lt;/strong&gt; Gemma's role, the prompts, the resolver and the checks are all in the repo. When the request selector gets something wrong, anyone can reproduce the failure, swap in a different open model, or fine-tune for design-studio language, all behind the same evidence-and-approval boundary.&lt;/p&gt;

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

&lt;p&gt;Best Use of Gemma: Gemma 3 1B runs locally through Ollama as the semantic layer that classifies client feedback and extracts date phrases, constrained by deterministic validation and human review.&lt;/p&gt;

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