<?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: Bharani Kumar Reddy Kudala</title>
    <description>The latest articles on DEV Community by Bharani Kumar Reddy Kudala (@kudala-bharani).</description>
    <link>https://dev.to/kudala-bharani</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%2F4155278%2Ff8713b51-6f24-470c-8fa5-c4563ad49ac7.jpg</url>
      <title>DEV Community: Bharani Kumar Reddy Kudala</title>
      <link>https://dev.to/kudala-bharani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kudala-bharani"/>
    <language>en</language>
    <item>
      <title>Ghostlight: a cabinet of haunted objects powered by local, open-weight AI</title>
      <dc:creator>Bharani Kumar Reddy Kudala</dc:creator>
      <pubDate>Tue, 27 Oct 2026 20:02:16 +0000</pubDate>
      <link>https://dev.to/kudala-bharani/ghostlight-a-cabinet-of-haunted-objects-powered-by-local-open-weight-ai-2i04</link>
      <guid>https://dev.to/kudala-bharani/ghostlight-a-cabinet-of-haunted-objects-powered-by-local-open-weight-ai-2i04</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Ghostlight gives ordinary objects a fictional afterlife. Name an object, choose a setting and a feeling, and a small language model writes a spooky story fragment in your browser. Keep it in a local cabinet or export it as Markdown.&lt;/p&gt;

&lt;p&gt;The interpretation of “Ghost in the Machine” is literal: the machine invents the ghost, while a familiar object gives the story somewhere to live. The interface is a midnight-green museum desk with an illuminated bell jar and paper-like story cards. These are invented stories, not historical accounts or simulations of real people.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://kudala-bharani.github.io/ghostlight/" rel="noopener noreferrer"&gt;Open Ghostlight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a quick look, try the clearly labeled sample. It does not run the model. For actual generation, enter an object, choose the setting and mood, then awaken its story.&lt;/p&gt;

&lt;p&gt;First generation downloads roughly 550 MB of model and runtime files. A capable desktop is recommended. Loading and generation can take a few minutes, and mobile performance has not been verified. No account, API key or paid inference service is required.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/kudala-bharani/ghostlight" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application code is MIT licensed. The model and dependencies keep their own licenses.&lt;/p&gt;

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

&lt;p&gt;The generation path uses &lt;a href="https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct" rel="noopener noreferrer"&gt;Qwen2.5-0.5B-Instruct&lt;/a&gt;, with &lt;a href="https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct" rel="noopener noreferrer"&gt;8-bit ONNX weights&lt;/a&gt;, through &lt;a href="https://github.com/huggingface/transformers.js" rel="noopener noreferrer"&gt;Transformers.js&lt;/a&gt; and ONNX Runtime Web. Inference runs in a dedicated browser worker on CPU/WebAssembly, so WebGPU is not required.&lt;/p&gt;

&lt;p&gt;The rest is a static JavaScript/Vite app deployed on GitHub Pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A bounded prompt supplies the object, setting and mood to the model.&lt;/li&gt;
&lt;li&gt;The worker handles loading and generation; cancellation terminates it.&lt;/li&gt;
&lt;li&gt;Saved stories stay in this browser’s localStorage, with Markdown export for a separate copy.&lt;/li&gt;
&lt;li&gt;Model output is rendered as text, not executable HTML.&lt;/li&gt;
&lt;li&gt;A sample is kept separate from generated results and never silently substitutes for failed inference.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The small model is a real constraint. It can repeat itself or ignore details. A live desktop test produced a coherent station story but left out the requested brass key. Generation is limited to 220 tokens; a trailing unfinished sentence is dropped rather than completed with fabricated fallback text. That is why the app calls its output a story fragment.&lt;/p&gt;

&lt;p&gt;Verification included 21 automated core tests, type checking, a production build, and live desktop checks of real model generation, cancellation, save, reload, export and deletion. These checks do not establish reliability on every browser or phone.&lt;/p&gt;

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

&lt;p&gt;Open weights make the story engine inspectable and replaceable. The prompt, worker and model choice are visible in the repository instead of hidden behind an inference endpoint. Someone can change the tone or try another compatible model without depending on a hosted text-generation API.&lt;/p&gt;

