<?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: Shaurya Mehta</title>
    <description>The latest articles on DEV Community by Shaurya Mehta (@shaurya_mehta).</description>
    <link>https://dev.to/shaurya_mehta</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%2F4152880%2F6db3e205-d4e9-4c84-a233-56b55beeb965.jpg</url>
      <title>DEV Community: Shaurya Mehta</title>
      <link>https://dev.to/shaurya_mehta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shaurya_mehta"/>
    <language>en</language>
    <item>
      <title>HisabMate: A Local-First, AI-Assisted Digital Bahi-Khata for Indian Microbusinesses</title>
      <dc:creator>Shaurya Mehta</dc:creator>
      <pubDate>Mon, 19 Oct 2026 05:56:25 +0000</pubDate>
      <link>https://dev.to/shaurya_mehta/hisabmate-a-local-first-ai-assisted-digital-bahi-khata-for-indian-microbusinesses-1g1e</link>
      <guid>https://dev.to/shaurya_mehta/hisabmate-a-local-first-ai-assisted-digital-bahi-khata-for-indian-microbusinesses-1g1e</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;&lt;strong&gt;HisabMate&lt;/strong&gt; is a local-first, AI-assisted &lt;em&gt;bahi-khata&lt;/em&gt; (the traditional credit ledger) for Indian microbusinesses.&lt;/p&gt;

&lt;p&gt;If you have ever bought something from a neighbourhood kirana, a tailor, or a small wholesaler, you have probably seen the system: a notebook where the owner writes who owes what. Customers take goods on credit (&lt;em&gt;udhaar&lt;/em&gt;), pay back in pieces, and the owner reconciles it all by hand. It works because it is simple, but it is also fragile. Pages get smudged, entries go missing, and a disputed balance turns into an argument between two people who both want to stay on good terms.&lt;/p&gt;

&lt;p&gt;Many bookkeeping tools exist, but they often assume cloud accounts, subscriptions, and a comfort with accounting vocabulary that a busy shopkeeper may not have. HisabMate takes a narrower path: keep the ledger on the owner's own machine, make the arithmetic exact and boring, and let a local language model help with the typing, never with the money.&lt;/p&gt;

&lt;p&gt;The person who would pay for something like this is the owner who already runs on credit and handwritten pages and wants a clearer, searchable, exportable record without handing customer data to a third party. To be upfront: I have not had a paying user yet, so that is my hypothesis about the market, not a result.&lt;/p&gt;

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

&lt;p&gt;HisabMate is not deployed publicly. It runs locally, and the two screenshots below are from the real application running on localhost.&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%2Fkht3xpf7zvl3wk9kz26p.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%2Fkht3xpf7zvl3wk9kz26p.png" alt=" " width="800" height="427"&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%2Foa7gdb62s0mvinrmd969.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%2Foa7gdb62s0mvinrmd969.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Screenshot 1: HisabMate running locally at &lt;code&gt;http://127.0.0.1:5174/&lt;/code&gt;.&lt;/em&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%2Fxl4y9j29uy9z5mr8lsuj.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%2Fxl4y9j29uy9z5mr8lsuj.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Screenshot 2: a second view of the working local application.&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/sm4006" rel="noopener noreferrer"&gt;
        sm4006
      &lt;/a&gt; / &lt;a href="https://github.com/sm4006/HisabMate" rel="noopener noreferrer"&gt;
        HisabMate
      &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;HisabMate&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;HisabMate is a local-first AI-assisted bahi-khata for Indian microbusinesses
