<?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: NIKITHA S</title>
    <description>The latest articles on DEV Community by NIKITHA S (@nikitha_s_3a42baaa72fd15a).</description>
    <link>https://dev.to/nikitha_s_3a42baaa72fd15a</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%2F3976139%2F8ad615d7-1e84-4b97-bee6-44fefb842d18.jpg</url>
      <title>DEV Community: NIKITHA S</title>
      <link>https://dev.to/nikitha_s_3a42baaa72fd15a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nikitha_s_3a42baaa72fd15a"/>
    <language>en</language>
    <item>
      <title>Receipts,Not Rumors</title>
      <dc:creator>NIKITHA S</dc:creator>
      <pubDate>Sun, 25 Oct 2026 19:22:41 +0000</pubDate>
      <link>https://dev.to/nikitha_s_3a42baaa72fd15a/receiptsnot-rumors-4lp7</link>
      <guid>https://dev.to/nikitha_s_3a42baaa72fd15a/receiptsnot-rumors-4lp7</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;&lt;strong&gt;Receipts, Not Rumors&lt;/strong&gt; is a research workspace for when the internet is arguing about something and you just want to know what's actually sourced.&lt;/p&gt;

&lt;p&gt;You dump in the mess: screenshots, copied posts, links, your own notes. It turns that into an organized evidence trail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screenshots&lt;/strong&gt; are read with OCR, so the text inside is searchable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Links&lt;/strong&gt; are fetched and their content is pulled in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A local AI model&lt;/strong&gt; builds a chronological timeline, flags what is direct evidence vs. a reported claim vs. someone's interpretation, and lists what remains unknown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A visual timeline&lt;/strong&gt; shows each event as a dot on a horizontal line. Hover for a one-line summary and confidence level, click to jump to the source it came from.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI is told to never invent dates, quotes, or URLs, to treat search snippets as leads rather than proof, and to avoid inferring private relationships from ambiguous posts. Its "bottom line" is deliberately cautious.&lt;/p&gt;

&lt;p&gt;Who gets to be lazier? Anyone who has spent an evening with 40 tabs and a pile of screenshots trying to work out "wait, who posted first?"&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%2Fe52z94co7hd7mfhsno2h.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%2Fe52z94co7hd7mfhsno2h.png" alt=" " width="800" height="523"&gt;&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%2Ffy998cmy3wzavcxxsd6c.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%2Ffy998cmy3wzavcxxsd6c.png" alt=" " width="800" height="451"&gt;&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%2F77e3f26yij1jvjl0aqfe.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%2F77e3f26yij1jvjl0aqfe.png" alt=" " width="800" height="358"&gt;&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%2Fyf7qifrcfhngqrg2jctr.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%2Fyf7qifrcfhngqrg2jctr.png" alt=" " width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's also a &lt;strong&gt;Try demo&lt;/strong&gt; button that loads a clearly fictional scenario, so you can see the whole flow without using real people's posts.&lt;/p&gt;

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