&lt;p&gt;Local execution also changes where the story goes. Object names and generated text are not sent to an inference service. Model downloads still contact Hugging Face/CDN hosts, and the page uses Google Fonts, so this is not a claim of zero network contact. Saved stories are not encrypted, and clearing site data removes them.&lt;/p&gt;

&lt;p&gt;There is no per-story API bill, but the cost moves to download size, memory and CPU time on the reader’s device. Offline availability is not guaranteed: the app has no service worker, and browser caches can be evicted. Those tradeoffs are part of the project rather than hidden behind the demo.&lt;/p&gt;

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

&lt;p&gt;An AI coding assistant developed the project and generated this write-up. The included sample was written during that assisted build, not by the on-device model. This post uses DEV’s Fully Autonomous disclosure.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>QuietQueue: batch the little chores with on-device, open-weight AI</title>
      <dc:creator>Bharani Kumar Reddy Kudala</dc:creator>
      <pubDate>Tue, 20 Oct 2026 23:57:44 +0000</pubDate>
      <link>https://dev.to/kudala-bharani/quietqueue-batch-the-little-chores-with-on-device-open-weight-ai-8bi</link>
      <guid>https://dev.to/kudala-bharani/quietqueue-batch-the-little-chores-with-on-device-open-weight-ai-8bi</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 2026 Week 3: Slow and Steady challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;QuietQueue turns a scattered to-do list into a small session of related tasks. Paste one task per line, choose a time budget and an energy setting, and get a plan with the rest safely parked for later.&lt;/p&gt;

&lt;p&gt;The goal is simple: spend less effort deciding what to do next and switching between unrelated chores. It does not send messages, book anything, or perform your tasks. It helps organize them.&lt;/p&gt;

&lt;p&gt;The optional AI runs in your browser. It uses an open-weight sentence-embedding model to group tasks by meaning, while a deterministic planner enforces the time and energy limits. A clearly labeled rule-based mode works without loading the model.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://kudala-bharani.github.io/quietqueue/" rel="noopener noreferrer"&gt;Try QuietQueue&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start with &lt;strong&gt;Try an example&lt;/strong&gt;, choose 30 minutes, and select &lt;strong&gt;Make a quiet plan&lt;/strong&gt;. Then enable &lt;strong&gt;Group with on-device AI&lt;/strong&gt; to try semantic grouping. The first AI run downloads model weights and the runtime; allow time for that download. Check off tasks and export your plan as Markdown.&lt;/p&gt;

&lt;p&gt;Task text stays on the device. The model hosts receive ordinary download requests, not your task list. Local storage is not encrypted, so avoid sensitive information on a shared device.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/kudala-bharani/quietqueue" rel="noopener noreferrer"&gt;Source code on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a new project and repository created on October 20, 2026 for this challenge, rather than an extension of an earlier entry. Original application code is MIT-licensed; dependencies and model weights retain their own licenses.&lt;/p&gt;

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

&lt;p&gt;QuietQueue is a buildless HTML, CSS and JavaScript application. Transformers.js 3.8.1 loads the quantized &lt;a href="https://huggingface.co/Xenova/all-MiniLM-L6-v2" rel="noopener noreferrer"&gt;Xenova/all-MiniLM-L6-v2&lt;/a&gt; model. Both the model conversion and upstream sentence-transformer are open-weight Apache-2.0 projects.&lt;/p&gt;

&lt;p&gt;The model produces 384-dimensional embeddings for the tasks and six context descriptions. Cosine similarity matches a task to a context such as messages, errands or home chores. Weak matches stay in a loose-ends group rather than being presented as confident classifications.&lt;/p&gt;

&lt;p&gt;A separate bounded planner selects tasks within the chosen time budget. Duration estimates come from user input or simple, labeled heuristics, not the model. The model never invents tasks or deadlines. This keeps fuzzy language matching separate from the hard planning constraints.&lt;/p&gt;

&lt;p&gt;Nineteen automated tests cover task conservation, budgets, energy filters, duplicates, malformed embeddings, export provenance and bounded input. A real-model integration test also downloaded and executed MiniLM on synthetic tasks; it was not a mocked AI response. The deployed browser demo was also exercised: actual on-device AI completed successfully, a 15-minute budget produced three five-minute tasks, check-offs persisted after reload, and Markdown export downloaded successfully.&lt;/p&gt;

