<?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: Yash Kawade</title>
    <description>The latest articles on DEV Community by Yash Kawade (@yashpkawade).</description>
    <link>https://dev.to/yashpkawade</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Yash Kawade</title>
      <link>https://dev.to/yashpkawade</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yashpkawade"/>
    <language>en</language>
    <item>
      <title>I Stopped Asking AI to Split the Bill: SettleSloth Extracts Group-Chat Expenses with Gemma 4, and Deterministic Code Audits Every Rupee</title>
      <dc:creator>Yash Kawade</dc:creator>
      <pubDate>Sun, 25 Oct 2026 14:04:38 +0000</pubDate>
      <link>https://dev.to/yashpkawade/i-stopped-asking-ai-to-split-the-bill-settlesloth-extracts-group-chat-expenses-with-gemma-4-and-48ag</link>
      <guid>https://dev.to/yashpkawade/i-stopped-asking-ai-to-split-the-bill-settlesloth-extracts-group-chat-expenses-with-gemma-4-and-48ag</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;Every group trip, flatmate bill split, or midnight hackathon food run ends with the same procrastinated chore: scrolling through a chaotic WhatsApp or Telegram thread to figure out who owes whom. &lt;/p&gt;

&lt;p&gt;Nobody writes clean accounting entries in a group chat. People type messages like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;"Rahul: Paid 2.4k for beach shack dinner last night"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"Priya: Paid 4800 for scuba package, don't count Aman he didn't do watersports"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"Aman: I sent Rahul 500 on GPay yesterday for breakfast"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"Neha: Maybe 350 for scooter petrol? Need to check receipt"&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you paste a transcript like that into a general-purpose chatbot and ask it to settle the tab, it frequently fails in subtle, frustrating ways. Language models can miscalculate splits with exclusions, double-count direct GPay repayments as fresh shared expenses, silently fold uncertain guesses (&lt;em&gt;"Maybe 350?"&lt;/em&gt;) into binding debts, or produce net balances that do not sum to zero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SettleSloth 🦥&lt;/strong&gt; solves this chore by enforcing a strict architectural boundary: &lt;strong&gt;the open-weight model extracts structured claims and verbatim quotes, while deterministic JavaScript verifies the evidence and computes the math.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of spending Sunday night building a spreadsheet, you paste the raw chat dump and click &lt;strong&gt;Let the Sloth Settle It&lt;/strong&gt;. SettleSloth extracts each claim using Google's open-weight &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;, verifies every rupee against the exact source text via &lt;code&gt;QuoteGuard&lt;/code&gt;, quarantines uncertain expenses in amber until a human confirms them, and computes a deterministic settlement plan.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployed Application (Render):&lt;/strong&gt; &lt;a href="https://settlesloth.onrender.com/" rel="noopener noreferrer"&gt;https://settlesloth.onrender.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Service Health &amp;amp; Model Config Check:&lt;/strong&gt; &lt;a href="https://settlesloth.onrender.com/api/health" rel="noopener noreferrer"&gt;https://settlesloth.onrender.com/api/health&lt;/a&gt;
&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%2Fnf26ul5ii3q0lossnz4u.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%2Fnf26ul5ii3q0lossnz4u.png" alt="SettleSloth Verified Ledger and Hosted Run" width="800" height="392"&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%2Fdp4viw7f58pn63tg56ht.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%2Fdp4viw7f58pn63tg56ht.png" alt="SettleSloth Quarantine Recalculation and Transfer Plan" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Walkthrough of a Real Hosted Run (Goa Weekend Trip Preset)
&lt;/h3&gt;