&lt;p&gt;[GitHub repo here: &lt;/p&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/stargalax" rel="noopener noreferrer"&gt;
        stargalax
      &lt;/a&gt; / &lt;a href="https://github.com/stargalax/receipts-not-rumors-web" rel="noopener noreferrer"&gt;
        receipts-not-rumors-web
      &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;Receipts, Not Rumors&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Drop the mess. Get the evidence trail.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A local-first research workspace for when the internet is arguing and you just want to know what's actually sourced. Paste screenshots, links, copied posts, and notes, and it organizes them into a sourced, chronological timeline, with the uncertainty left in.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/120588880/684182270-607c4f08-820c-4e69-8b63-67d0df64287b.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTI5NTY0NjcsIm5iZiI6MTc5Mjk1NjE2NywicGF0aCI6Ii8xMjA1ODg4ODAvNjg0MTgyMjcwLTYwN2M0ZjA4LTgyMGMtNGU2OS04YjYzLTY3ZDBkZjY0Mjg3Yi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAyNVQxOTIyNDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jNWRlZGJjYzZiYjYwZTU4YzU0MWYyYzMyMjgwY2E1NTdkNzU1OGEyZWRlZGYxMTVkZTlkZGZlM2RjZjYzOTYzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.OCFOlvgKOPm9pgoNuX95eK5e2DwY_I_9BQabfMNBLoM"&gt;&lt;img width="1292" height="845" 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%2F120588880%2F684182270-607c4f08-820c-4e69-8b63-67d0df64287b.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTI5NTY0NjcsIm5iZiI6MTc5Mjk1NjE2NywicGF0aCI6Ii8xMjA1ODg4ODAvNjg0MTgyMjcwLTYwN2M0ZjA4LTgyMGMtNGU2OS04YjYzLTY3ZDBkZjY0Mjg3Yi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAyNVQxOTIyNDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jNWRlZGJjYzZiYjYwZTU4YzU0MWYyYzMyMjgwY2E1NTdkNzU1OGEyZWRlZGYxMTVkZTlkZGZlM2RjZjYzOTYzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.OCFOlvgKOPm9pgoNuX95eK5e2DwY_I_9BQabfMNBLoM" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/120588880/684182249-c0f612d5-f0de-44ba-be5a-b5b68eaa3ac1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTI5NTY0NjcsIm5iZiI6MTc5Mjk1NjE2NywicGF0aCI6Ii8xMjA1ODg4ODAvNjg0MTgyMjQ5LWMwZjYxMmQ1LWYwZGUtNDRiYS1iZTVhLWI1YjY4ZWFhM2FjMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAyNVQxOTIyNDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MjI4ODgxN2ZhY2YxNzkzZmQxNzdiMzY1YWIxMWE1MThhYzg1NjJlZDM2ZmViMTVmZjUyZTAyYzNjZjg0YTdhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.xrd44Tnh-izZf2_nKTLnAP2-LXYyrS_J9RFRPuj-xZg"&gt;&lt;img width="1238" height="698" 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%2F120588880%2F684182249-c0f612d5-f0de-44ba-be5a-b5b68eaa3ac1.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTI5NTY0NjcsIm5iZiI6MTc5Mjk1NjE2NywicGF0aCI6Ii8xMjA1ODg4ODAvNjg0MTgyMjQ5LWMwZjYxMmQ1LWYwZGUtNDRiYS1iZTVhLWI1YjY4ZWFhM2FjMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAyNVQxOTIyNDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MjI4ODgxN2ZhY2YxNzkzZmQxNzdiMzY1YWIxMWE1MThhYzg1NjJlZDM2ZmViMTVmZjUyZTAyYzNjZjg0YTdhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.xrd44Tnh-izZf2_nKTLnAP2-LXYyrS_J9RFRPuj-xZg" class="js-gh-image-fallback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Screenshot OCR&lt;/strong&gt;: text inside images is extracted in the browser with Tesseract.js.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link fetching&lt;/strong&gt;: pasted URLs are fetched server-side and their readable text and publish date are extracted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web search&lt;/strong&gt;: the model writes up to three search queries, and SerpAPI returns public results as extra sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI timeline&lt;/strong&gt;: a local Qwen model separates direct evidence, reported claims, and interpretations, and lists what remains unknown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual timeline&lt;/strong&gt;: events appear as dots on a horizontal line. Color shows confidence, hover shows a one-line summary, and click opens the source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails&lt;/strong&gt;: the model must not invent…&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/stargalax/receipts-not-rumors-web" 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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Qwen2.5-1.5B-Instruct&lt;/strong&gt; (open weights) runs &lt;strong&gt;entirely in the browser&lt;/strong&gt; through &lt;a href="https://github.com/mlc-ai/web-llm" rel="noopener noreferrer"&gt;WebLLM&lt;/a&gt; and WebGPU. No inference server and no API bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tesseract.js&lt;/strong&gt; does OCR on screenshots, also in the browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; for the frontend.&lt;/li&gt;
&lt;li&gt;A small &lt;strong&gt;Express&lt;/strong&gt; backend with two jobs:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/api/search&lt;/code&gt; calls &lt;strong&gt;SerpAPI&lt;/strong&gt;. Qwen first writes up to three search queries from the evidence, and the backend runs them so the API key never reaches the browser.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/api/fetch-page&lt;/code&gt; fetches pasted links and extracts readable text with Cheerio. A browser can't do this itself because of CORS. It refuses private/local addresses and checks every redirect.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flow is: collect evidence, let Qwen plan searches, add the public results as new sources, then have Qwen build the timeline using only the supplied source IDs. After the model replies, the code &lt;strong&gt;validates its output&lt;/strong&gt;. Any source ID the model made up is stripped or labeled "Unknown source", so the model can't cite something that doesn't exist.&lt;/p&gt;

&lt;p&gt;Search results are tagged as unverified snippets, and a page that failed to load says so on its source card instead of quietly counting as evidence.&lt;/p&gt;

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

&lt;p&gt;This tool handles screenshots of people's posts and half-formed theories about them. Sending all of that to a closed API felt wrong, so the analysis stays on the user's machine. The evidence and the reasoning never leave the browser. Only the short search queries and pasted links go through my backend.&lt;/p&gt;

&lt;p&gt;Open weights made that possible. A small open model that runs locally through WebLLM means no per-request cost, no usage logs on someone else's server, and nothing that disappears if an API changes its terms. The tradeoff is real: a 1.5B model is small, so it sometimes leaves dates empty or writes generic explanations. I handled that by validating its output and falling back to dates from the sources themselves. For this use case, a modest model I can trust with private material beats a stronger one I can't.&lt;/p&gt;

&lt;p&gt;(Honest note: web search still uses SerpAPI, which isn't open. That's the one closed piece, and it's easy to swap for a self-hosted search option.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Partner Category used
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Best Use of SerpApi&lt;/strong&gt; : I used SerpApi to help the model get more insights regarding the question asked by allowing it to surf the web&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>QueueInk</title>
      <dc:creator>NIKITHA S</dc:creator>
      <pubDate>Mon, 19 Oct 2026 05:06:29 +0000</pubDate>
      <link>https://dev.to/nikitha_s_3a42baaa72fd15a/queueink-5e2a</link>
      <guid>https://dev.to/nikitha_s_3a42baaa72fd15a/queueink-5e2a</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 tattoo inquiry usually shows up as a vague DM: "small fox on my forearm, kinda fine line, budget around 400Rs, need it before the 20th." Size, references and exact placement are often missing, and some requests are things the artist simply doesn't do. Answering every one by hand takes time, and so does saying no.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QueueInk&lt;/strong&gt; is an inquiry desk for solo tattoo artists. The artist sets their own rules once: styles they don't do, placements they avoid, a minimum price, and whether they take cover-ups. Then they paste an inquiry and get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flags from their own rules.&lt;/strong&gt; These are checked by plain code, not by the AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An editable job card&lt;/strong&gt; with subject, style, placement, size, colors, references, budget and timing, in the client's own words.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A draft reply.&lt;/strong&gt; If a hard rule is hit, it's a polite decline built from the artist's rules, and the AI isn't even called. Otherwise it asks only for what's missing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A private queue&lt;/strong&gt; with statuses (Inquiry, Quoted, Deposit requested, Booked, and so on), notes, JSON backup and a delete-everything button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI never accepts a job, never sets a price and never creates artwork. It only reads text and drafts a message that the artist edits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who would pay?&lt;/strong&gt; &lt;br&gt;
I think solo artists who book through DMs could, since it saves repetitive replies. I haven't tested whether they'd pay. &lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Deployed link : &lt;a href="https://huggingface.co/spaces/nikisded/queueInk" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/nikisded/queueInk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sample video: [Link to your video, if you made one]&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The sample message on the demo is made up. Please don't paste real client messages into the hosted version (see "Why Does Open Innovation Matter?").&lt;/em&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/stargalax" rel="noopener noreferrer"&gt;
        stargalax
      &lt;/a&gt; / &lt;a href="https://github.com/stargalax/QueueInk" rel="noopener noreferrer"&gt;
        QueueInk
      &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;h2 class="heading-element"&gt;title: queueInk
emoji: /'o-o'&lt;br&gt;
sdk: gradio
sdk_version: 5.50.0
app_file: app.py
pinned: false&lt;/h2&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/stargalax/QueueInk" 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; [Qwen2.5-0.5B-Instruct / 1.5B-Instruct], an open-weight model, run with Hugging Face Transformers. I first tried Gemma, but it was too slow on my setup, so I switched to Qwen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App:&lt;/strong&gt; Python and Gradio. Saved commissions and rules live in the browser's localStorage, not on a server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; a Hugging Face Space on ZeroGPU.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design choice that mattered most: &lt;strong&gt;the model has a narrow job.&lt;/strong&gt; Budget parsing, flags, "what's missing" and the decline decision are ordinary code driven by the artist's settings. The model only extracts a few fields and writes a friendly reply. That keeps decisions predictable, makes declines instant (no model call), and means a small model is enough.&lt;/p&gt;

&lt;p&gt;A few details I'm happy with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client text is treated as untrusted. It can't change the model's instructions or the output format.&lt;/li&gt;
&lt;li&gt;If the model returns something unreadable, the app falls back to a basic reply instead of crashing.&lt;/li&gt;
&lt;li&gt;Health or age mentions are flagged as a prompt for the artist to ask the client, and the tool gives no medical advice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance, honestly:&lt;/strong&gt; my first run on my local space took 90.8s. But after having it hosted on HuggingSpace with ZeroGPU that time came to be 3.7s&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it can't do:&lt;/strong&gt; the rules use keyword matching, so unusual wording can slip through and some phrases false-alarm. A small model gets fields wrong sometimes, which is why every field is editable. I tested it on 10 inquiries, not at scale.&lt;/p&gt;

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

&lt;p&gt;Tattoo clients send personal details, and sometimes health or age information. Because the model is open-weight, an artist can run QueueInk &lt;strong&gt;entirely on their own computer&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
python app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the first model download, nothing needs to leave the machine, there's no per-message API bill, and nobody can change the price or switch the model off. Because the weights are open, the model can also be swapped or tuned later for how artists actually write.&lt;/p&gt;

&lt;p&gt;I want to be clear about the limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The hosted demo is not private.&lt;/strong&gt; On the Space, pasted text is processed on Hugging Face's server, so use made-up messages there. Running locally is the private way to use it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Saved data isn't encrypted.&lt;/strong&gt; The queue is stored in the browser, so anyone with access to that browser profile could read it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A small model makes mistakes.&lt;/strong&gt; That's why the rules, not the model, decide, and why the artist reviews every draft.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Overall&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>automation</category>
      <category>ai</category>
    </item>
    <item>
      <title>Check out my submission for the #Hacktoberfest conducted by MLH x Dev community! Would love to hear your thoughts on this.Thank you</title>
      <dc:creator>NIKITHA S</dc:creator>
      <pubDate>Mon, 05 Oct 2026 07:14:29 +0000</pubDate>
      <link>https://dev.to/nikitha_s_3a42baaa72fd15a/check-out-my-submission-for-the-hacktoberfest-conducted-by-mlh-x-dev-community-would-love-to-hear-kc5</link>
      <guid>https://dev.to/nikitha_s_3a42baaa72fd15a/check-out-my-submission-for-the-hacktoberfest-conducted-by-mlh-x-dev-community-would-love-to-hear-kc5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684" class="crayons-story__hidden-navigation-link"&gt;GetOut!&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/nikitha_s_3a42baaa72fd15a" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3976139%2F8ad615d7-1e84-4b97-bee6-44fefb842d18.jpg" alt="nikitha_s_3a42baaa72fd15a profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/nikitha_s_3a42baaa72fd15a" class="crayons-story__secondary fw-medium m:hidden"&gt;
              NIKITHA S
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                NIKITHA S
                
                
              
              &lt;div id="story-author-preview-content-4796955" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/nikitha_s_3a42baaa72fd15a" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3976139%2F8ad615d7-1e84-4b97-bee6-44fefb842d18.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;NIKITHA S&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 5&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684" id="article-link-4796955"&gt;
          GetOut!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>GetOut!</title>
      <dc:creator>NIKITHA S</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:40:42 +0000</pubDate>
      <link>https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684</link>
      <guid>https://dev.to/nikitha_s_3a42baaa72fd15a/getout-1684</guid>
      <description>&lt;h2&gt;
  
  
  🚶 GetOut! — Draw Your Route, Not Just Your Steps
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;GetOut!&lt;/strong&gt; is a multiplayer walking/cycling game that turns a simple outdoor activity into a challenge.&lt;/p&gt;

&lt;p&gt;The idea came from a very simple problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sometimes you want to go outside with a friend, but you don't really know what to do once you're out there.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of just tracking steps or following a predefined route, &lt;strong&gt;GetOut! gives both players a shape to complete&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One player creates a session and shares a short join code with their friend. Once both players join, the game generates a challenge such as a &lt;strong&gt;triangle, square, or other geometric shape&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Each player gets the same challenge, but it is &lt;strong&gt;anchored around their own starting location&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The actual walking route is generated using real-world roads, so the challenge becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start → Checkpoint A → Checkpoint B → ... → Finish&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Players can see their progress, reach checkpoints, check in, and try to complete the challenge as quickly as possible.&lt;/p&gt;

&lt;p&gt;The goal isn't to create the perfect geometric line on a map.&lt;/p&gt;

&lt;p&gt;It's to turn:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Let's go for a walk."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;into:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Let's see who can complete the triangle first."&lt;/strong&gt; 🏃‍♀️&lt;/p&gt;




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

&lt;p&gt;🌐 &lt;strong&gt;Live Demo:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://get-out-nine.vercel.app/" rel="noopener noreferrer"&gt;https://get-out-nine.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The frontend is deployed on &lt;strong&gt;Vercel&lt;/strong&gt;, while the multiplayer FastAPI backend runs on &lt;strong&gt;Render&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to try it
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open GetOut!&lt;/li&gt;
&lt;li&gt;Create a session.&lt;/li&gt;
&lt;li&gt;Share the generated 6-character code with a friend.&lt;/li&gt;
&lt;li&gt;Your friend joins using the code.&lt;/li&gt;
&lt;li&gt;Start the challenge.&lt;/li&gt;
&lt;li&gt;Follow the generated checkpoints.&lt;/li&gt;
&lt;li&gt;Complete the shape and compare your time!&lt;/li&gt;
&lt;/ol&gt;


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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/stargalax/GetOut-" rel="noopener noreferrer"&gt;https://github.com/stargalax/GetOut&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is split into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; frontend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; multiplayer backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3&lt;/strong&gt; running locally in the browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Valhalla / OpenStreetMap&lt;/strong&gt; for road routing&lt;/li&gt;
&lt;li&gt;WebSockets for real-time player communication&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;The most important part of GetOut! is that the AI isn't running on my backend.&lt;/p&gt;

&lt;p&gt;I use &lt;strong&gt;Qwen3 locally in the user's browser&lt;/strong&gt; through Hugging Face Transformers.&lt;/p&gt;

&lt;p&gt;The architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌─────────────────────┐
                 │      Player         │
                 │   React Frontend    │
                 └──────────┬──────────┘
                            │
                            ▼
                 ┌─────────────────────┐
                 │       Qwen3         │
                 │  Local Browser AI   │
                 └──────────┬──────────┘
                            │
                    Spatial Plan
                            │
                            ▼
                 ┌─────────────────────┐
                 │    FastAPI Backend  │
                 │      Render         │
                 └──────────┬──────────┘
                            │
                            ▼
                 ┌─────────────────────┐
                 │      Valhalla       │
                 │   OSM Road Routing  │
                 └─────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Qwen3 creates the challenge
&lt;/h3&gt;

&lt;p&gt;When the challenge starts, Qwen3 is loaded directly in the browser.&lt;/p&gt;

&lt;p&gt;It receives the challenge context and produces a semantic description such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shape"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"triangle"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"size"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"large"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"normal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Triangle Challenge"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend then converts that semantic response into a structured &lt;strong&gt;spatial plan&lt;/strong&gt; containing the shape, checkpoints, rotation, and target dimensions.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;START
  ↓
CHECKPOINT A
  ↓
CHECKPOINT B
  ↓
START / FINISH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. The backend handles multiplayer coordination
&lt;/h3&gt;

&lt;p&gt;The FastAPI backend doesn't run the AI model.&lt;/p&gt;

&lt;p&gt;Instead, it receives the spatial plan from the browser and handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;session creation&lt;/li&gt;
&lt;li&gt;join codes&lt;/li&gt;
&lt;li&gt;player connections&lt;/li&gt;
&lt;li&gt;WebSocket communication&lt;/li&gt;
&lt;li&gt;player locations&lt;/li&gt;
&lt;li&gt;challenge synchronization&lt;/li&gt;
&lt;li&gt;route generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sessions are synchronized in real time using WebSockets.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Real roads replace impossible straight lines
&lt;/h3&gt;

&lt;p&gt;A geometric triangle looks great mathematically, but you can't necessarily walk in a perfectly straight line through buildings, rivers, highways, or private property.&lt;/p&gt;

&lt;p&gt;So instead of forcing the road network to literally draw a triangle, GetOut! treats the generated shape as a &lt;strong&gt;checkpoint challenge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Valhalla then finds walkable/cyclable routes between those checkpoints.&lt;/p&gt;

&lt;p&gt;This makes the challenge work in the real world.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Each player gets their own version of the challenge
&lt;/h3&gt;

&lt;p&gt;This was one of my favorite parts to implement.&lt;/p&gt;

&lt;p&gt;If two friends start several kilometers apart, they shouldn't have to travel to the same physical triangle.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             Player A
              /\
             /  \
            /____\


                       Player B
                        /\
                       /  \
                      /____\
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both players get the &lt;strong&gt;same type of challenge&lt;/strong&gt;, but it is generated relative to their own starting locations.&lt;/p&gt;

&lt;p&gt;That makes the competition fair while still letting both people start from wherever they are.&lt;/p&gt;




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

&lt;p&gt;For me, the biggest advantage of open innovation was &lt;strong&gt;control&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A closed AI API could have generated the challenge description, but then the entire experience would depend on sending a user's location and prompt to an external service.&lt;/p&gt;

&lt;p&gt;With a local open-weight model, I could experiment with running the AI directly on the user's device.&lt;/p&gt;

&lt;p&gt;That creates some interesting possibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; location-based challenge generation doesn't require sending the AI inference itself to a third-party AI API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lower backend cost:&lt;/strong&gt; my server doesn't need to run an expensive model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline potential:&lt;/strong&gt; the AI component can potentially work without a separate inference server once the model is available locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experimentation:&lt;/strong&gt; I can change the prompt and challenge logic without being tied to a proprietary API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency:&lt;/strong&gt; I can see exactly where the model's output ends and my application logic begins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also made the architecture more interesting.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User → Cloud AI → Backend → Map
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I could build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 ↓
Local AI
 ↓
Spatial Plan
 ↓
Backend
 ↓
Real-world route
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI becomes part of the application itself rather than just an API call hidden behind the server.&lt;/p&gt;




&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I didn't use an agent for this project, so I don't have an Agent Session to include here.&lt;/p&gt;

&lt;p&gt;Instead, the AI component is &lt;strong&gt;Qwen3 running locally in the browser&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I wanted to keep the architecture intentionally simple: the model generates the semantic challenge, while deterministic application code handles the geometry, multiplayer state, and routing.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  🏆 Best Use of Render
&lt;/h3&gt;

&lt;p&gt;GetOut!'s multiplayer backend is deployed on &lt;strong&gt;Render&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Render hosts the FastAPI server responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multiplayer session creation&lt;/li&gt;
&lt;li&gt;join-code management&lt;/li&gt;
&lt;li&gt;WebSocket connections&lt;/li&gt;
&lt;li&gt;synchronizing the two players&lt;/li&gt;
&lt;li&gt;receiving spatial plans&lt;/li&gt;
&lt;li&gt;generating real-world routes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend is deployed separately on Vercel, while Render acts as the real-time backend that connects the players together.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React + Vite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maps&lt;/td&gt;
&lt;td&gt;React Leaflet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local AI&lt;/td&gt;
&lt;td&gt;Qwen3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Runtime&lt;/td&gt;
&lt;td&gt;Hugging Face Transformers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time communication&lt;/td&gt;
&lt;td&gt;WebSockets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Routing&lt;/td&gt;
&lt;td&gt;Valhalla&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Map data&lt;/td&gt;
&lt;td&gt;OpenStreetMap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend hosting&lt;/td&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend hosting&lt;/td&gt;
&lt;td&gt;Render&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I started with the idea of making something that would simply encourage two people to &lt;strong&gt;get outside&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But while building it, I became much more interested in the boundary between &lt;strong&gt;AI-generated ideas and deterministic real-world systems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Qwen doesn't need to know how to navigate a city.&lt;/p&gt;

&lt;p&gt;Valhalla doesn't need to know what a "fun challenge" is.&lt;/p&gt;

&lt;p&gt;The frontend doesn't need to understand how an LLM works.&lt;/p&gt;

&lt;p&gt;Each part does one thing, and together they turn a generated idea into something you can actually &lt;strong&gt;walk&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that's the whole point of &lt;strong&gt;GetOut!&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't just go for a walk. Give yourself somewhere to go.&lt;/strong&gt; 🚶‍♀️🗺️&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can check out a sample I did with my friend here!&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/WVvTZfiIQ8M" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;br&gt;
My friend was able to complete the challenge before me! lol&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%2F06dxmj6rp2sbwu66b1qy.jpeg" 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%2F06dxmj6rp2sbwu66b1qy.jpeg" alt=" " width="722" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading my submission!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Decrypting with Ghosts</title>
      <dc:creator>NIKITHA S</dc:creator>
      <pubDate>Sun, 21 Jun 2026 16:18:29 +0000</pubDate>
      <link>https://dev.to/nikitha_s_3a42baaa72fd15a/decrypting-with-ghosts-4op5</link>
      <guid>https://dev.to/nikitha_s_3a42baaa72fd15a/decrypting-with-ghosts-4op5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built an atmospheric, web-based cryptographic puzzle game using Twine (Harlowe 3). Together with the ghost of Alan Turing! you must crack five distinct historical and digital ciphers to unlock a mysterious mechanical core. &lt;/p&gt;

&lt;p&gt;My goal was to blend historical text-based cryptography with rewarding visual mechanics. Every time the player solves an encrypted message, a digital flower dynamically sprouts and blossoms in unison with their achievements, populating a persistent garden.&lt;/p&gt;

&lt;p&gt;You can give the game a go here : {&lt;a href="https://stargalax.github.io/June-Solstice-Game-Jam/" rel="noopener noreferrer"&gt;https://stargalax.github.io/June-Solstice-Game-Jam/&lt;/a&gt;}&lt;/p&gt;

&lt;h3&gt;
  
  
  Relation to the Theme
&lt;/h3&gt;

&lt;p&gt;The game embraces the &lt;strong&gt;June Solstice&lt;/strong&gt; theme through a deliberate aesthetic contrast and its core gameplay loop. While the background is locked in terminal darkness, your progress acts as a digital solstice. The entire experience mirrors a time-lapse organic transformation: by overriding security locks, the player coaxes digital life out of a cold machine, culminating in a fully bloomed, glowing neon summer garden at the absolute peak of the solstice loop.&lt;/p&gt;




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

&lt;p&gt;Below is a brief look at the custom-engineered visual reward loop in action. &lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/2omojtAa4go"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;As seen in the video, the game tracks player victories with precision. When a cryptographic multiple-choice question is answered correctly, a flower blooms.&lt;/p&gt;




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

&lt;p&gt;You can explore the full interactive framework, the custom Twine macro logic, and our custom CSS animation stylesheet here:&lt;/p&gt;

&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/stargalax" rel="noopener noreferrer"&gt;
        stargalax
      &lt;/a&gt; / &lt;a href="https://github.com/stargalax/June-Solstice-Game-Jam" rel="noopener noreferrer"&gt;
        June-Solstice-Game-Jam
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/h2&gt;

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

&lt;p&gt;Building an interactive fiction experience with persistent, fluid animations presented unique challenges in Twine's default browser rendering engine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;The Cryptographic Loop:&lt;/strong&gt; Rather than standard general knowledge trivia, I converted the interactive loop into quick-thinking cryptographic hurdles, featuring &lt;strong&gt;Caesar Shifts (-3)&lt;/strong&gt;, &lt;strong&gt;Reverse Ciphers&lt;/strong&gt;, ancient &lt;strong&gt;Atbash Ciphers&lt;/strong&gt;, &lt;strong&gt;8-bit Binary ASCII streams&lt;/strong&gt;, and a matrix-style &lt;strong&gt;Grid Cipher&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Defeating the Animation Glitch:&lt;/strong&gt; In early iterations, changing rooms forced the browser to re-render all CSS items from &lt;code&gt;0px&lt;/code&gt; to &lt;code&gt;100px&lt;/code&gt;, causing a frantic, messy "double-growth" loop on screen. To solve this, I decoupled static flowers from active ones using an intentional &lt;code&gt;.bloom-now&lt;/code&gt; class state.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dreamy Ambience Integration:&lt;/strong&gt; To combat aggressive modern browser auto-play blocks on music elements, I routed a soft, floating ambient pad track through global JavaScript triggered dynamically by the player's very first interaction click. &lt;/li&gt;
&lt;/ul&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%2Fic27r6zinp52yaei8l8j.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%2Fic27r6zinp52yaei8l8j.png" alt="Snapshot of the twinery build " width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎖️ Best Ode to Alan Turing
&lt;/h3&gt;

&lt;p&gt;This project was built from the ground up to celebrate the legacy and intellectual brilliance of Alan Turing. Instead of a passive biography, players step directly into his footsteps. &lt;/p&gt;

&lt;p&gt;By interpreting raw binary bitstreams , navigating morphological patterns, and working side-by-side with his digital phantom, the game acts as a living, breathing monument to his foundational contributions to computer science and cryptography. The bittersweet finale on the solstice peak serves as a heartfelt thank you to his enduring legacy.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