&lt;p&gt;An autonomous AI assistant implemented the application and tests. This entire post was generated by that assistant, with no substantive human editing. The embedded runtime model is distinct from the development assistant. No model training or fine-tuning is claimed.&lt;/p&gt;

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

&lt;p&gt;For this project, open weights make local inference practical without an API key or a per-plan inference bill. A task list does not need to travel to a hosted language-model endpoint just to be grouped.&lt;/p&gt;

&lt;p&gt;The model, category descriptions, similarity threshold and planning algorithm are inspectable. Someone can change the contexts, swap the embedding model or run the static app themselves. The repository includes attribution and licensing notes so those choices are visible.&lt;/p&gt;

&lt;p&gt;There are limits: the model is English-first, unusual phrases can be misclassified, and this is local-first rather than a guaranteed fully offline app. Initial loading needs a network connection and browser caches can be evicted. If AI cannot load, the interface explicitly says it is using rules instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;The intended payoff is less planning friction: a short session, related chores together, and permission to leave the rest for later. QuietQueue shows changes in context-switch count for the same selected tasks, not invented minutes saved or a measured productivity claim.&lt;/p&gt;

&lt;p&gt;No paid API, account or backend database is required. The demo is a small experiment in using open AI to make everyday work feel more manageable.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ScopeCheck: reviewing “one small change” with local open-weight AI</title>
      <dc:creator>Bharani Kumar Reddy Kudala</dc:creator>
      <pubDate>Thu, 15 Oct 2026 16:19:38 +0000</pubDate>
      <link>https://dev.to/kudala-bharani/scopecheck-reviewing-one-small-change-with-local-open-weight-ai-p65</link>
      <guid>https://dev.to/kudala-bharani/scopecheck-reviewing-one-small-change-with-local-open-weight-ai-p65</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;“Could you add one more thing?” is a simple request with an awkward follow-up: was that thing part of the agreement?&lt;/p&gt;

&lt;p&gt;ScopeCheck is a browser-local scope review desk for freelance developers and designers. It puts incoming client requests beside the original agreed scope, uses an open-weight model to compare their wording, and helps the freelancer prepare a clear change conversation.&lt;/p&gt;

&lt;p&gt;The workflow is deliberately small:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enter the agreed scope and incoming requests, one item per line&lt;/li&gt;
&lt;li&gt;Run a local AI review and inspect the original scope evidence&lt;/li&gt;
&lt;li&gt;Keep or override each suggestion, add your own hours and notes, and export a change brief&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The app can suggest “Likely covered,” “Possible change,” or “Needs clarification.” A human decides what those suggestions mean for the project. ScopeCheck does not send client messages, invent billable hours, or decide contractual obligations.&lt;/p&gt;

&lt;p&gt;The intended customer is an independent professional who needs a repeatable way to review small changes before doing the work. The commercial hypothesis is a $29 one-time, local-first tool, with no metered inference bill. That price is unvalidated. There are no claimed customers, sales, or measured time savings, and the challenge demo has no payment flow.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://kudala-bharani.github.io/scopecheck/dist/" rel="noopener noreferrer"&gt;Try ScopeCheck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The opening project is explicitly fictional. It is there so you can explore the workflow without entering any client information.&lt;/p&gt;

&lt;p&gt;To try it, start the local review and approve the model download. The first run needs an internet connection and roughly 120 MB of model, tokenizer, and runtime assets. Inspect the evidence for a request, change its decision if needed, and enter your own estimate. The Change brief view then produces a plain-text summary and an editable client-response template.&lt;/p&gt;

&lt;p&gt;Desktop Chromium is the initial target. Mobile performance and Safari/Firefox support remain unverified. This is a working prototype with real model inference, not a promise of production reliability.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/kudala-bharani/scopecheck" rel="noopener noreferrer"&gt;ScopeCheck source on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application source is Apache-2.0. The repository includes readable JavaScript modules, regression tests, model smoke-test results, and third-party notices. It is a new project created during the Week 2 entry window.&lt;/p&gt;

&lt;p&gt;You can also serve the static dist directory locally. No build step, API key, backend, or app account is needed.&lt;/p&gt;

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