&lt;p&gt;In our verified run on the live Render deployment using the 12-message &lt;strong&gt;Goa Trip&lt;/strong&gt; preset:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hosted Open-Weight Extraction:&lt;/strong&gt; The backend called &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; via Google AI Studio (completing the extraction pass in &lt;code&gt;22,978 ms&lt;/code&gt; on that hosted run). Out of 12 conversational messages—including casual chatter like &lt;em&gt;"Goa sunsets are amazing guys"&lt;/em&gt;—the pipeline identified &lt;strong&gt;9 financial messages&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verified Ledger (8 Confirmed Entries, ₹14,850.00 Total Spend):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Shorthand notation (&lt;code&gt;"Paid 2.4k for beach shack dinner"&lt;/code&gt;) was parsed and verified against the source quote as &lt;code&gt;₹2,400.00&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Participant exclusions (&lt;code&gt;"Paid 4800 for scuba package, don't count Aman"&lt;/code&gt;) split the ₹4,800 charge exclusively across Priya, Rahul, and Neha (₹1,600 each).&lt;/li&gt;
&lt;li&gt;Direct peer-to-peer transfers (&lt;code&gt;"I sent Rahul 500 on GPay yesterday"&lt;/code&gt;) were classified as a &lt;code&gt;repayment&lt;/code&gt; from Aman to Rahul rather than a new group expense.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguity Quarantine (1 Item Isolated):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Neha's message—&lt;code&gt;"Maybe 350 for scooter petrol? Need to check receipt"&lt;/code&gt;—was flagged by the deterministic quarantine rules because of the uncertainty markers (&lt;code&gt;"Maybe"&lt;/code&gt;, &lt;code&gt;"?"&lt;/code&gt;, &lt;code&gt;"Need to check receipt"&lt;/code&gt;). It was kept out of the active balance math and placed in the amber &lt;strong&gt;Needs Checking (Quarantined Claims)&lt;/strong&gt; card.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Sum Net Balances &amp;amp; Settlement Plan:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Using integer paise arithmetic, the solver verified that all final net balances summed to exact zero (&lt;code&gt;Priya +₹4,854.17&lt;/code&gt;, &lt;code&gt;Rahul +₹554.17&lt;/code&gt;, &lt;code&gt;Aman -₹2,212.50&lt;/code&gt;, &lt;code&gt;Neha -₹3,195.84&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The deterministic greedy settlement solver reduced the 8 verified transactions into &lt;strong&gt;3 transfers&lt;/strong&gt;:

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Neha → Priya:&lt;/strong&gt; &lt;code&gt;₹3,195.84&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aman → Priya:&lt;/strong&gt; &lt;code&gt;₹1,658.33&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aman → Rahul:&lt;/strong&gt; &lt;code&gt;₹554.17&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Human-in-the-Loop Recalculation (&lt;code&gt;POST /api/solve&lt;/code&gt;):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Checking &lt;strong&gt;Confirm &amp;amp; Include&lt;/strong&gt; on Neha's quarantined ₹350 petrol claim recalculates the entire ledger and transfer plan deterministically in memory (&lt;code&gt;0ms Math Update&lt;/code&gt;) without making another 23-second model call.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&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/YashK2003" rel="noopener noreferrer"&gt;
        YashK2003
      &lt;/a&gt; / &lt;a href="https://github.com/YashK2003/settlesloth" rel="noopener noreferrer"&gt;
        settlesloth
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open-weight AI expense reconciler
    &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;SettleSloth 🦥&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"The Open Model Extracts, Deterministic Code Guarantees."&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A neuro-symbolic group expense reconciler that turns chaotic group-chat dumps into audit-verified debt settlements. Built with Google Gemma open-weight models (hosted Gemma 4 via Google AI Studio or local Ollama), a deterministic verification engine, and zero external build tooling.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dede623c3fb2603908a097e0a9eb11fb3b4b23daa60e962e513ed6567f848c71/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d32302532422d3333393933333f6c6f676f3d6e6f64652e6a73266c6f676f436f6c6f723d7768697465" alt="Node.js 20+"&gt;&lt;/a&gt;
