<?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: Shivansh Singh</title>
    <description>The latest articles on DEV Community by Shivansh Singh (@shivansh_singh_0aa2b6e928).</description>
    <link>https://dev.to/shivansh_singh_0aa2b6e928</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%2F4154438%2Fbf3abc8f-523b-4a87-9b23-f4ecbbcb55cc.jpeg</url>
      <title>DEV Community: Shivansh Singh</title>
      <link>https://dev.to/shivansh_singh_0aa2b6e928</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shivansh_singh_0aa2b6e928"/>
    <language>en</language>
    <item>
      <title>I built a mechanic-quote lie detector that runs entirely on your laptop</title>
      <dc:creator>Shivansh Singh</dc:creator>
      <pubDate>Tue, 13 Oct 2026 08:00:45 +0000</pubDate>
      <link>https://dev.to/shivansh_singh_0aa2b6e928/i-built-a-mechanic-quote-lie-detector-that-runs-entirely-on-your-laptop-10jn</link>
      <guid>https://dev.to/shivansh_singh_0aa2b6e928/i-built-a-mechanic-quote-lie-detector-that-runs-entirely-on-your-laptop-10jn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Every car owner on earth has had the same moment: the mechanic slides a bill across the counter, you stare at "throttle body decarbonising — ₹3,400," and you have absolutely no idea whether that's real or theatre. You pay, because the alternative is an argument you're guaranteed to lose.&lt;strong&gt;wrenchwise&lt;/strong&gt; is my answer to that moment: paste any repair estimate, and it checks every line against fair-price data, flags the inflated ones, and explains the whole thing in plain English — with AI that runs 100% on your device. Bills, made honest.&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%2F8h4jw2giiwl788fpjx3k.jpg" 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%2F8h4jw2giiwl788fpjx3k.jpg" alt="wrenchwise — bills, made honest" width="800" height="500"&gt;&lt;/a&gt;## What I built&lt;br&gt;
A single-file web app. You paste the estimate (straight from the garage's WhatsApp message — that's how estimates actually arrive), pick your region, and hit Analyze. In under a second you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A verdict stamp: &lt;strong&gt;OVERPRICED&lt;/strong&gt;, &lt;strong&gt;QUESTION IT&lt;/strong&gt;, or &lt;strong&gt;FAIR DEAL&lt;/strong&gt; — plus an overpay gauge and count-up totals&lt;/li&gt;
&lt;li&gt;Your quoted total vs. the fair range, with a &lt;strong&gt;potential overpay&lt;/strong&gt; figure&lt;/li&gt;
&lt;li&gt;A line-by-line breakdown — each item flagged FAIR / HIGH / ABOVE RANGE / BELOW RANGE / UNKNOWN, with its fair range on a visual bar and a note on what to watch for&lt;/li&gt;
&lt;li&gt;A cross-check: does the bill's stated total actually match the line items? (Padding hides here more often than you'd think)&lt;/li&gt;
&lt;li&gt;Then, one click loads &lt;strong&gt;Gemma 2B in your browser&lt;/strong&gt; and streams a plain-English explanation of the flagged items, a two-sentence verdict, and three sharp questions to ask your mechanic&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%2Fkn8c3b2oyl0npcx49ep9.jpg" 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%2Fkn8c3b2oyl0npcx49ep9.jpg" alt="Line-by-line breakdown with fair-price flags" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try the sample estimate first — it's a realistically padded brake-job bill, and watching it get caught is the whole pitch in ten seconds.&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%2Fagdjjxslrh19vnqqpbjc.jpg" 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%2Fagdjjxslrh19vnqqpbjc.jpg" alt="Verdict: overpriced, with the overpay figure" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://shivvpokhariya-lgtm.github.io/hacktoberfest-dev-challenge/" rel="noopener noreferrer"&gt;wrenchwise — bills, made honest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/shivvpokhariya-lgtm/hacktoberfest-dev-challenge" rel="noopener noreferrer"&gt;github.com/shivvpokhariya-lgtm/hacktoberfest-dev-challenge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No signup, no server, no API key. Open it in Chrome or Edge; the line-by-line analysis works instantly, and the AI explainer needs one click to download the model weights (~1.5 GB, cached after).&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;Two layers, each doing what it's actually good at — this is the architectural decision the whole project rests on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A deterministic engine in plain JavaScript.&lt;/strong&gt; It parses the pasted text (one item per line, price at the end), matches each line against a curated price pack using alias matching, and flags anything outside fair range with deliberately conservative thresholds. &lt;strong&gt;Every number on screen is computed by code.&lt;/strong&gt; The model never does math, never invents a price. I tested the core in Node against both sample estimates and edge cases (unknown parts, totals-only pastes, empty input) before it ever touched a browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google's open-weight Gemma 2B as the explainer, via WebLLM.&lt;/strong&gt; One CDN import, WebGPU inference, zero backend. The model receives the computed numbers and does the one thing small models do well: put figures into plain words, in a tone a non-car person can act on. If the browser has no WebGPU, the app degrades gracefully — the deterministic analysis is complete on its own.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The price data ships as &lt;code&gt;PRICE_PACKS&lt;/code&gt;: 22 common jobs for India (₹), 14 for the US ($, marked beta). The ranges are indicative baselines compiled from published Indian service-price sources — GoMechanic's own rate cards, MyCarHelpline's wear-and-tear tables, insurer-published cost guides — with full methodology and links in &lt;code&gt;DATA_SOURCES.md&lt;/code&gt; in the repo. They err on the wide side deliberately: a flag means "ask about this," not "you're being cheated." Adding a region is literally one object — that's the expansion path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open innovation matters for what I built
&lt;/h2&gt;

