<?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: CofWMil</title>
    <description>The latest articles on DEV Community by CofWMil (@cofwmil).</description>
    <link>https://dev.to/cofwmil</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%2F4180693%2Fae9c4a22-9912-4c67-a205-acf2b2a67ff6.png</url>
      <title>DEV Community: CofWMil</title>
      <link>https://dev.to/cofwmil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cofwmil"/>
    <language>en</language>
    <item>
      <title>Followup Desk: local AI for a more careful customer follow-up</title>
      <dc:creator>CofWMil</dc:creator>
      <pubDate>Wed, 14 Oct 2026 01:41:18 +0000</pubDate>
      <link>https://dev.to/cofwmil/followup-desk-local-ai-for-a-more-careful-customer-follow-up-14o0</link>
      <guid>https://dev.to/cofwmil/followup-desk-local-ai-for-a-more-careful-customer-follow-up-14o0</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 furniture customer leaves a note about a sofa, a narrow doorway, and a delivery date. Another customer is comparing prices. A third has asked not to be contacted. By the next shift, a salesperson has to reconstruct what each person needed and which promises still need an answer.&lt;/p&gt;

&lt;p&gt;Followup Desk is a local-first workspace for that small, specific problem. It connects a reception record to a human-confirmed follow-up plan, a dated action queue, and an outcome timeline. Its experimental AI helps the associate review some passages about fit, delivery, price comparison, service, and comfort before choosing a next step.&lt;/p&gt;

&lt;p&gt;The potential buyer is an independent furniture or appliance retailer that wants a lightweight preparation tool for its associates. A paid version would have to earn its place by reducing the time spent reconstructing a conversation and preventing forgotten commitments. That is a product hypothesis, not a validated business result: this beta has no paying customers, sales-lift study, or production deployment with real customer data.&lt;/p&gt;

&lt;p&gt;The current release is a fictional-data prototype. Its useful unit is one reviewable next action for one customer.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://followup-desk.yjbao2008.chatgpt.site/" rel="noopener noreferrer"&gt;Try the English Followup Desk beta&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Start with the six fictional records. Manual planning works immediately. The optional AI requires an explicit download click: approximately 87 MB of model weights plus about 27 MB of runtime and other assets on the tested setup. Download size and first-run time matter for this audience, so they are disclosed before enabling it.&lt;/p&gt;

&lt;p&gt;A short walkthrough:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Sam Rivera's record and review the original reception note alongside confirmed facts.&lt;/li&gt;
&lt;li&gt;Enable local AI and inspect the quoted passage supporting the price-comparison preparation cue. The wording of the question and strategy is a fixed template.&lt;/li&gt;
&lt;li&gt;Confirm that the cue is still relevant before adopting the strategy. Then review the date, permitted channel, preparation checklist, and draft in a separate plan confirmation.&lt;/li&gt;
&lt;li&gt;Record an outcome or reschedule the task. The next action changes without accumulating duplicate reminders, and the timeline retains the outcome.&lt;/li&gt;
&lt;li&gt;Open Taylor Chen's record. The no-contact instruction blocks the AI action and customer-contact workflow.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Copying a draft only copies it to the clipboard. Nothing is sent. Changing an original fact makes the existing confirmed plan require review again. A no-reply outcome does not lower the customer's stage or create daily retries.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/CofWMil/followup-desk" rel="noopener noreferrer"&gt;Followup Desk source on GitHub&lt;/a&gt;, published under the MIT License.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/CofWMil/followup-desk/blob/main/artifacts/TEST_REPORT.md" rel="noopener noreferrer"&gt;Read the verification report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The repository includes the application, tests, model documentation, privacy limitations, and synthetic evaluation evidence. The shipped application source matches the tested beta; public-release documentation explains the verification boundary.&lt;/p&gt;

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

&lt;p&gt;The app uses JavaScript and Vite, with a browser worker for inference. The model is &lt;a href="https://huggingface.co/Xenova/nli-deberta-v3-xsmall/tree/2a4f614a701367a02d51389039afc998faeda637" rel="noopener noreferrer"&gt;Xenova's ONNX conversion of nli-deberta-v3-xsmall&lt;/a&gt;, derived from the Apache-2.0 &lt;a href="https://huggingface.co/cross-encoder/nli-deberta-v3-xsmall" rel="noopener noreferrer"&gt;cross-encoder model&lt;/a&gt;. It runs through &lt;a href="https://github.com/huggingface/transformers.js" rel="noopener noreferrer"&gt;Transformers.js&lt;/a&gt; and &lt;a href="https://github.com/microsoft/onnxruntime" rel="noopener noreferrer"&gt;ONNX Runtime&lt;/a&gt; using browser WASM. The conversion revision and runtime assets are pinned.&lt;/p&gt;

