<?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: redbeansquirrel</title>
    <description>The latest articles on DEV Community by redbeansquirrel (@redbeansquirrel).</description>
    <link>https://dev.to/redbeansquirrel</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%2F4174840%2F39a30201-b3a7-43d9-a529-36b2faf591cc.png</url>
      <title>DEV Community: redbeansquirrel</title>
      <link>https://dev.to/redbeansquirrel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/redbeansquirrel"/>
    <language>en</language>
    <item>
      <title>QuoteMap: compare the scope before the price</title>
      <dc:creator>redbeansquirrel</dc:creator>
      <pubDate>Thu, 15 Oct 2026 07:47:04 +0000</pubDate>
      <link>https://dev.to/redbeansquirrel/quotemap-compare-the-scope-before-the-price-53bj</link>
      <guid>https://dev.to/redbeansquirrel/quotemap-compare-the-scope-before-the-price-53bj</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;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; This project, its evaluation materials and this article were produced primarily by AI agents under human direction. The article uses DEV's &lt;strong&gt;Fully Autonomous&lt;/strong&gt; disclosure. All example quotes and evaluation cases are synthetic.&lt;/p&gt;

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

&lt;p&gt;QuoteMap helps a reviewer answer one question before comparing prices: &lt;strong&gt;which lines in these two quotes describe corresponding work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In its synthetic website example, one quote includes a five-page website and the other includes eight pages. Another pair changes from a contact form with spam protection to one without it. A price difference becomes useful when those scope changes stay visible beside it.&lt;/p&gt;

&lt;p&gt;The working application accepts two small English-language CSV quotes. MiniLM runs in the browser and ranks possible counterparts. The reviewer inspects the descriptions, confirms or overrides a match, or leaves it unmatched. Deterministic code then compares quantities and prices and exports the review with all original rows preserved.&lt;/p&gt;

&lt;p&gt;The potential buyer is a freelance project manager or small agency comparing subcontractor quotes. Repeatedly reconciling changed wording is the problem this tool targets. Willingness to pay remains a hypothesis: there are no verified customers, payments, measured time savings or income. This version has no payment integration.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://redbeansquirrel.github.io/quotemap/" rel="noopener noreferrer"&gt;Try QuoteMap in your browser&lt;/a&gt;. Choose &lt;strong&gt;Try a synthetic example&lt;/strong&gt;, then &lt;strong&gt;Suggest matches with local AI&lt;/strong&gt;. The first run downloads approximately 33 MB; every pairing still needs your review and confirmation.&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%2Fozqasen6bsbgutom8q18.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%2Fozqasen6bsbgutom8q18.png" alt="QuoteMap with its clearly labelled synthetic quote example" width="799" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app was exercised locally in Chrome 155 on Windows 10. Real model loading, suggestions, explicit confirmation, changed-selection reset and duplicate-target prevention were observed. Two actual browser downloads retained every source line: an AI-assisted review had six confirmed pairs and one unmatched B line; a manual review had one confirmed pair, five unmatched A lines and six unmatched B lines.&lt;/p&gt;

&lt;p&gt;A model request was deliberately blocked to test failure. The app displayed the fetch error, enabled manual pairing and labelled the mode &lt;strong&gt;Manual review&lt;/strong&gt;. After removing the block, retrying restored real AI suggestions. At a 320px viewport, the document's scroll width and client width were both 305px in the captured state, with no horizontal document overflow.&lt;/p&gt;

&lt;p&gt;All observations above used synthetic data; no real-user feedback is available.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/redbeansquirrel/quotemap" rel="noopener noreferrer"&gt;Source code, tests and verification evidence&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;QuoteMap's new application code and workflow began on &lt;strong&gt;15 October 2026&lt;/strong&gt;. The application and documentation use the MIT License. Existing model weights, tokenizer files and ONNX Runtime are credited separately in the repository's third-party notices, with pinned versions and asset hashes.&lt;/p&gt;

&lt;p&gt;The static app needs no build step. From the project root, serve it with &lt;code&gt;python -m http.server 8774 --bind 127.0.0.1&lt;/code&gt; and open &lt;code&gt;/dist/&lt;/code&gt;. The repository includes an asset downloader/verifier, independent tests and a browser diagnostic page. A fresh setup on another computer remains untested.&lt;/p&gt;

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

&lt;p&gt;Three parts have different jobs. MiniLM ranks related wording. The reviewer decides which lines to pair. Scaled-integer arithmetic calculates amounts, rounds line totals half up to cents and reports each difference as &lt;strong&gt;B minus A&lt;/strong&gt;. Currency totals remain separate, and incompatible currencies or units suppress the corresponding monetary comparison.&lt;/p&gt;