&lt;p&gt;The challenge asked four questions. Here's my honest answer to each:&lt;strong&gt;Does running your own model keep costs low enough that the business actually works?&lt;/strong&gt; Yes — and it's structural, not marginal. The pricing I have in mind is $2 per quote, pay-per-use. At that price, any per-token API cost plus server hosting turns a side hustle into a hobby that loses money. With the model running on the user's device and the whole app as a static file, my marginal cost per quote is $0 and my infrastructure is a static host. The unit economics survive contact with reality.&lt;strong&gt;Keep your customers' data private?&lt;/strong&gt; This is the one I'd lead with. A repair estimate carries your number plate, your VIN, your phone number, your service history — it's an identity document with an oil change attached. Nobody should have to upload that to a cloud API to find out if their brake pads are overpriced. Here, the privacy boundary &lt;em&gt;is&lt;/em&gt; the product: weights download once, and after that the page works with the network effectively irrelevant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let you fine-tune for a niche that a general-purpose API handles poorly?&lt;/strong&gt; A general chatbot, asked "is ₹6,800 fair for front brake pads," will hedge, hallucinate a range, or confidently state something wrong. wrenchwise doesn't ask the model about prices at all — the curated price pack is the source of truth, and the open model is the translator between that data and a human. Niche knowledge in code, language in weights: each component doing the job it's reliable at.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoid getting locked into someone else's pricing?&lt;/strong&gt; No API key means no one can raise my prices, throttle my users, or deprecate the model under a live product. The weights are open weights under Google's Gemma Terms of Use, which permit commercial use; if a better 2B model appears, I swap one string.&lt;/p&gt;

&lt;p&gt;The through-line across all four: Gemma isn't a feature bolted onto this product — it's the load-bearing wall. Without a capable open-weights model that runs on the user's own hardware, wrenchwise cannot exist at its price point, cannot keep its privacy promise, and cannot run without a backend. That's what "best use" means to me: the product is shaped around what the open model makes possible, not the other way around.## Who would pay for this?&lt;/p&gt;

&lt;p&gt;Car owners, $2 a quote — the pitch writes itself: "this app saved me ₹4,450 on one visit" (that's the actual overpay figure on the built-in sample). Beyond that, there's a B2B angle I like even more: independent garages white-labeling a "verified fair quote" badge to win trust from first-time customers. Trust is the scarcest commodity in that industry, and a third-party check manufactures it.&lt;/p&gt;

&lt;h2&gt;
  
  
  My first user
&lt;/h2&gt;

&lt;p&gt;The validation that matters isn't my test suite — it's a real person with a real bill. The test I'm running this week: hand the demo to a car owner with a recent service bill and ask three things — did the flags match his gut, what confused him, and would he have paid $2 to know before approving. If you've got a service bill handy, run it through the demo and tell me in the comments what it gets wrong — you'd be the first user this section is about.## Prize categories&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — Gemma 2B is the entire AI layer, running as open weights on-device.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Built as a single HTML file. The deterministic core is framework-free and Node-tested; the AI layer is one WebLLM import. If you run a garage, or you've ever paid a bill you didn't understand — I'd genuinely like to hear what it gets wrong.&lt;/p&gt;

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