The Python backend owns validation, integer-paise calculations, SQLite
persistence, idempotency, and CSV export. The React frontend is a local
dashboard and review workflow.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Requirements&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10+ (Python 3.13+ is the target documented in the PRD)&lt;/li&gt;
&lt;li&gt;Node.js and npm&lt;/li&gt;
&lt;li&gt;Optional: &lt;a href="https://ollama.com/" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt; for natural-language transaction
proposals&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No Python package installation is required: the backend uses the standard
library. Frontend dependencies are declared in
&lt;a href="https://github.com/sm4006/HisabMate/./frontend/package.json" rel="noopener noreferrer"&gt;frontend/package.json&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;From the repository root:&lt;/p&gt;
&lt;div class="highlight highlight-source-powershell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;Set-Location&lt;/span&gt; .\frontend
npm install
&lt;span class="pl-c1"&gt;Set-Location&lt;/span&gt; ..&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The backend creates the SQLite schema automatically on first start. It does
not seed customers or transactions.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Ollama setup&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Install Ollama separately, start its local service, and install the configured
model:&lt;/p&gt;
&lt;div class="highlight highlight-source-powershell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;ollama pull llama3.&lt;span class="pl-c1"&gt;2&lt;/span&gt;:3b&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;HisabMate uses &lt;code&gt;llama3.2:3b&lt;/code&gt; by default through
&lt;code&gt;http://localhost:11434&lt;/code&gt;. Override the model or endpoint when needed:&lt;/p&gt;
&lt;div class="highlight highlight-source-powershell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-smi"&gt;$&lt;span class="pl-c1"&gt;env:&lt;/span&gt;OLLAMA_MODEL&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;llama3.2:3b&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-smi"&gt;$&lt;span class="pl-c1"&gt;env:&lt;/span&gt;OLLAMA_HOST&lt;/span&gt; &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;http://localhost:11434&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sm4006/HisabMate" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Repository: &lt;a href="https://github.com/sm4006/HisabMate" rel="noopener noreferrer"&gt;github.com/sm4006/HisabMate&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;The design rule is that &lt;strong&gt;the model proposes and the code decides&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend (Python, standard library only).&lt;/strong&gt; It owns validation, integer-paise calculations, SQLite persistence, idempotency, and CSV export. There are no Python packages to install.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend (React).&lt;/strong&gt; A local dashboard and review workflow that talks to the backend API at &lt;code&gt;http://127.0.0.1:8000/api&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI layer (Ollama).&lt;/strong&gt; HisabMate uses &lt;code&gt;llama3.2:3b&lt;/code&gt; by default through a local Ollama service at &lt;code&gt;http://localhost:11434&lt;/code&gt;. The model and endpoint can be overridden with the &lt;code&gt;OLLAMA_MODEL&lt;/code&gt; and &lt;code&gt;OLLAMA_HOST&lt;/code&gt; environment variables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage.&lt;/strong&gt; A local SQLite database. The schema is created automatically on first start, and nothing is seeded.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Safeguards documented in the repository
&lt;/h3&gt;

&lt;p&gt;Money software has to be dull in the right places, so these are the parts I care about most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Integer paise, never floats.&lt;/strong&gt; Credit and payment amounts are stored as integer paise, with exact two-decimal rupee/paise input validation. Balances are deterministic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model output is a proposal only.&lt;/strong&gt; When Ollama interprets a natural-language entry, the response goes through strict validation in Python. Nothing is written to the ledger until the user explicitly confirms it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotent confirmations.&lt;/strong&gt; Confirmed transaction submissions use persistent idempotency, so a double click or a retry does not create a duplicate entry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Append-only corrections.&lt;/strong&gt; Mistakes are corrected by adding a new entry with an audit reference, not by silently editing history, much like striking through a line in a paper ledger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safer CSV export.&lt;/strong&gt; Text fields that begin with spreadsheet formula characters are escaped, so an exported file does not turn a customer name into a formula.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest empty fields.&lt;/strong&gt; The CSV has a &lt;code&gt;remarks&lt;/code&gt; column, but the current schema stores no remarks, so it is exported blank rather than guessed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What works today
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Customer records with outstanding balances calculated from the ledger.&lt;/li&gt;
&lt;li&gt;Credit and payment transactions.&lt;/li&gt;
&lt;li&gt;Local Ollama transaction proposals with an explicit confirmation step.&lt;/li&gt;
&lt;li&gt;Customer-specific ledgers and a &lt;strong&gt;Daily Hisab&lt;/strong&gt; view filtered by business date, customer, transaction type, and search text.&lt;/li&gt;
&lt;li&gt;Transaction-history CSV export that respects the active filters.&lt;/li&gt;
&lt;li&gt;Loading, empty, validation, offline, and API-error states in the frontend.&lt;/li&gt;
&lt;li&gt;A Python &lt;code&gt;unittest&lt;/code&gt; suite, a compile check, and a frontend build, all runnable from the README commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How GitHub Copilot fits in
&lt;/h3&gt;

