<?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: Abhinav Upadhyay</title>
    <description>The latest articles on DEV Community by Abhinav Upadhyay (@abhinav1574k).</description>
    <link>https://dev.to/abhinav1574k</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%2F4165154%2F24a9ad56-399b-4cd6-b9f6-921f69f76745.jpg</url>
      <title>DEV Community: Abhinav Upadhyay</title>
      <link>https://dev.to/abhinav1574k</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhinav1574k"/>
    <language>en</language>
    <item>
      <title>CivicAI: Making City Repair Reports Easier to Prioritize</title>
      <dc:creator>Abhinav Upadhyay</dc:creator>
      <pubDate>Fri, 30 Oct 2026 18:21:30 +0000</pubDate>
      <link>https://dev.to/abhinav1574k/civicai-making-city-repair-reports-easier-to-prioritize-ln3</link>
      <guid>https://dev.to/abhinav1574k/civicai-making-city-repair-reports-easier-to-prioritize-ln3</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;At Hacktoberfest Hack Day Indore, I worked on CivicAI, a prototype for helping city teams review public infrastructure reports. The idea is to turn a photo of a road or utility problem into a structured report, then make the repair queue easier to understand.&lt;/p&gt;

&lt;p&gt;A citizen can submit an issue with a photo and location. The backend can send the image to Gemini for a suggested issue type, severity, confidence, responsible department, risk factors, and recommended action. If no API key is configured, or the Gemini request fails, the app falls back to a demo response so the flow can still be explored.&lt;/p&gt;

&lt;p&gt;Project repository: &lt;a href="https://github.com/Abhinav1574k/CivicAI-AI-Powered-Public-Infrastructure-Monitoring-System" rel="noopener noreferrer"&gt;CivicAI on GitHub&lt;/a&gt;&lt;br&gt;&lt;br&gt;
MLH event submission: &lt;a href="https://www.mlh.com/events/hacktoberfest-hack-day-indore-x-acropolis-institute-of-technology-and-research/submissions/01a11088-720b-4e56-6535-4b196ba4894d" rel="noopener noreferrer"&gt;Hacktoberfest Hack Day Indore&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The frontend is built with React, TypeScript, and Vite. It communicates with a Node.js and Express API.&lt;/p&gt;

&lt;p&gt;The API handles issue reports and image analysis. For image analysis, the Gemini integration asks for structured JSON with the defect category, severity, confidence, department, risks, and suggested next action. A fallback demo mode keeps the interface usable without a configured model key.&lt;/p&gt;

&lt;p&gt;CivicAI also calculates a priority score from five factors: severity, number of reports, how long an issue has remained unresolved, location importance, and AI confidence. The resulting score maps to a priority level, with an explanation describing the factors that influenced it. The aim is to make triage more transparent than a queue that only reflects which report arrived first.&lt;/p&gt;

&lt;p&gt;The dashboard brings together issue details, map views, and summary analytics. Some of those summary figures are seeded demo data, so they should be read as part of the prototype rather than live municipal statistics.&lt;/p&gt;

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

&lt;p&gt;The most useful design question was not just “Can AI classify this photo?” It was “How can a reviewer see why this report was prioritized?” A score is easier to question and improve when the factors behind it are visible.&lt;/p&gt;

&lt;p&gt;I also learned how easily a polished dashboard can suggest that every workflow is production-ready. In this prototype, repair verification is represented with a fixed demo result; it does not yet compare before-and-after photos. Calling out that boundary is part of building a trustworthy demo.&lt;/p&gt;

&lt;p&gt;With more time, I’d validate model outputs more carefully, implement real before-and-after verification, and replace seeded dashboard metrics with data from a persistent store. I’d also test the scoring model with people who actually handle field repairs, since their feedback should shape which factors matter most.&lt;/p&gt;

&lt;p&gt;CivicAI is an experiment in making civic issue triage more structured and explainable. It is a prototype, not a deployed municipal service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/tenetpvt/flint-turning-buses-into-citys-eyes-3700"&gt;FLINT: Turning Buses into City's Eyes&lt;/a&gt; by TenET explores using vehicle routes to spot road issues.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/adit_mehta_7dd815223144fe/building-a-community-issue-detection-system-using-vehicle-video-feeds-and-how-i-accelerated-lbi"&gt;Building a Community Issue Detection System Using Vehicle Video Feeds&lt;/a&gt; by Adit describes detecting infrastructure issues from vehicle video.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  mlhacks
&lt;/h1&gt;

</description>
      <category>mlhacks</category>
      <category>hackathon</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Repo Ofrenda: A Local Memory Timeline for the Code We Leave Behind</title>
      <dc:creator>Abhinav Upadhyay</dc:creator>
      <pubDate>Fri, 30 Oct 2026 17:36:12 +0000</pubDate>
      <link>https://dev.to/abhinav1574k/repo-ofrenda-a-local-memory-timeline-for-the-code-we-leave-behind-49o2</link>
      <guid>https://dev.to/abhinav1574k/repo-ofrenda-a-local-memory-timeline-for-the-code-we-leave-behind-49o2</guid>
      <description>&lt;p&gt;This is my submission for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge: Week 4 — “Ghost in the Machine.”&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo Ofrenda: a memory timeline for code
