{"slug": "receipts-i-built-a-local-ai-verifier-for-my-friend-s-project-reports", "title": "Receipts: I Built a Local AI Verifier for My Friend's Project Reports", "summary": "A developer built Receipts, an open-source CLI tool that verifies claims in project documentation by running Google's Gemma locally through Ollama and cross-checking README, configuration, results, and dataset files. The tool labels each claim VERIFIED, CONFLICT, AMBIGUOUS, or UNVERIFIABLE with provenance, deliberately keeping the LLM out of the final judgment so deterministic Python code does the verification, and ships with an 85-test suite. The developer says the hardest part was defining exactly what the model is allowed to do, framing the design as \"AI extracts. Deterministic code verifies.", "body_md": "My friend was working on project documentation where the README, configuration, results, and datasets could easily drift apart.\n\nInstead of manually checking every number and configuration value, **Receipts** provides a quick, auditable report showing which claims are supported and which need attention.\n\nProject folders can contain coursework, datasets, configuration files, and other information that shouldn't automatically be uploaded to a cloud AI provider.\n\nReceipts uses **Gemma locally through Ollama**, so:\n\n**Most importantly:**\n\nThe AI is not the final authority.\n\n| Verdict | Meaning | \n|---|---|\n| VERIFIED | Evidence supports the claim. | \n| CONFLICT | Evidence contradicts the claim. | \n| AMBIGUOUS | Multiple plausible pieces of evidence exist. | \n| UNVERIFIABLE | Suitable evidence could not be found. | \n\nEach result keeps **provenance** so the user can understand where the claim came from and what evidence was used.\n\nReceipts does **not** execute project code, notebooks, or scripts while inspecting a project.\n\nReceipts generates a self-contained **HTML verification report** containing:\n\nThe controlled demo contains examples of all four verdict types:\n\n**VERIFIED · CONFLICT · AMBIGUOUS · UNVERIFIABLE**\n\nGitHub: [https://github.com/sm4006/Receipts](https://github.com/sm4006/Receipts)\n\nThe CLI generates a self-contained `report.html` file containing the verification results and provenance.\n\nI used **GitHub Copilot** as a coding agent throughout development.\n\nI 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.\n\nThe main lesson from building this was that **adding an LLM isn't enough**.\n\nYou have to define exactly what the model is allowed to do.\n\nFor Receipts, that boundary is simple:\n\nThat makes the result easier to test, audit, and trust.\n\nFinal test suite covered:\n\n**Result:** 85 tests → OK\n\nThe boundary between **probabilistic AI** and **deterministic Python**.  \n\nSo:\n\n**AI → understand**\n\n**Python → verify**\n\nBecause when a project says:\n\n*\"Our model achieved 94.2% accuracy.\"* \n\nI want the project to have the **receipts** — the evidence behind it.\n\nHardest part: deciding **what the LLM was allowed to do**.  \n\nReceipts was built for students/researchers who want a **second check** before submission.\n\nPoint it at the folder.\n\nIt checks.\n\nIf it can’t prove something, it says so.\n\nReceipts directly qualifies for the **Hacktoberfest $100 partner categories**:\n\nBoth categories emphasize **open-source AI** and **Copilot-assisted development**, which were central to how Receipts was built.\n\nExtensions:\n\n**Principle stays the same:**\n\nAI extracts. Deterministic code verifies.", "url": "https://wpnews.pro/news/receipts-i-built-a-local-ai-verifier-for-my-friend-s-project-reports", "canonical_source": "https://dev.to/shaurya_mehta/receipts-i-built-a-local-ai-verifier-for-my-friends-project-reports-1614", "published_at": "2026-10-05 00:56:25+00:00", "updated_at": "2026-10-05 01:12:22.089579+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "developer-tools", "ai-agents"], "entities": ["Receipts", "Ollama", "Gemma", "GitHub Copilot", "GitHub", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/receipts-i-built-a-local-ai-verifier-for-my-friend-s-project-reports", "markdown": "https://wpnews.pro/news/receipts-i-built-a-local-ai-verifier-for-my-friend-s-project-reports.md", "text": "https://wpnews.pro/news/receipts-i-built-a-local-ai-verifier-for-my-friend-s-project-reports.txt", "jsonld": "https://wpnews.pro/news/receipts-i-built-a-local-ai-verifier-for-my-friend-s-project-reports.jsonld"}}