&lt;p&gt;The model performs natural-language inference. It compares source sentences with five fixed preparation hypotheses and returns entailment, neutral, and contradiction scores. The app retains the original sentence as evidence. A suggestion needs sentence entailment of at least 0.80, a margin of at least 0.30 over the other labels, and a full-note contradiction score below 0.50. These are exploratory thresholds, not calibrated accuracy guarantees.&lt;/p&gt;

&lt;p&gt;This is actual learned-model inference. Questions, suggested strategies, and draft messages come from disclosed, editable templates. The model never sets a budget, date, customer stage, or contact permission. It does not predict purchase readiness, conversion, wealth, or customer value.&lt;/p&gt;

&lt;h3&gt;
  
  
  What testing changed
&lt;/h3&gt;

&lt;p&gt;Earlier generative experiments fabricated details and handled the required structure unreliably. The shipped approach narrows the AI's job to source-supported preparation cues and leaves factual fields and decisions with the associate.&lt;/p&gt;

&lt;p&gt;The final source passed 58 automated tests, including consent and channel gates, date boundaries, changed-record review, backup validation, malicious text handling, and model-output contracts. Mocked contract tests check software behavior; they do not establish model quality.&lt;/p&gt;

&lt;p&gt;For actual inference, a frozen 16-note synthetic evaluation produced seven supported suggestions and nine abstentions. Some abstentions were real misses. This small set is not a statistical accuracy estimate. A supplemental four-note retraction test exposed two stale historical cues. Conservative explicit resolution/retraction markers now pause AI, and adopting a strategy requires a current-relevance confirmation. Those safeguards cannot detect every paraphrase, so reviewing the full note remains necessary.&lt;/p&gt;

&lt;p&gt;The public app also completed real browser WASM inference. Casey's comfort/material passage and Sam's competitor-price passage produced source-backed cues. Jordan's note abstained because the full-note check vetoed an otherwise strong sentence result. The thresholds were not loosened to manufacture a successful demo. In that one browser environment, these inference calls took approximately 1.2–1.6 seconds; that is an observation, not a cross-device performance promise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Boundaries of this beta
&lt;/h3&gt;

&lt;p&gt;Records are stored in localStorage in the current browser. They are not encrypted, synchronized, or protected as a production CRM database. Clearing site data can erase them, and JSON backups contain the reception text. Please use fictional or appropriately authorized de-identified test records.&lt;/p&gt;

&lt;p&gt;The application has no remote-inference or outbound-messaging API, and the tested inference ran locally. Model/runtime downloads still contact external asset providers. A complete network privacy audit, offline cold-start/cache verification, final browser backup restore, and mobile-width browser QA remain incomplete. The test report calls out these gaps instead of treating unit tests as a substitute.&lt;/p&gt;

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

&lt;p&gt;Open components make the AI behavior inspectable and replaceable. The model revision, label scores, fixed hypotheses, thresholds, and synthetic failures can all be examined. A developer can change the model or decision policy and rerun the same evaluation rather than depending on an opaque hosted response.&lt;/p&gt;

&lt;p&gt;Local inference also removes a per-request hosted-model charge. No application remote-inference endpoint is implemented; the tested inference ran locally. A complete network audit remains pending. It still has real costs: a substantial first download, device compute, browser compatibility work, and maintenance. Offline operation has not been established.&lt;/p&gt;

&lt;p&gt;For a small retail tool, the trade-off is concrete. A narrow local classifier can support one part of preparing a conversation, while a person reviews the evidence and decides what to do. The current model misses too much to replace that review. Publishing those limitations is part of making the prototype useful to the next person who builds on it.&lt;/p&gt;

&lt;p&gt;This write-up was generated by an AI assistant from the project's source and verification records, without human text editing. The project was developed with AI assistance. The demo and evaluation use synthetic customer records.&lt;/p&gt;

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