&lt;p&gt;ScopeCheck uses &lt;a href="https://huggingface.co/cross-encoder/nli-deberta-v3-xsmall" rel="noopener noreferrer"&gt;cross-encoder/nli-deberta-v3-xsmall&lt;/a&gt;, an Apache-2.0 natural-language-inference model, through &lt;a href="https://huggingface.co/Xenova/nli-deberta-v3-xsmall" rel="noopener noreferrer"&gt;Xenova’s quantized ONNX conversion&lt;/a&gt;. &lt;a href="https://github.com/huggingface/transformers.js" rel="noopener noreferrer"&gt;Transformers.js&lt;/a&gt; runs single-threaded WASM inference in a dedicated browser worker.&lt;/p&gt;

&lt;p&gt;For each request that passes the ambiguity and length checks, the model compares the original request against every agreed scope item. It returns three scores: entailment, contradiction, and neutral. Those scores help select relevant evidence and support cautious suggestions. The app shows exact source excerpts rather than generating an explanation that could invent an agreement.&lt;/p&gt;

&lt;p&gt;Several choices came from the model’s mistakes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Neutral output stays uncertain. Missing support is not proof that work is extra&lt;/li&gt;
&lt;li&gt;Quantity discrepancies and ambiguous wording get separate, deterministic checks&lt;/li&gt;
&lt;li&gt;Pairs longer than 512 tokens are rejected instead of being silently truncated&lt;/li&gt;
&lt;li&gt;Conditions and exclusions stay in the original text&lt;/li&gt;
&lt;li&gt;Every suggestion can be overridden by the person responsible for the client relationship&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A confident answer can still be wrong
&lt;/h3&gt;

&lt;p&gt;In an exploratory test, a conditional promise to integrate Stripe produced about 99% entailment for an unconditional integration request. The score did not establish whether the condition had been met.&lt;/p&gt;

&lt;p&gt;“One more revision” exposed a different problem: the model could strongly predict contradiction without knowing how many revision rounds had already happened. That missing project history matters more than a confident score.&lt;/p&gt;

&lt;p&gt;These are general-English NLI scores, not probabilities of legal coverage. ScopeCheck retains them as inspectable evidence and keeps final decisions with the user.&lt;/p&gt;

&lt;h3&gt;
  
  
  What was tested
&lt;/h3&gt;

&lt;p&gt;All 62 tests passed again on October 15, 2026, using Node 24.19.0 with jsdom 26.1.0: 31 core, 20 simulated UI, 10 mocked-worker tests, and one stylesheet regression. JavaScript syntax checks passed. These are not browser end-to-end tests.&lt;/p&gt;

&lt;p&gt;The deployed GitHub Pages app was also checked in desktop Chromium on October 15. The model-download confirmation led to a completed local review: three sample requests were compared by the model, while the vague fourth request was held for clarification. The email-contact-form request showed 99.4% textual support.&lt;/p&gt;

&lt;p&gt;The live-browser check also covered a human override, a two-hour estimate at the fictional sample rate of $85/hour, notes in the generated brief, clipboard copy verified by pasting, and the downloaded plain-text file. The $170 estimate and incomplete-estimate warning survived export, and an edited response survived navigation between views. These are smoke checks, not a full accessibility or cross-browser audit. Mobile, Safari/Firefox, offline behavior, and long-session reliability remain unverified.&lt;/p&gt;

&lt;p&gt;Separately, the real quantized model ran on 27 handwritten premise/request pairs using both native ONNX CPU and single-thread WASM in Node. The highest-scoring labels matched across all 27 pairs. That checks runtime consistency on a small exploratory set; it does not establish accuracy on freelance agreements. The repository preserves the scores and failure cases.&lt;/p&gt;

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

&lt;p&gt;Local inference changes the economics and the data boundary of this particular tool.&lt;/p&gt;

&lt;p&gt;Client scope text does not need to be sent to an inference service. Project text stays in the tab’s memory, and the application includes no analytics or document upload. Closing or refreshing the tab loses that project text. Users explicitly copy or download the brief when they want to keep it.&lt;/p&gt;

&lt;p&gt;There are still network requests for the app, inference runtime, and model files. Those providers receive ordinary request metadata, such as an IP address. Model files may remain in the browser’s cache, and offline operation is not guaranteed. “Local” should describe where the text is processed, without hiding those boundaries.&lt;/p&gt;