&lt;p&gt;I used &lt;strong&gt;GitHub Copilot Chat in VS Code, primarily in Agent mode&lt;/strong&gt;, as a coding assistant throughout HisabMate's development.&lt;/p&gt;

&lt;p&gt;I used it to help implement and refine the Python ledger and API, build the React/Vite interface, develop the AI-assisted transaction proposal flow, add Daily Hisab filters and CSV export, and expand tests and project documentation. I worked incrementally, reviewing the implementation and testing the application between tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One concrete moment where it helped:&lt;/strong&gt; Copilot helped connect the customer-specific ledger view to the backend so that selecting a customer displayed that customer's transactions and outstanding balance rather than generic or unrelated data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One moment that required correction:&lt;/strong&gt; During the final submission process, I had to correct the Git remote configuration before the existing local commit could be pushed to GitHub. This was a reminder that agent-generated instructions still need to be checked against the actual repository state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What remained human-owned:&lt;/strong&gt; The core financial-safety decisions were not delegated to the model. Transaction amounts use integer paise, the backend validates proposed transactions, and the user must review and explicitly confirm a transaction before it is written to the ledger. The AI proposes an interpretation; it does not get direct database-write authority.&lt;/p&gt;

&lt;p&gt;I also reviewed the generated changes, ran tests and build checks, and checked the application against the intended workflow rather than treating generated code as automatically correct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/sm4006/HisabMate" rel="noopener noreferrer"&gt;https://github.com/sm4006/HisabMate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copilot was a development aid, not a substitute for reviewing financial logic or verifying the finished application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Known Limitations
&lt;/h2&gt;

&lt;p&gt;I would rather list these here than have a reader discover them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No contact details or opening balances.&lt;/strong&gt; The current SQLite schema does not represent them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No free-text remarks.&lt;/strong&gt; They are not stored, so search covers customer names and controlled transaction labels only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Out of scope for this release:&lt;/strong&gt; payment reminders, CSV customization, bank integrations, and multi-user accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No frontend unit or end-to-end test framework.&lt;/strong&gt; The browser workflows were manually exercised against disposable local services, and the Python suite is the automated safety net.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama must be installed and running&lt;/strong&gt; for live interpretation. The normal Python test suite does not need it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A 3B model is small.&lt;/strong&gt; I am not publishing accuracy benchmarks for its interpretations. That is exactly why every proposal needs a human confirmation before it touches the ledger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup instructions in the README use PowerShell syntax.&lt;/strong&gt; Other shells will need small adjustments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not deployed.&lt;/strong&gt; There is no hosted version. It is meant to run on the owner's own machine.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;For a small business, a ledger is not just data. It is who trusts whom, and how much. Open-weight models and local inference change what is possible here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The data can stay on the owner's machine.&lt;/strong&gt; By default, HisabMate points at a local Ollama endpoint and a local SQLite file. A closed hosted API would mean sending customer names and amounts to a server the shopkeeper does not control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cost model fits the customer.&lt;/strong&gt; A microbusiness cannot easily absorb per-request fees or a monthly subscription for something that used to be a notebook. Running a model locally has no per-call bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model is swappable.&lt;/strong&gt; Because the model name and host are configuration, not a vendor contract, the owner or a local developer can try a different open model without rewriting the application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The behaviour is inspectable.&lt;/strong&gt; The backend is plain Python and the rules that guard the money are readable. For software that tracks who owes whom, being able to read the rules is a feature.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The honest trade-off is capability. A small local model is weaker than a large hosted one, which is why HisabMate treats it as a typing assistant behind a validation boundary rather than as an authority.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Best Use of GitHub Copilot&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Thanks for reading, and for any feedback, especially from anyone who has run a credit-based shop and knows what a real bahi-khata needs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Receipts: I Built a Local AI Verifier for My Friend's Project Reports</title>
      <dc:creator>Shaurya Mehta</dc:creator>
      <pubDate>Mon, 05 Oct 2026 00:56:25 +0000</pubDate>
      <link>https://dev.to/shaurya_mehta/receipts-i-built-a-local-ai-verifier-for-my-friends-project-reports-1614</link>
      <guid>https://dev.to/shaurya_mehta/receipts-i-built-a-local-ai-verifier-for-my-friends-project-reports-1614</guid>
      <description>&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%2Ft6plwo6lv0pgs5b3gfqx.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%2Ft6plwo6lv0pgs5b3gfqx.png" alt=" " width="799" height="393"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built It for a Friend