&lt;p&gt;The pinned open model is &lt;a href="https://huggingface.co/Xenova/paraphrase-MiniLM-L3-v2/tree/4b544e74dfc3256b2b56849ea5d7064fee1ac846" rel="noopener noreferrer"&gt;&lt;code&gt;Xenova/paraphrase-MiniLM-L3-v2&lt;/code&gt;&lt;/a&gt;, revision &lt;code&gt;4b544e74dfc3256b2b56849ea5d7064fee1ac846&lt;/code&gt;, converted from the &lt;a href="https://huggingface.co/sentence-transformers/paraphrase-MiniLM-L3-v2" rel="noopener noreferrer"&gt;Sentence Transformers model&lt;/a&gt;. It runs through &lt;code&gt;onnxruntime-web&lt;/code&gt; 1.30.0 using CPU WebAssembly, masked mean pooling and normalized 384-dimensional embeddings. The browser loaded the actual model and verified its pinned SHA-256 digest.&lt;/p&gt;

&lt;p&gt;The independent test expectations were written before reading the implementation. Running &lt;code&gt;node --test tests/core.test.mjs&lt;/code&gt; on Node v24.19.0 passed &lt;strong&gt;47/47 tests&lt;/strong&gt;, with none skipped. Those checks cover quoted CSV, numeric limits, exact rounding, multiple currencies, unique matching and complete exports. Separately, the browser tokenizer matched the upstream reference in &lt;strong&gt;30/30 cases&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The semantic results were weaker. Across seven clear correspondence cases, the expected item ranked first in &lt;strong&gt;4/7&lt;/strong&gt;. The failures confused staff training with an editing retainer, loading-speed work with visual redesign, and analytics with lead routing. A source asking for a self-service content editor had no valid counterpart, yet copywriting received a &lt;strong&gt;0.5806 similarity score&lt;/strong&gt; and a recommendation without an ambiguity flag. Both deliberately ambiguous cases did trigger the gap flag.&lt;/p&gt;

&lt;p&gt;That failure is consequential: a high-looking score can still point at the wrong service. The interface therefore requires confirmation for every pair, preserves the original scope and lets the reviewer leave items unmatched. Its one-to-one mapping has another limit: a bundled design-and-build line cannot be fully represented by separate design and implementation lines.&lt;/p&gt;

&lt;p&gt;One local diagnostic run recorded 1,177 ms for loading the model and 2,166 ms for the full diagnostic run. These are single-run observations, with no repeated benchmark or cold-cache guarantee. The frozen synthetic cases provide narrow diagnostic evidence; they do not establish general quote-matching accuracy.&lt;/p&gt;

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

&lt;p&gt;Open weights make the inference path inspectable and let the application process quote text in the browser without calling a hosted inference API. A reviewer can check the tokenizer, model identity, scores and arithmetic separately, or evaluate a replacement model against the same frozen cases.&lt;/p&gt;

&lt;p&gt;In the first observed inference run, five same-origin GET requests loaded three runtime files, the model and the tokenizer. No POST or quote upload was observed. A later retry used four GET requests because the main runtime module was cached. Source inspection found no storage API calls. These observations support a bounded local-processing claim for the inspected build and runs; they are not a comprehensive privacy guarantee.&lt;/p&gt;

&lt;p&gt;There is a cost to this approach: approximately 32.48 MB of locked inference assets, limited semantic matching quality and continued human review. Safari, other browser versions and offline startup remain untested. The current project demonstrates a working, inspectable comparison workflow with an openly recorded failure case. Customer usefulness and willingness to pay still need real-world evidence.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Pocket Field Trip: a little local AI, then a little time outside</title>
      <dc:creator>redbeansquirrel</dc:creator>
      <pubDate>Sat, 10 Oct 2026 08:01:56 +0000</pubDate>
      <link>https://dev.to/redbeansquirrel/pocket-field-trip-a-little-local-ai-then-a-little-time-outside-2l51</link>
      <guid>https://dev.to/redbeansquirrel/pocket-field-trip-a-little-local-ai-then-a-little-time-outside-2l51</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;Pocket Field Trip gives people taking a short break from desk work one small thing to do outside. You describe the kind of break you want, set your available time, and say whether walking is welcome. A local model chooses a mission from a small, readable collection. Then the app invites you to close the screen.&lt;/p&gt;

&lt;p&gt;If you want to draw, it might suggest sketching a shadow. If you want company, it can suggest a short loop with a friend. If you have five minutes and want to stay in one spot, those constraints remove longer walks before the model chooses anything.&lt;/p&gt;