&lt;p&gt;The open-weight approach also removes per-review API charges. It makes a one-time-purchase hypothesis worth testing, although customer demand and support costs are still unknown. The trade-off is a substantial first download and dependence on the visitor’s browser and available memory.&lt;/p&gt;

&lt;p&gt;Finally, the model, conversion, runtime, and application logic are inspectable. Another developer can reproduce the failure cases, change the thresholds, or evaluate a different model. That is useful for a tool whose most important behavior may be admitting uncertainty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Disclosure
&lt;/h2&gt;

&lt;p&gt;An OpenAI coding assistant produced the implementation, testing, and this write-up autonomously. I authorized the project and uploaded the source for publication. This post is labeled Fully Autonomous. The AI used inside ScopeCheck is the open-weight NLI model described above. No customer interviews or firsthand customer outcomes are claimed.&lt;/p&gt;

&lt;p&gt;The next validation step is to observe freelancers reviewing their own examples, measure whether the brief improves the conversation, and learn whether they would pay for it. The prototype establishes the workflow; it does not establish a business yet.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Outward: three outdoor missions matched by an open model</title>
      <dc:creator>Bharani Kumar Reddy Kudala</dc:creator>
      <pubDate>Tue, 06 Oct 2026 22:39:59 +0000</pubDate>
      <link>https://dev.to/kudala-bharani/outward-three-outdoor-missions-matched-by-an-open-model-4pha</link>
      <guid>https://dev.to/kudala-bharani/outward-three-outdoor-missions-matched-by-an-open-model-4pha</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;Outward gives you three small things to do outside, matched to a short description of what you feel like doing. Choose a neighborhood, park, or doorstep; ten, twenty, or thirty minutes; and whether to wander or stay in one spot. Read the suggestions, start pocket mode, and put the phone away.&lt;/p&gt;

&lt;p&gt;The project is for the gap between wanting a break and deciding what to do. A mission might ask you to watch one thing change or notice a small pattern. A familiar place is enough. There is no route to follow, account to create, or location permission to grant.&lt;/p&gt;

&lt;p&gt;An open sentence-embedding model matches your words to a fixed, inspectable catalog of 22 missions. It selects existing instructions. Setting and movement preferences are hard constraints, and &lt;strong&gt;Skip listening activities&lt;/strong&gt; removes the catalog's listening category. You can ask for another set without repeating the three currently shown.&lt;/p&gt;

&lt;p&gt;Pocket mode keeps those three titles visible and offers the full instructions when needed. Afterward, an optional field note gives you somewhere to keep one observation. The design aims to make the screen a short part of an outdoor break. No outdoor trial or measured benefit is claimed in this write-up.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://outward-field-guide.bharani1808.chatgpt.site" rel="noopener noreferrer"&gt;Try Outward&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Try a sample input such as “I want to listen to birds and natural sounds,” choose &lt;strong&gt;Park or green space&lt;/strong&gt;, &lt;strong&gt;20 min&lt;/strong&gt;, and &lt;strong&gt;A gentle wander&lt;/strong&gt;, then select &lt;strong&gt;Find my field trip&lt;/strong&gt;. The first AI run downloads model and runtime assets. A completed AI plan is labeled &lt;strong&gt;MATCHED ON YOUR DEVICE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Read the missions, choose &lt;strong&gt;Take this outside&lt;/strong&gt;, and return with &lt;strong&gt;I'm back&lt;/strong&gt; to save a field note. Use a safe, familiar place and skip any task that does not fit your surroundings or ability.&lt;/p&gt;

&lt;p&gt;There is also an explicitly selected sample mode, labeled &lt;strong&gt;SAMPLE · NO AI USED&lt;/strong&gt;. A model failure never silently switches to that mode.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Public repository: &lt;a href="https://github.com/kudala-bharani/Outward" rel="noopener noreferrer"&gt;kudala-bharani/Outward&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Outward began on October 5, 2026. The application uses React, TypeScript, and Vite. Original application code is MIT-licensed; third-party components retain their own licenses and notices.&lt;/p&gt;

&lt;p&gt;Start with &lt;code&gt;src/data/missions.ts&lt;/code&gt; for the catalog, &lt;code&gt;src/ai/model.ts&lt;/code&gt; for local inference, &lt;code&gt;src/ai/rank.ts&lt;/code&gt; for selection, and &lt;code&gt;src/storage.ts&lt;/code&gt; for persistence. The repository includes setup instructions, tests, architecture notes, and machine-readable model evidence.&lt;/p&gt;

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