&lt;/h2&gt;

&lt;p&gt;My friend was working on project documentation where the README, configuration, results, and datasets could easily drift apart.&lt;br&gt;&lt;br&gt;
Instead of manually checking every number and configuration value, &lt;strong&gt;Receipts&lt;/strong&gt; provides a quick, auditable report showing which claims are supported and which need attention.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Local Open-Source AI?
&lt;/h2&gt;

&lt;p&gt;Project folders can contain coursework, datasets, configuration files, and other information that shouldn't automatically be uploaded to a cloud AI provider.  &lt;/p&gt;

&lt;p&gt;Receipts uses &lt;strong&gt;Gemma locally through Ollama&lt;/strong&gt;, so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project data stays on the machine.&lt;/li&gt;
&lt;li&gt;No cloud AI API is required.&lt;/li&gt;
&lt;li&gt;There is no per-request API cost.&lt;/li&gt;
&lt;li&gt;The model can be changed/configured locally.&lt;/li&gt;
&lt;li&gt;The extraction process can be reproduced.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Most importantly:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The AI is not the final authority.&lt;/p&gt;




&lt;h2&gt;
  
  
  Four Possible Verdicts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VERIFIED&lt;/td&gt;
&lt;td&gt;Evidence supports the claim.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CONFLICT&lt;/td&gt;
&lt;td&gt;Evidence contradicts the claim.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMBIGUOUS&lt;/td&gt;
&lt;td&gt;Multiple plausible pieces of evidence exist.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UNVERIFIABLE&lt;/td&gt;
&lt;td&gt;Suitable evidence could not be found.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each result keeps &lt;strong&gt;provenance&lt;/strong&gt; so the user can understand where the claim came from and what evidence was used.&lt;/p&gt;




&lt;h2&gt;
  
  
  Technical Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python
&lt;/li&gt;
&lt;li&gt;Ollama
&lt;/li&gt;
&lt;li&gt;Gemma
&lt;/li&gt;
&lt;li&gt;Python standard library
&lt;/li&gt;
&lt;li&gt;Local HTTP inference
&lt;/li&gt;
&lt;li&gt;HTML report generation
&lt;/li&gt;
&lt;li&gt;unittest
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Receipts does &lt;strong&gt;not&lt;/strong&gt; execute project code, notebooks, or scripts while inspecting a project.&lt;/p&gt;




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

&lt;p&gt;Receipts generates a self-contained &lt;strong&gt;HTML verification report&lt;/strong&gt; containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;verification results
&lt;/li&gt;
&lt;li&gt;verdicts
&lt;/li&gt;
&lt;li&gt;claim information
&lt;/li&gt;
&lt;li&gt;evidence
&lt;/li&gt;
&lt;li&gt;provenance
&lt;/li&gt;
&lt;li&gt;summary information
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The controlled demo contains examples of all four verdict types:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;VERIFIED · CONFLICT · AMBIGUOUS · UNVERIFIABLE&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;GitHub: &lt;a href="https://github.com/sm4006/Receipts" rel="noopener noreferrer"&gt;https://github.com/sm4006/Receipts&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Verification Report
&lt;/h2&gt;

&lt;p&gt;The CLI generates a self-contained &lt;code&gt;report.html&lt;/code&gt; file containing the verification results and provenance.&lt;/p&gt;




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