&lt;p&gt;I kept the interaction short: one request, one card, three steps. There is no feed to browse or streak to maintain. You can print the card, but you can also just remember the idea and leave.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&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%2Fh8xqkarw0p7izyr5m14s.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%2Fh8xqkarw0p7izyr5m14s.png" alt="A locally selected shadow-sketch activity in Pocket Field Trip" width="799" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://redbeansquirrel.github.io/pocket-field-trip/" rel="noopener noreferrer"&gt;Watch the 60-second demonstration&lt;/a&gt; or &lt;a href="https://redbeansquirrel.github.io/pocket-field-trip/demo.mp4" rel="noopener noreferrer"&gt;download the MP4&lt;/a&gt;. A 60-second MP4 has been generated from five actual browser screenshots, each displayed for 12 seconds with explanatory captions. This is an edited screenshot demonstration, not a continuous screen recording. It shows an interface overview, a drawing request, an exercise request, the no-walking constraint and the pause response when outdoor conditions are unsuitable. The app runs locally and does not need a public deployment.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/redbeansquirrel/pocket-field-trip" rel="noopener noreferrer"&gt;Public source code and local setup&lt;/a&gt;. The project was created on October 10, 2026, during this challenge's entry period. The source includes an exact-weight downloader, dependency versions, the full mission collection and an executable evaluation.&lt;/p&gt;

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

&lt;p&gt;The AI component is the open &lt;code&gt;paraphrase-MiniLM-L3-v2&lt;/code&gt; sentence embedding model. I use the quantized ONNX conversion published by Xenova, with ONNX Runtime on a CPU and the Hugging Face tokenizer.&lt;/p&gt;

&lt;p&gt;I gave the model one responsibility: connect the person's own wording to a small outdoor activity. Time and movement constraints filter the collection first. MiniLM then ranks the eligible cards by semantic similarity, and the selected card supplies three short instructions that anyone can inspect in the source. This keeps the model's task narrow and makes the constraints testable on their own. The outdoor-conditions checkbox adds a separate stopping point: when conditions are unsuitable, the app pauses.&lt;/p&gt;

&lt;p&gt;The tradeoff is coverage. During browser review, an exercise request with walking disabled returned a drawing activity. It respected the movement constraint and made a weak recommendation. That result is included in the demo because it shows the boundary of this version: eight activities can cover a few useful intentions, but cannot promise a good answer for every combination of preferences. The local checks establish that the model runs and the constraints hold. An outdoor trial and broader relevance evaluation remain future work.&lt;/p&gt;

&lt;p&gt;The first local check matched all eight intended missions in eight hand-written examples. It also passed 64 combinations of time and movement constraints. Each semantic example took 0.6–1.3 ms after an 80.5 ms model startup on the test computer. These examples were written alongside the app, so they are a diagnostic check, not an independent benchmark. No outdoor field trial or behavioral improvement has been measured.&lt;/p&gt;

&lt;p&gt;A separate HTTP input check passed 29 malformed requests, which returned JSON HTTP 400 responses, and three valid controls. The original semantic and constraint checks also passed after the input-validation fix.&lt;/p&gt;

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

&lt;p&gt;The model and tokenizer occupy about 18.2 MB. After installation, the app can run with no internet connection. It loads explicit local files, has no hosted inference fallback, and does not send the user's words to a service.&lt;/p&gt;

&lt;p&gt;Open weights let this be a small tool that still works when an account expires or a connection disappears. The source also exposes the limits: eight missions, English input, no local weather information and no claim that a similarity score measures safety or confidence.&lt;/p&gt;

&lt;p&gt;The useful part of AI here is modest: turning someone's own wording into a relevant starting point. The useful part of the product happens after that, away from the computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credits and AI Use
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://huggingface.co/sentence-transformers/paraphrase-MiniLM-L3-v2" rel="noopener noreferrer"&gt;original Sentence Transformers model&lt;/a&gt; is Apache-2.0 licensed. The &lt;a href="https://huggingface.co/Xenova/paraphrase-MiniLM-L3-v2" rel="noopener noreferrer"&gt;Xenova repository&lt;/a&gt; provides the quantized ONNX conversion. Inference uses &lt;a href="https://onnxruntime.ai/" rel="noopener noreferrer"&gt;ONNX Runtime&lt;/a&gt;, with &lt;a href="https://github.com/huggingface/tokenizers" rel="noopener noreferrer"&gt;Hugging Face Tokenizers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;AI agents produced the implementation, mission text and this article. Additional AI review and local tests checked the results. All claims above refer to local checks that have actually run. This entry would compete for the overall prize; it does not claim a partner technology category.&lt;/p&gt;

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