<?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: Jerita D</title>
    <description>The latest articles on DEV Community by Jerita D (@jaycx20).</description>
    <link>https://dev.to/jaycx20</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%2F4158822%2Fcb3b0df3-0875-497e-ad16-6f6dbc4cdb4c.jpg</url>
      <title>DEV Community: Jerita D</title>
      <link>https://dev.to/jaycx20</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaycx20"/>
    <language>en</language>
    <item>
      <title>Hacktober week 3</title>
      <dc:creator>Jerita D</dc:creator>
      <pubDate>Fri, 23 Oct 2026 15:34:51 +0000</pubDate>
      <link>https://dev.to/jaycx20/hacktober-week-3-2jpj</link>
      <guid>https://dev.to/jaycx20/hacktober-week-3-2jpj</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;Meeting notes to action items: paste your notes or a transcript and get a checklist of who does what by when.&lt;/p&gt;

&lt;p&gt;Every meeting ends with the same chore. Someone rereads the notes and pulls out the tasks, the owners and the deadlines, then writes the follow-up message. This tool does that in one click. Anyone who sits through a lot of meetings, or gets stuck writing the recap, gets to be a little lazier.&lt;/p&gt;

&lt;p&gt;The part I care most about is a trust check. AI summaries sometimes assign tasks to people who were never in the meeting. So the JavaScript verifies that every name the model lists actually appears in your pasted text. If a name doesn't, the task is marked "Unassigned" and a yellow warning lists the names that were removed. The model can't hand work to an invented person.&lt;/p&gt;

&lt;p&gt;Other features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tick-off checkboxes for each action item&lt;/li&gt;
&lt;li&gt;A "Copy checklist" button that gives you plain text like &lt;code&gt;[ ] Send revised budget (Priya, Friday)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;"Unassigned" and "No deadline" labels when the notes don't say who or when&lt;/li&gt;
&lt;li&gt;Dark mode and keyboard-visible focus&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://hack-week3-gamma.vercel.app/" rel="noopener noreferrer"&gt;https://hack-week3-gamma.vercel.app/&lt;/a&gt;&lt;br&gt;
Paste any meeting notes and press &lt;strong&gt;Extract action items&lt;/strong&gt;. To see the trust check, try a note that mentions a task without naming anyone. The first click shows a one-time permission prompt.&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%2Fwong96d4fm93zmgi9qvb.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%2Fwong96d4fm93zmgi9qvb.png" alt=" " width="800" height="811"&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/Jeri20" rel="noopener noreferrer"&gt;
        Jeri20
      &lt;/a&gt; / &lt;a href="https://github.com/Jeri20/HackWeek3" rel="noopener noreferrer"&gt;
        HackWeek3
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Hacktoberfest week 3 challenge
    &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;HackWeek3&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Hacktoberfest week 3 challenge&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Jeri20/HackWeek3" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;The whole app is one file, &lt;code&gt;action-items.html&lt;/code&gt;, with the HTML, CSS and JavaScript together. There is no backend, no build step and no API key to manage.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One file:&lt;/strong&gt; Plain HTML, CSS and vanilla JavaScript. No frameworks, no dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extraction:&lt;/strong&gt; The page sends your notes to the model with instructions to return only a JSON array of &lt;code&gt;{owner, task, due}&lt;/code&gt; items. The prompt asks for names exactly as written and &lt;code&gt;null&lt;/code&gt; when an owner or deadline isn't stated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification layer:&lt;/strong&gt; The browser checks each returned owner against your original text, matching whole words and ignoring case. For multi-word names, every word must appear. Names that fail the check are removed and the task becomes "Unassigned". This check is plain code with no model involved, so it doesn't depend on the model behaving well.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ReplyDesk - Week2 task</title>
      <dc:creator>Jerita D</dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:21:12 +0000</pubDate>
      <link>https://dev.to/jaycx20/replydesk-week2-task-51ff</link>
      <guid>https://dev.to/jaycx20/replydesk-week2-task-51ff</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;ReplyDesk&lt;/strong&gt; is a one-page web app that answers Google reviews for small local businesses like salons, clinics and cafes.&lt;/p&gt;