&lt;p&gt;I used &lt;strong&gt;GitHub Copilot&lt;/strong&gt; as a coding agent throughout development.&lt;br&gt;&lt;br&gt;
I worked from a written specification, implemented the system incrementally, reviewed each stage, added regression tests, and performed adversarial testing before moving to the next stage.&lt;/p&gt;

&lt;p&gt;The main lesson from building this was that &lt;strong&gt;adding an LLM isn't enough&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
You have to define exactly what the model is allowed to do.&lt;/p&gt;

&lt;p&gt;For Receipts, that boundary is simple:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI proposes the claims.
&lt;/li&gt;
&lt;li&gt;Deterministic code makes the decision.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes the result easier to test, audit, and trust.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Testing
&lt;/h2&gt;

&lt;p&gt;Final test suite covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All verdict types
&lt;/li&gt;
&lt;li&gt;normalization
&lt;/li&gt;
&lt;li&gt;CSV/JSON/notebook parsing
&lt;/li&gt;
&lt;li&gt;malformed input
&lt;/li&gt;
&lt;li&gt;invalid AI output
&lt;/li&gt;
&lt;li&gt;fabricated evidence
&lt;/li&gt;
&lt;li&gt;Ollama failures
&lt;/li&gt;
&lt;li&gt;path traversal
&lt;/li&gt;
&lt;li&gt;unsupported files
&lt;/li&gt;
&lt;li&gt;security boundaries
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 85 tests → OK&lt;/p&gt;




&lt;h2&gt;
  
  
  The Part I Actually Like
&lt;/h2&gt;

&lt;p&gt;The boundary between &lt;strong&gt;probabilistic AI&lt;/strong&gt; and &lt;strong&gt;deterministic Python&lt;/strong&gt;.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LLMs → good at structuring messy docs.
&lt;/li&gt;
&lt;li&gt;Python → reliable for factual verification.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;AI → understand&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Python → verify&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why "Receipts"?
&lt;/h2&gt;

&lt;p&gt;Because when a project says:&lt;br&gt;&lt;br&gt;
&lt;em&gt;"Our model achieved 94.2% accuracy."&lt;/em&gt;  &lt;/p&gt;

&lt;p&gt;I want the project to have the &lt;strong&gt;receipts&lt;/strong&gt; — the evidence behind it.&lt;/p&gt;




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

&lt;p&gt;Hardest part: deciding &lt;strong&gt;what the LLM was allowed to do&lt;/strong&gt;.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More authority → harder to trust.
&lt;/li&gt;
&lt;li&gt;More deterministic Python → easier to test.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Handover
&lt;/h2&gt;

&lt;p&gt;Receipts was built for students/researchers who want a &lt;strong&gt;second check&lt;/strong&gt; before submission.&lt;br&gt;&lt;br&gt;
Point it at the folder.&lt;br&gt;&lt;br&gt;
It checks.&lt;br&gt;&lt;br&gt;
If it can’t prove something, it says so.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hacktoberfest Partner Categories
&lt;/h2&gt;

&lt;p&gt;Receipts directly qualifies for the &lt;strong&gt;Hacktoberfest $100 partner categories&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; → Gemma 3 4B via Ollama for claim extraction.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot&lt;/strong&gt; → Copilot coding agent used throughout incremental development, testing, debugging, and refinement.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both categories emphasize &lt;strong&gt;open-source AI&lt;/strong&gt; and &lt;strong&gt;Copilot-assisted development&lt;/strong&gt;, which were central to how Receipts was built.&lt;/p&gt;




&lt;h2&gt;
  
  
  Future Vision
&lt;/h2&gt;

&lt;p&gt;Extensions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;experiment reports
&lt;/li&gt;
&lt;li&gt;research documentation
&lt;/li&gt;
&lt;li&gt;configuration drift detection
&lt;/li&gt;
&lt;li&gt;reproducibility checks
&lt;/li&gt;
&lt;li&gt;CI verification
&lt;/li&gt;
&lt;li&gt;submission pre-flight checks
&lt;/li&gt;
&lt;li&gt;larger project evidence graphs
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Principle stays the same:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
AI extracts. Deterministic code verifies.&lt;/p&gt;

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