&lt;a href="https://github.com/YashK2003/settlesloth/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href=""&gt;&lt;img src="https://camo.githubusercontent.com/bed50faffed65965a751a291eb3c4b1e90dcdfbfa960ea643438ecd79b12dcad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d383825323070617373696e672d627269676874677265656e2e737667" alt="Tests: 88 passing"&gt;&lt;/a&gt;
&lt;a href=""&gt;&lt;img src="https://camo.githubusercontent.com/f8a77ad222ba2b73fc860f2f93a39a757d269f6f6a38a836debed3bf9e9a1522/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446570656e64656e636965732d45787072657373253230253236253230446f74656e762532304f6e6c792d626c75652e737667" alt="Zero Bundler"&gt;&lt;/a&gt;
&lt;a href=""&gt;&lt;img src="https://camo.githubusercontent.com/998e8d47e421211c1f48d7ad651aa32cfe2b9ff9d5908fc02bb2338e6c168d37/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d5765656b25323033253230253232536c6f77253230616e642532305374656164792532322d6f72616e67652e737667" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem: Group Expense Procrastination &amp;amp; Chatbot Hallucination&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Reconciling group expenses after weekend trips, hackathons, or month-end flatmate bills is notorious for causing procrastination:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chaotic chat reality:&lt;/strong&gt; Friends don't write structured ledgers; they send conversational Hinglish/slang text dumps
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Rahul: paid 2.4k for dinner. Aman didn't drink so don't count him."&lt;/em&gt;
&lt;em&gt;"Priya: Aman sent Rahul 500 for petrol. Petrol was maybe ₹350?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shorthand, exclusions, and repayments:&lt;/strong&gt; Expenses use &lt;code&gt;k&lt;/code&gt; notation (&lt;code&gt;2.4k = 2400&lt;/code&gt;), complex participant exclusions (&lt;code&gt;don't count Aman&lt;/code&gt;), direct repayments (&lt;code&gt;Aman sent Rahul 500&lt;/code&gt;), and fuzzy, uncertain estimates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why pure LLM chatbots fail:&lt;/strong&gt; When general-purpose LLMs…&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/YashK2003/settlesloth" 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;p&gt;SettleSloth is built as a lightweight, zero-bundler Node.js (v20+) and Express 5 web application with only two runtime dependencies (&lt;code&gt;express&lt;/code&gt; and &lt;code&gt;dotenv&lt;/code&gt;) and a Vanilla HTML/CSS/JavaScript frontend styled with Tailwind CSS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw Chat Dump ──► Open-Weight Extraction (Gemma 4 / Ollama / Fallback)
                        │
                        ▼ Structured JSON Claims + Verbatim Quotes
          Deterministic Verification Engine (JavaScript)
          ├── 1. QuoteGuard: Verifies substring &amp;amp; numeric match in source text
          ├── 2. ParticipantGuard: Blocks unestablished names &amp;amp; self-repayments
          └── 3. Ambiguity Quarantine: Isolates "maybe" / "?" / "check" claims
                        │
                        ▼ Verified Claims Only
          Deterministic Settlement Solver (POST /api/reconcile &amp;amp; /api/solve)
          ├── Integer Paise Math (₹1.00 = 100 paise) + Remainder Distribution
          ├── Zero-Sum Invariant Check: ∑ NetBalance ≡ 0.00
          └── Greedy Cash-Flow Solver ──► Fewest Peer-to-Peer Transfers

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. The Open-Weight AI Layer (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;The model's only job is translating messy conversational text into a strict JSON schema containing &lt;code&gt;payer&lt;/code&gt;, &lt;code&gt;amount&lt;/code&gt;, &lt;code&gt;excluded&lt;/code&gt;, &lt;code&gt;type&lt;/code&gt; (&lt;code&gt;expense&lt;/code&gt; vs. &lt;code&gt;repayment&lt;/code&gt;), &lt;code&gt;status&lt;/code&gt; (&lt;code&gt;confirmed&lt;/code&gt; vs. &lt;code&gt;ambiguous&lt;/code&gt;), and an &lt;code&gt;exact_quote&lt;/code&gt; copied from the chat.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hosted Mode (Demonstrated Live):&lt;/strong&gt; Calls &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; (with support for &lt;code&gt;gemma-4-31b-it&lt;/code&gt;) through the Google AI Studio REST API via native &lt;code&gt;fetch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional Local Mode (Implemented in Code):&lt;/strong&gt; Includes an Ollama provider (&lt;code&gt;gemma3:4b&lt;/code&gt; / &lt;code&gt;gemma3:1b&lt;/code&gt; at &lt;code&gt;http://localhost:11434&lt;/code&gt;) for offline local setups. &lt;em&gt;(Note: On our public Render cloud instance, &lt;code&gt;/api/health&lt;/code&gt; reports &lt;code&gt;google: true, ollama: false&lt;/code&gt;, so the live hosted demo runs via Google AI Studio rather than local Ollama).&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Fallback Engine:&lt;/strong&gt; Earlier in development, when a hosted API call hit a timeout, the system's automatic failover routed the request to our local regex heuristic parser (&lt;code&gt;fallbackParser.js&lt;/code&gt;), keeping the app responsive. After tuning &lt;code&gt;GEMINI_TIMEOUT_MS&lt;/code&gt; for the 26B model, hosted Gemma 4 inference succeeded cleanly—while retaining the fallback parser for zero-key local runs or network outages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The Deterministic Guardrail &amp;amp; Math Layer
&lt;/h3&gt;

&lt;p&gt;Once Gemma returns candidate claims, deterministic JavaScript takes over:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;QuoteGuard&lt;/code&gt;:&lt;/strong&gt; Normalizes whitespace and casing to verify that every item's &lt;code&gt;exact_quote&lt;/code&gt; actually exists in the raw chat text, and independently parses numerical tokens inside that quote (&lt;code&gt;2.4k&lt;/code&gt; $\rightarrow$ &lt;code&gt;2400&lt;/code&gt;) to confirm the extracted amount is grounded in evidence. The UI also includes a &lt;strong&gt;Simulate Hallucination&lt;/strong&gt; toggle to test &lt;code&gt;QuoteGuard&lt;/code&gt; rejecting unbacked claims on demand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ParticipantGuard&lt;/code&gt;:&lt;/strong&gt; Ensures no invented names accumulate debt and blocks invalid self-repayments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integer Paise Arithmetic &amp;amp; Greedy Settlement:&lt;/strong&gt; All splits are computed in integer paise (&lt;code&gt;₹1.00 = 100 paise&lt;/code&gt;) with deterministic remainder distribution to avoid IEEE 754 floating-point drift, followed by a greedy cash-flow solver that matches maximum debtors with maximum creditors.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Automated Testing &amp;amp; CI Verification
&lt;/h3&gt;

&lt;p&gt;The repository includes &lt;strong&gt;88 automated tests across 19 test suites&lt;/strong&gt; using Node's native &lt;code&gt;node --test&lt;/code&gt; runner, verifying &lt;code&gt;QuoteGuard&lt;/code&gt;, &lt;code&gt;ParticipantGuard&lt;/code&gt;, ambiguity quarantine, paise remainder distribution, zero-sum balance invariants, and API contracts. A GitHub Actions CI pipeline executes the full test suite on Node.js 24 on every push and pull request.&lt;/p&gt;

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

&lt;p&gt;Building SettleSloth around open-weight models and inspectable verification code matters for three concrete engineering reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Auditable Trust Boundaries Instead of Black-Box Math:&lt;/strong&gt; Financial reconciliation requires knowing &lt;em&gt;why&lt;/em&gt; a number is on the screen. By pairing an open-weight Gemma model with open-source verification guards (&lt;code&gt;QuoteGuard&lt;/code&gt; and &lt;code&gt;ParticipantGuard&lt;/code&gt;), every balance is traceable back to a highlighted substring in the original conversation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Portability and Honest Privacy Trade-Offs:&lt;/strong&gt; Using the hosted Render demo (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; via Google AI Studio) makes SettleSloth immediately testable in any browser with zero setup, though it sends the chat text to Google's API for inference. Because the model layer is built on the open-weight Gemma family and a unified adapter, anyone who wants strict on-device privacy for personal financial chats can clone the MIT-licensed repository and point &lt;code&gt;.env&lt;/code&gt; at a local Ollama model (&lt;code&gt;gemma3:4b&lt;/code&gt;) or run the offline deterministic fallback without rewriting the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience Against API Failures:&lt;/strong&gt; Open architectures allow developers to design graceful degradation. Coupling an open-weight model adapter with a deterministic local fallback means a group can still settle their tab even when an API key is missing or an external endpoint times out.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;The real friction of settling group expenses isn't paying your friends—it's the cognitive drudgery of reading 30 chat messages, mentally subtracting someone who skipped watersports, remembering a ₹500 GPay transfer from Tuesday, and arguing over an unconfirmed petrol receipt.&lt;/p&gt;

&lt;p&gt;In the Goa Trip scenario, SettleSloth turns 12 messy chat messages into 3 ready-to-send payment lines and a one-click &lt;strong&gt;Copy WhatsApp Summary&lt;/strong&gt; card. While the UI displays an illustrative estimate of &lt;code&gt;~27 mins&lt;/code&gt; saved (modeled as a simple product heuristic of roughly 3 minutes of manual spreadsheet checking saved per financial message, rather than a clinical user study), the practical payoff is immediate: when Neha eventually finds her ₹350 petrol receipt, confirming it takes one checkbox click and 0ms of local math instead of rebuilding a spreadsheet from scratch.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; SettleSloth uses Google's open-weight &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; model as its natural-language extraction core to parse messy Hinglish chat dumps, shorthand figures (&lt;code&gt;2.4k&lt;/code&gt;), participant exclusions, direct repayments, and verbatim quotes before passing them to the deterministic verification engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; Both the Node.js/Express API runtime and the interactive frontend workbench are deployed on Render (&lt;a href="https://settlesloth.onrender.com/" rel="noopener noreferrer"&gt;https://settlesloth.onrender.com/&lt;/a&gt;) using a declarative &lt;code&gt;render.yaml&lt;/code&gt; Blueprint and a live &lt;code&gt;/api/health&lt;/code&gt; readiness endpoint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; The project automates repository verification and regression testing using a GitHub Actions CI workflow (qualifying under the official category criteria to &lt;em&gt;"automate your project with GitHub Actions"&lt;/em&gt;), running all 88 unit and integration tests on Node.js 24 across pushes and pull requests.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Language models are remarkably good at understanding messy human conversation, but they should never be the final authority on a financial ledger. By letting open-weight Gemma 4 extract the claims while deterministic code demands verbatim evidence and computes the paise math, SettleSloth lets everyone in the group chat be a little lazier—without getting shortchanged.&lt;/p&gt;

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