&lt;/h2&gt;

&lt;p&gt;Software outlives the people and conversations that made it. A Git log preserves dates, commit messages, contributors, and changed files, but it is hard to see the shape of a project's past in a terminal listing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo Ofrenda&lt;/strong&gt; turns that history into monthly chapters. Select a chapter and a locally run open-weight model writes a short remembrance from the Git record, with commit references beside the story.&lt;/p&gt;

&lt;p&gt;This takes a different path through code archaeology from investigating a suspicious line: the aim is to help someone inheriting a repository see its seasons and milestones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive preview:&lt;/strong&gt; &lt;a href="https://abhinav1574k.github.io/Repo-Ofrenda---Ghost-in-the-Machine/demo.html" rel="noopener noreferrer"&gt;Repo Ofrenda on GitHub Pages&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source code and setup:&lt;/strong&gt; &lt;a href="https://github.com/Abhinav1574k/Repo-Ofrenda---Ghost-in-the-Machine" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The public preview uses a fictional neighbourhood library repository and clearly labeled sample stories. It does not call a hosted model; the model-backed experience runs locally, so repository history does not need to leave the developer's machine.&lt;/p&gt;

&lt;p&gt;To run that experience with Ollama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen2.5:3b
python3 make_demo.py /tmp/ofrenda-demo
python3 repo_ofrenda.py /tmp/ofrenda-demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open &lt;code&gt;http://127.0.0.1:8787&lt;/code&gt;. The README has instructions for using the tool with another Git repository and choosing a different Ollama model.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Git provides up to 500 commits across local branches: date, author, subject, and changed paths.&lt;/li&gt;
&lt;li&gt;Repo Ofrenda groups these records by month and renders a timeline.&lt;/li&gt;
&lt;li&gt;Selecting a chapter sends its commit metadata to the configured local Ollama endpoint.&lt;/li&gt;
&lt;li&gt;The prompt asks the model to stay within the supplied record and cite commit hashes. The app falls back to an evidence-only summary if the model is unavailable, does not cite a commit, or cites one outside the supplied records.&lt;/li&gt;
&lt;li&gt;The source commits remain visible beside the story.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Citations help readers inspect the evidence, but they do not prove that every sentence is supported. The narration is an interpretation, not an authoritative account of contributors' intent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open innovation matters here
&lt;/h2&gt;

&lt;p&gt;Commit messages and contributor names can reveal private project context. Repo Ofrenda binds its web server to &lt;code&gt;127.0.0.1&lt;/code&gt;, reads commit metadata rather than source files, and uses a local Ollama model instead of a hosted inference service. Readers can swap models to fit their hardware or run the timeline's evidence fallback while fixing a local model setup.&lt;/p&gt;

&lt;p&gt;Local inference has trade-offs: the model needs to be downloaded first, and generation speed depends on your machine. Once installed, the model can narrate a chapter without sending its commit metadata to a hosted AI provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built and verified
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python standard library for the local server and Git integration&lt;/li&gt;
&lt;li&gt;Git as the history source&lt;/li&gt;
&lt;li&gt;Ollama-compatible local model interface for open-weight narration&lt;/li&gt;
&lt;li&gt;A responsive HTML, CSS, and JavaScript interface&lt;/li&gt;
&lt;li&gt;An MIT license and a reproducible fictional Git fixture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I verified the local timeline and story endpoints against six fixture commits across three months, including the evidence-only fallback. &lt;strong&gt;I did not run Ollama's model in this build environment&lt;/strong&gt; because Ollama was not installed and available memory was limited. The public preview is a static, synthetic example; model narration is available by running the open project locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;p&gt;Two DEV posts helped shape the constraints: &lt;a href="https://dev.to/qaevelyn/not-in-corpus-teaching-a-local-model-to-abstain-instead-of-hallucinate-3hbm"&gt;“NOT IN CORPUS — teaching a local model to abstain instead of hallucinate” by @qaevelyn&lt;/a&gt;, which emphasizes tested abstention when evidence is missing, and &lt;a href="https://dev.to/pouria_zand/i-built-a-private-ai-assistant-that-queries-my-git-history-and-project-management-data-using-only-39mn"&gt;“I Built a Private AI Assistant That Queries My Git History and Project Management Data — Using Only Local LLMs” by @pouria_zand&lt;/a&gt;, which explores keeping repository questions local.&lt;/p&gt;

&lt;p&gt;The current prototype groups history by month. Next, I would like to let people curate chapters around releases and compare each narration with the exact commit diff. What project memories would help you when you inherit a codebase?&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

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