&lt;p&gt;The model is &lt;a href="https://huggingface.co/Xenova/all-MiniLM-L6-v2/tree/751bff37182d3f1213fa05d7196b954e230abad9" rel="noopener noreferrer"&gt;Xenova/all-MiniLM-L6-v2&lt;/a&gt;, an ONNX distribution of the &lt;a href="https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2" rel="noopener noreferrer"&gt;Sentence Transformers model&lt;/a&gt;, running through &lt;a href="https://github.com/huggingface/transformers.js" rel="noopener noreferrer"&gt;Transformers.js&lt;/a&gt;. Both the model distribution and runtime use Apache-2.0. Transformers.js is pinned to 4.3.0, and the q8 model is pinned to revision &lt;code&gt;751bff37182d3f1213fa05d7196b954e230abad9&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A dedicated browser worker embeds the input and mission descriptions into 384-dimensional vectors. Cosine similarity measures relevance; a small penalty for redundant missions adds variety. The selector applies explicit setting, movement, and listening constraints before choosing three missions. Duration sets the outing timer; it does not estimate the time needed for each activity.&lt;/p&gt;

&lt;p&gt;Two recorded examples show how the matching responds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the real Chromium browser walkthrough, “I want to listen to birds and natural sounds.” selected &lt;strong&gt;Wait for a wingbeat&lt;/strong&gt;, &lt;strong&gt;Make a sound map&lt;/strong&gt;, and &lt;strong&gt;Watch the invisible&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;In the Node-hosted WASM test, “I am exhausted and want to sit quietly without having to do anything.” selected &lt;strong&gt;Let the view be enough&lt;/strong&gt;, &lt;strong&gt;Watch one thing change&lt;/strong&gt;, and &lt;strong&gt;Find the quieter edge&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are actual model outputs. The English-focused model can still misread context; relevance does not establish safety or benefit.&lt;/p&gt;

&lt;p&gt;October 6 verification passed TypeScript, 179 automated tests, the production build, native CPU inference, and browser-target WASM inference inside Node. &lt;code&gt;npm run test:model-filters&lt;/code&gt; reproduced 36 constraint plans.&lt;/p&gt;

&lt;p&gt;A separate manual Chromium walkthrough passed real AI matching, cancellation/retry, non-repeating second sets, stale-plan protection, and doorstep/stationary/listening constraints. Pocket mode survived reload with its countdown catching up. A fictional journal note passed export, duplicate-safe restore, deletion, and Undo. Desktop and narrow layouts were checked, along with keyboard opening/closing of an explanation dialog. The full Playwright suite, offline reload, and a physical mobile device remain untested. Evidence and scope are recorded in the repository's &lt;code&gt;docs/verification.md&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A development correction concerned storage: the initial active-trip record retained the original input. The current version saves missions and timing while removing the mood text, matching query, model name, and similarity scores. Field notes are never sent to the model. Validated JSON export and restore provide a manual backup; deletion is confirmed and can be undone while the page stays open.&lt;/p&gt;

&lt;p&gt;AI agents materially implemented the application, tests, and documentation under my direction. This article was primarily generated by AI agents from the source and recorded evidence. Development assistance is separate from the open model that performs matching inside the app.&lt;/p&gt;

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

&lt;p&gt;A downloadable model makes the inference boundary a concrete implementation choice. Outward can compare the input with the catalog locally without sending that text to a hosted inference API or operating an inference server. The model, tokenizer, pinned revision, and selection logic can be inspected and tested together.&lt;/p&gt;

&lt;p&gt;Contributors can improve mission wording, change constraints, compare embedding models, or add language coverage with appropriate evaluation. The catalog and ranking behavior are small enough to examine directly.&lt;/p&gt;

&lt;p&gt;There are costs to this approach. The first run needs a network connection and downloads roughly 23 MB of weights plus the runtime and supporting files. Asset providers receive ordinary request metadata. Browser storage and exported notes are unencrypted, and cached assets do not guarantee offline availability.&lt;/p&gt;

&lt;p&gt;Open components make this small, account-free design practical and reproducible. They also make its limits visible: the source shows exactly what is selected, what is stored, and what still needs testing.&lt;/p&gt;

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