&lt;p&gt;The owner pastes in 3 to 5 replies they have written before, then pastes their recent reviews. ReplyDesk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Drafts a reply to every review in the owner's own voice&lt;/strong&gt;, learned from those sample replies, so it doesn't sound like a chatbot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flags angry reviews&lt;/strong&gt; (rudeness, hygiene, refunds, "never coming back") and puts them at the top so they get handled first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shows monthly themes&lt;/strong&gt;, such as "wait time ×8" or "cleanliness ×3", so the owner can see what customers keep complaining about and fix it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who would pay:&lt;/strong&gt; a salon owner who knows replying to reviews helps their Google ranking but has no time to write 30 replies a month. Replying takes minutes instead of an evening, and the themes view tells them what to fix in the business itself. I'm pricing it at [$X/month per shop].&lt;/p&gt;

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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://hacktoberfestweek2-sigma.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;hacktoberfestweek2-sigma.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&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/Jeri20" rel="noopener noreferrer"&gt;
        Jeri20
      &lt;/a&gt; / &lt;a href="https://github.com/Jeri20/Hacktoberfest_week2" rel="noopener noreferrer"&gt;
        Hacktoberfest_week2
      &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;Hacktoberfest_week2&lt;/h1&gt;

&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Jeri20/Hacktoberfest_week2" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; [Llama 3.3 70B / Qwen / your model] via [Groq / OpenRouter / Together / local Ollama].&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; a single HTML/CSS/JS page. Reviews are parsed in the browser, and the owner's sample replies and business name are stored in &lt;code&gt;localStorage&lt;/code&gt; only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; one serverless function that talks to any OpenAI-compatible &lt;code&gt;/chat/completions&lt;/code&gt; endpoint. The API key stays on the server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompting:&lt;/strong&gt; the sample replies go into the system prompt so the model copies tone, length and sign-off. The prompt also tells it to never invent refunds, discounts or policies, to apologise without getting defensive on bad reviews, and to reply in the review's language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured output:&lt;/strong&gt; for each review the model returns JSON with the reply, a sentiment, an &lt;code&gt;angry&lt;/code&gt; flag and 1 to 3 theme labels. I count the themes in code rather than asking the model to count them, so the monthly numbers are accurate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batching:&lt;/strong&gt; reviews go to the model 8 at a time, so a long list doesn't hit token limits.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost makes the business work.&lt;/strong&gt; Replying to reviews is high-volume, low-value text. With an open-weight model on a cheap or free inference provider, the cost per shop is [tiny / about $Y a month], so a low price still leaves a margin. [Add a real number if you measured one.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in.&lt;/strong&gt; The backend speaks the OpenAI-compatible API, so switching from one open model or host to another is a change to two environment variables (&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt; and &lt;code&gt;MODEL&lt;/code&gt;), not a rewrite. If a provider raises prices or a better model ships, I swap it in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer privacy is an option.&lt;/strong&gt; Reviews are public, but a clinic may not want its owner's replies and business details going to a company it doesn't control. Because the model is open, the same app can be pointed at a local Ollama install on the owner's own machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Room to fine-tune.&lt;/strong&gt; A general model writes generic "Thank you for your feedback!" replies. Open weights let me fine-tune on [a niche, e.g. salons] later so the replies sound like that industry.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Golden Hour Catcher</title>
      <dc:creator>Jerita D</dc:creator>
      <pubDate>Tue, 06 Oct 2026 16:49:32 +0000</pubDate>
      <link>https://dev.to/jaycx20/golden-hour-catcher-23co</link>
      <guid>https://dev.to/jaycx20/golden-hour-catcher-23co</guid>
      <description>&lt;p&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/p&gt;

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

&lt;p&gt;Golden Hour Walk tells you exactly when to leave the house to catch the best light of the day.&lt;/p&gt;

&lt;p&gt;You give it your location (or press "Use my location"), a date, and whether you want a morning or evening walk. You also say how long you want to walk and how far the spot is. It works out when golden hour starts and ends, when the sun rises or sets, and when you need to leave. Then it writes a short, friendly plan, like "Leave at 5:40 PM so you reach the water as golden hour starts."&lt;/p&gt;

&lt;p&gt;Most people don't skip a walk because they hate walking. They skip it because there's no reason to go now. Golden hour gives you one: a specific window, a specific time to leave, and a sky that won't look like that again until tomorrow. It's for anyone who spends their day at a screen and wants a small, concrete nudge to go outside.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://golden-hourcatcher-i3r8p32e8-jeris-projects-4cc75d2b.vercel.app/" rel="noopener noreferrer"&gt;https://golden-hourcatcher-i3r8p32e8-jeris-projects-4cc75d2b.vercel.app/&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%2Fbtcsyl4z5bmst4tkgjgo.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%2Fbtcsyl4z5bmst4tkgjgo.png" alt=" " width="800" height="878"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://github.com/Jeri20/GoldenHour_catcher/tree/main" rel="noopener noreferrer"&gt;https://github.com/Jeri20/GoldenHour_catcher/tree/main&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The whole app is one index.html file with no backend, so it deploys as a static site.&lt;/p&gt;

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

&lt;p&gt;The core idea is simple: code does the facts, the model does the words.&lt;/p&gt;

&lt;p&gt;The facts (no AI involved). All the sun times come from a solar calculation that runs in the browser. I started from Python's astral, which uses the NOAA solar algorithm, but a static page can't run Python. So I ported the same method to JavaScript. Golden hour uses the same definition astral does: the sun between 4° below and 6° above the horizon. Leave time is just golden hour start minus your travel time.&lt;/p&gt;

&lt;p&gt;The words (open-weight model). The wording comes from an open-weight model running inside the visitor's browser using WebLLM and WebGPU. The default is Qwen 2.5 1.5B, and Llama 3.2 1B and 3B are in a dropdown. The model never calculates anything. It receives a short list of facts ("Leave home at: 5:40 PM, Golden hour starts: 5:55 PM...") and turns them into two sentences. I used two worked examples in the prompt, because small models follow the style much better when they see it.&lt;/p&gt;

&lt;p&gt;The guardrail. A small model can still slip and write a time that sounds plausible but is wrong. So every clock time in its reply is checked against the times the code calculated&lt;/p&gt;

&lt;p&gt;If the model quotes a time that isn't in the facts, the reply is thrown away and a plain template plan is shown instead. The page tells the user which one they got. If the browser has no WebGPU, the app skips the model and still shows the exact times with the plain plan, so it never ends up broken.&lt;/p&gt;

&lt;p&gt;The model never sees a clock. It sees a list of facts, and if it quotes a time that isn't on that list, its reply is rejected.&lt;/p&gt;

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

&lt;p&gt;Open weights are what let me run the model in the visitor's browser.&lt;/p&gt;

&lt;p&gt;No server, no API key, no bill. The whole thing is a static file. With a closed API I'd need a backend to hide a key, and I'd be paying for every plan someone generates. Here, one person or ten thousand costs me the same: nothing.&lt;br&gt;
Your location stays on your device. The sun calculation and the model both run locally. Your coordinates aren't sent to a language-model API. The browser only downloads the model files.&lt;br&gt;
I could pick the model to fit the job. The task is "turn five facts into two friendly sentences," which a 1B to 3B model can do. Because the weights are open, I could try several small models and offer them as a dropdown, instead of being tied to one provider's model.&lt;/p&gt;

&lt;p&gt;The honest trade-off is that small models make mistakes. That is why the code owns the facts and the guardrail checks the output. Open models are good enough when you give them a narrow job and verify the result.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Hacktoberfest Weekend Challenge</title>
      <dc:creator>Jerita D</dc:creator>
      <pubDate>Sat, 03 Oct 2026 09:58:40 +0000</pubDate>
      <link>https://dev.to/jaycx20/hacktoberfest-weekend-challenge-1h8h</link>
      <guid>https://dev.to/jaycx20/hacktoberfest-weekend-challenge-1h8h</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;One Liner is a one-page web app that turns long, over-the-top posts into a single line saying what they actually mean. Paste in a rambling announcement, a humble-brag or a motivational essay, click the button, and get the gist. No extra information.&lt;/p&gt;

&lt;p&gt;I built it for my friend who wanted to start using social media for job searches, etc. Most of the long posts he ran into on professional social feeds took a few hundred words to say one thing, like "I got a new job" or "please comment so I can message you". He wanted to get the point in a second and only read the full post when it's worth the time.&lt;/p&gt;

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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://oneliner-ten.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;oneliner-ten.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&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%2Fnv28m0ek79xej3e7hgaf.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%2Fnv28m0ek79xej3e7hgaf.png" alt="Screenshot of how my app works" width="800" height="839"&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/Jeri20" rel="noopener noreferrer"&gt;
        Jeri20
      &lt;/a&gt; / &lt;a href="https://github.com/Jeri20/One_Liner" rel="noopener noreferrer"&gt;
        One_Liner
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Codes for Hacktoberfest 2026 Oct 5 challenge
    &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;One-Liner&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Paste a long, "humbled and honored" LinkedIn post. Get the one-line truth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://oneliner-ten.vercel.app/" rel="nofollow noopener noreferrer"&gt;https://oneliner-ten.vercel.app/&lt;/a&gt;&lt;/p&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/93329012/664604266-cf1d5c3d-efd4-4ce1-835e-45b080093bc1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTE5MTk2MTUsIm5iZiI6MTc5MTkxOTMxNSwicGF0aCI6Ii85MzMyOTAxMi82NjQ2MDQyNjYtY2YxZDVjM2QtZWZkNC00Y2UxLTgzNWUtNDViMDgwMDkzYmMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjEwMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYxMDEzVDE5MjE1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlNzVhMDRhMmJjNjkxMDdlODZmZjNjYzJlZTY2NWJjMDAzYWIxNmYyYzM0NzFjMGFkMDkxNjFmOTAxNjQ1YzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.YRtiIRj8Ev3FgBMvjh2R6levpjR-hHySEO6uNl7OuxQ"&gt;&lt;img width="846" height="887" alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F93329012%2F664604266-cf1d5c3d-efd4-4ce1-835e-45b080093bc1.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTE5MTk2MTUsIm5iZiI6MTc5MTkxOTMxNSwicGF0aCI6Ii85MzMyOTAxMi82NjQ2MDQyNjYtY2YxZDVjM2QtZWZkNC00Y2UxLTgzNWUtNDViMDgwMDkzYmMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjEwMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYxMDEzVDE5MjE1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlNzVhMDRhMmJjNjkxMDdlODZmZjNjYzJlZTY2NWJjMDAzYWIxNmYyYzM0NzFjMGFkMDkxNjFmOTAxNjQ1YzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.YRtiIRj8Ev3FgBMvjh2R6levpjR-hHySEO6uNl7OuxQ" class="js-gh-image-fallback"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You paste a post like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;After 7 incredible years, I'm humbled and honored to share that I've decided to embark on a new chapter. This journey taught me so much about leadership and resilience. Grateful to everyone who believed in me. Stay tuned! #newbeginnings&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You get one short line back, something like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Quit their job.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's the whole app: one page, one job, no extra information.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why I built it&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open source matters here&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Private by default.&lt;/strong&gt; The model runs on your own device, so nothing you paste is sent anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free to run and host.&lt;/strong&gt; There's no per-request bill and no API key. The whole app is one static HTML file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable models.&lt;/strong&gt; The dropdown switches between Qwen 2.5 1.5B, Llama 3.2 1B and Llama 3.2 3B. Adding…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Jeri20/One_Liner" 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;It's a single index.html file with no backend.&lt;/p&gt;

&lt;p&gt;Model: open-weight models run inside the browser with WebLLM, which uses WebGPU. The default is Qwen 2.5 1.5B Instruct. Llama 3.2 1B and 3B are in a dropdown, so I can compare them on the same posts.&lt;br&gt;
Prompt: a system prompt asks for exactly one sentence under 20 words. It is paired with four worked examples (long post in, one-liner out), because small models follow a pattern far better when they are shown it.&lt;br&gt;
Cleanup: a small function keeps only the first line and first sentence, and strips labels or quote marks the model sometimes adds. That way the output is always one line.&lt;br&gt;
Hosting: a static file on Vercel. There is no server and no API key.&lt;br&gt;
Resilience: the AI library loads from three CDNs in turn, so one blocked source doesn't break the page.&lt;/p&gt;

&lt;p&gt;What went wrong along the way: my first version showed a blank page when the library failed to load, and then the model download failed with "Failed to fetch". I had been testing inside a preview pane that blocks those downloads. So I added a Check connection button that tests each download step and shows which one fails, plus a warning when the page is opened in a preview. I also used Claude as a coding assistant for scaffolding and debugging.&lt;/p&gt;

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

&lt;p&gt;I paste all sorts of text into a tool like this, and I don't want every post, draft or message I read going to someone else's server. With an open-weight model running in the browser, none of it leaves my device. A closed API would send every post to a third party, along with an API key and a bill.&lt;/p&gt;

&lt;p&gt;Open also made these things possible:&lt;/p&gt;

&lt;p&gt;It costs nothing to run. There is no per-request fee and no backend to pay for.&lt;br&gt;
Models are swappable. Changing the model is a one-line edit, so I could compare a 1B and a 3B model.&lt;br&gt;
Behaviour is editable. The prompt and the worked examples live in a config block at the top of the file. If it misreads a style of post, I add an example. No retraining is needed.&lt;/p&gt;

&lt;p&gt;The honest trade-off: a small model is less accurate than a big hosted one, it can miss sarcasm, and the first load is a large download. For a task as small as "boil this down to one line," I think that trade is worth it.&lt;/p&gt;

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