<?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: Sanjeevi Kumar V</title>
    <description>The latest articles on DEV Community by Sanjeevi Kumar V (@sanjeevidev).</description>
    <link>https://dev.to/sanjeevidev</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%2F1180081%2Fcbfa5e38-5964-4c13-a5e6-0650da8f7e93.jpg</url>
      <title>DEV Community: Sanjeevi Kumar V</title>
      <link>https://dev.to/sanjeevidev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanjeevidev"/>
    <language>en</language>
    <item>
      <title>RepoSéance: Summoning the Ghost of Forgotten Code with Open-Source AI</title>
      <dc:creator>Sanjeevi Kumar V</dc:creator>
      <pubDate>Tue, 27 Oct 2026 10:46:40 +0000</pubDate>
      <link>https://dev.to/sanjeevidev/reposeance-summoning-the-ghost-of-forgotten-code-with-open-source-ai-155h</link>
      <guid>https://dev.to/sanjeevidev/reposeance-summoning-the-ghost-of-forgotten-code-with-open-source-ai-155h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👻 RepoSéance: Summoning the Ghost of Forgotten Code with Open-Source AI
&lt;/h2&gt;

&lt;p&gt;Somewhere on GitHub, there are projects that once had ambitious roadmaps, enthusiastic contributors, and big ideas.&lt;/p&gt;

&lt;p&gt;Then the commits stopped.&lt;/p&gt;

&lt;p&gt;The README remained. The dependencies aged. The issues went unanswered. And the original context slowly disappeared.&lt;/p&gt;

&lt;p&gt;What if we could summon those projects' digital ghosts and ask them what happened?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;RepoSéance&lt;/strong&gt;, a local-first AI-powered software archaeology tool that reconstructs the story of forgotten repositories and helps developers bring them back to life.&lt;/p&gt;

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

&lt;p&gt;RepoSéance interprets the Week 4 theme, &lt;em&gt;Ghost in the Machine&lt;/em&gt;, as a story about digital memory.&lt;/p&gt;

&lt;p&gt;Software repositories preserve code, but understanding a project often requires more than reading its latest files. Important context can be scattered across commit messages, configuration changes, documentation, TODOs, and test failures.&lt;/p&gt;

&lt;p&gt;RepoSéance brings those clues together using open-weight AI.&lt;/p&gt;

&lt;p&gt;Point it at a local Git repository, and it investigates the project's history, searches for unfinished work, and generates a structured report called a &lt;strong&gt;Ghost Profile&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Ghost Profile has five parts:&lt;/p&gt;

&lt;p&gt;👻 &lt;strong&gt;1. The Last Words&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A chronological account of significant changes near the end of the project's development. What was being built? Which areas changed most? What does the available history suggest about the project's final active phase?&lt;/p&gt;

&lt;p&gt;🕯️ &lt;strong&gt;2. Unfinished Business&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A prioritized list of potential unfinished tasks, including TODO and FIXME markers, incomplete documentation, and tests that currently fail when safely executed.&lt;/p&gt;

&lt;p&gt;🪦 &lt;strong&gt;3. The Graveyard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A report of potential maintenance concerns, such as declared dependencies with old version constraints, deprecated API usage detected by available checks, and suspiciously stale project configuration.&lt;/p&gt;

&lt;p&gt;These are investigation leads, not automatic declarations that something is broken.&lt;/p&gt;

&lt;p&gt;📜 &lt;strong&gt;4. The Séance Transcript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An atmospheric narrative that explains the repository's history in plain English, with references to the evidence behind its claims.&lt;/p&gt;

&lt;p&gt;The AI can make the experience spooky, but it cannot invent commits, contributors, events, or developer intentions.&lt;/p&gt;

&lt;p&gt;⚡ &lt;strong&gt;5. The Resurrection Plan&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A practical recovery roadmap: what to inspect first, which checks to run, what documentation to update, and which small improvement could make the project useful again.&lt;/p&gt;

&lt;p&gt;The aim is to turn digital archaeology into actionable maintenance work.&lt;/p&gt;

&lt;p&gt;Because abandoned software doesn't always need to remain abandoned. Sometimes it just needs someone willing to understand it.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; [Will be added soon]&lt;/p&gt;

&lt;p&gt;The ideal demonstration uses a small, public or personally owned Git repository with a meaningful commit history.&lt;/p&gt;

&lt;p&gt;The workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select a local repository.&lt;/li&gt;
&lt;li&gt;Let RepoSéance inspect its Git history, file structure, and selected project files.&lt;/li&gt;
&lt;li&gt;Watch the Ghost Profile appear, with evidence-linked findings.&lt;/li&gt;
&lt;li&gt;Explore unfinished work and the suggested resurrection plan.&lt;/li&gt;
&lt;li&gt;Export the report as Markdown to share with a potential maintainer.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Contributions that would be especially valuable include support for more languages, better repository analysis, additional local models, and improved evidence verification.&lt;/p&gt;

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

&lt;p&gt;RepoSéance is designed around a simple architecture: deterministic software analysis gathers the evidence, and an open-weight language model turns that evidence into an understandable investigation.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Repository forensics
&lt;/h3&gt;

&lt;p&gt;Python handles repository inspection using Git history, file-tree traversal, configuration parsing, and targeted searches for TODOs, FIXMEs, documentation, and test files.&lt;/p&gt;

&lt;p&gt;Git metadata provides timestamps, commit messages, changed-file information, and other available historical clues.&lt;/p&gt;

&lt;p&gt;The application limits which files are analyzed, excludes common generated directories, and avoids treating arbitrary repository content as trusted instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Open-weight AI inference
&lt;/h3&gt;

&lt;p&gt;A compact instruction-tuned model, such as Qwen2.5-3B-Instruct or another compatible open-weight model, generates summaries and structured findings from the collected evidence.&lt;/p&gt;

&lt;p&gt;A local inference runtime such as llama.cpp can make this practical without requiring a hosted LLM API.&lt;/p&gt;

&lt;p&gt;The model is responsible for interpretation and explanation—not for inventing repository facts.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Evidence-grounded reports
&lt;/h3&gt;

&lt;p&gt;Every important finding should reference a verifiable source, such as a commit hash, file path, line number, or command result.&lt;/p&gt;

&lt;p&gt;The report separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observed facts&lt;/li&gt;
&lt;li&gt;AI-generated interpretations&lt;/li&gt;
&lt;li&gt;Unverified hypotheses&lt;/li&gt;
&lt;li&gt;Recommended actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the repository lacks sufficient evidence to explain why development stopped, RepoSéance should say so instead of inventing a dramatic backstory.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Interactive interface
&lt;/h3&gt;

&lt;p&gt;A lightweight Streamlit interface presents the Ghost Profile as an interactive investigation board.&lt;/p&gt;

&lt;p&gt;Users can inspect findings, expand their supporting evidence, filter maintenance concerns, and export the report as Markdown.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Safety by design
&lt;/h3&gt;

&lt;p&gt;The first version performs read-only repository analysis. It does not automatically execute repository scripts, install dependencies, modify source files, or push commits.&lt;/p&gt;

&lt;p&gt;Any optional test execution should require explicit user approval and appropriate isolation.&lt;/p&gt;

&lt;p&gt;This keeps the experience useful without giving an AI model unrestricted control over potentially untrusted code.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Forgotten software should not need a subscription to be understood.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A closed AI API could summarize a repository, but it would introduce a remote dependency into a workflow that may involve proprietary code, unpublished projects, security-sensitive components, or private development history.&lt;/p&gt;

&lt;p&gt;Open-weight AI gives RepoSéance another path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; Repository content can remain on the developer's machine rather than being uploaded to a third-party model provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offline analysis:&lt;/strong&gt; Once the model and required dependencies are installed, the core analysis can run without a live AI API, subject to the local runtime's requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model freedom:&lt;/strong&gt; Developers can swap models, compare their explanations, tune prompts, and adapt the system for different programming languages and repository sizes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost control:&lt;/strong&gt; Local inference avoids per-token API charges, although it still consumes hardware resources and requires initial setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long-term independence:&lt;/strong&gt; The project is not tied to the continued availability, pricing, or policies of one hosted AI service.&lt;/p&gt;

&lt;p&gt;There is also a deeper connection to open-source preservation.&lt;/p&gt;

&lt;p&gt;An abandoned repository may still contain useful ideas, educational examples, or functionality that someone needs. Open tools make it easier for new maintainers to investigate that code and decide whether it deserves another life.&lt;/p&gt;

&lt;p&gt;The model is replaceable. The evidence is inspectable. The analysis can be repeated.&lt;/p&gt;

&lt;p&gt;That is the kind of digital archaeology I want to build.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;For me, the most interesting part of RepoSéance is the idea that software has a form of memory.&lt;/p&gt;

&lt;p&gt;Every commit records a decision. Every renamed function hints at an evolving design. Every TODO represents work someone thought mattered enough to leave behind.&lt;/p&gt;

&lt;p&gt;But code cannot always tell us the full story.&lt;/p&gt;

&lt;p&gt;RepoSéance is an experiment in recovering as much context as the evidence allows, without pretending that an AI can read the minds of developers who are no longer there.&lt;/p&gt;

&lt;p&gt;Imagine opening a forgotten project and receiving this message:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The last recorded change was five years ago. The authentication module was being refactored, three TODO markers remain in the payment workflow, and the test suite currently fails on a dependency compatibility issue. The reason development stopped is unknown. Here are three steps to investigate before you decide whether to revive it."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's the moment I want to create.&lt;/p&gt;

&lt;p&gt;Not a fake ghost claiming to know the past, but a useful digital archivist helping the living decide what to do next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some projects are dead. Some are merely waiting for someone to understand them.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;👻 &lt;strong&gt;RepoSéance — The past left clues. The future needs maintainers.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TabSloth 🦥 - Let Your Tabs Take a Nap</title>
      <dc:creator>Sanjeevi Kumar V</dc:creator>
      <pubDate>Wed, 21 Oct 2026 17:19:02 +0000</pubDate>
      <link>https://dev.to/sanjeevidev/tabsloth-let-your-tabs-take-a-nap-fjg</link>
      <guid>https://dev.to/sanjeevidev/tabsloth-let-your-tabs-take-a-nap-fjg</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;h1&gt;
  
  
  TabSloth 🦥 — Let Your Tabs Take a Nap
&lt;/h1&gt;

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

&lt;p&gt;I built &lt;strong&gt;TabSloth&lt;/strong&gt;, a local-first AI browser companion that helps people escape the endless cycle of opening tabs, forgetting why they opened them, and promising themselves they'll organize everything later.&lt;/p&gt;

&lt;p&gt;We've all been there.&lt;/p&gt;

&lt;p&gt;You're researching a project. One article leads to another, a tutorial opens three documentation pages, and suddenly your browser looks like a digital junk drawer. Closing everything feels risky because somewhere in that mess is the thing you actually needed.&lt;/p&gt;

&lt;p&gt;So you leave everything open.&lt;/p&gt;

&lt;p&gt;For days.&lt;/p&gt;

&lt;p&gt;TabSloth gives those tabs a better future.&lt;/p&gt;

&lt;p&gt;With one click, it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understand the chaos:&lt;/strong&gt; Analyze open tab titles and page content to identify what each tab is about.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Group by intention:&lt;/strong&gt; Organize related tabs into projects such as "Learn LangGraph," "Plan a Trip," or "Fix That Bug."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create memory capsules:&lt;/strong&gt; Generate a concise summary, preserve the relevant links, and identify the next logical action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hibernate the clutter:&lt;/strong&gt; Let you close tabs once their useful context has been saved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resume without the archaeology:&lt;/strong&gt; Reopen a project later and pick up where you left off.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of asking users to become better at organizing, TabSloth makes organization something they barely have to think about.&lt;/p&gt;

&lt;p&gt;The goal isn't to browse more efficiently. It's to spend less energy managing the act of browsing.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; [Will be added soon]&lt;/p&gt;

&lt;p&gt;The ideal demo starts with a browser full of unrelated tabs, turns them into three or four project cards, hibernates the clutter, and restores one project with its summary and links intact.&lt;/p&gt;

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

&lt;p&gt;The project is designed around a browser extension, a local AI inference layer, and a lightweight interface for managing saved browsing sessions.&lt;/p&gt;

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

&lt;p&gt;TabSloth is built around a simple principle: &lt;strong&gt;the AI should do the thinking, but the user's browser should retain control.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Browser extension
&lt;/h3&gt;

&lt;p&gt;A browser extension collects tab metadata, including titles and URLs. With explicit user permission, it can also extract relevant page text.&lt;/p&gt;

&lt;p&gt;The extension provides controls for analyzing tabs, reviewing suggested groups, saving sessions, and restoring them later.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Local open-weight AI
&lt;/h3&gt;

&lt;p&gt;The core intelligence uses an open-weight instruction model, such as Qwen2.5-0.5B-Instruct, through a compatible local inference runtime.&lt;/p&gt;

&lt;p&gt;The model receives normalized tab information and produces structured JSON describing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suggested project groups&lt;/li&gt;
&lt;li&gt;A short description for each group&lt;/li&gt;
&lt;li&gt;Important links&lt;/li&gt;
&lt;li&gt;A concise session summary&lt;/li&gt;
&lt;li&gt;A suggested next action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lightweight validation layer checks the output before it is displayed or saved.&lt;/p&gt;

&lt;p&gt;The model is replaceable, so developers can experiment with other compatible open-weight models without redesigning the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Local-first storage
&lt;/h3&gt;

&lt;p&gt;Saved sessions and their metadata are stored locally in the browser. The AI workflow is designed to avoid sending browsing history or page content to a remote inference API.&lt;/p&gt;

&lt;p&gt;After the model and required assets have been downloaded, the application can be designed to operate offline, subject to browser and runtime support.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Human-controlled automation
&lt;/h3&gt;

&lt;p&gt;TabSloth proposes groups and actions, but the user remains in control of closing tabs and restoring sessions. Nothing should silently discard a user's work.&lt;/p&gt;

&lt;p&gt;The result is a small, practical AI workflow rather than another assistant that requires constant attention.&lt;/p&gt;

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

&lt;p&gt;Browsing history can reveal far more about someone than they realize: work projects, personal interests, financial research, private correspondence, and unfinished ideas.&lt;/p&gt;

&lt;p&gt;Sending all that context to a hosted AI service just to organize browser tabs is an unnecessary trade-off for this use case.&lt;/p&gt;

&lt;p&gt;Open-source AI makes a different approach possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy by design:&lt;/strong&gt; Page content can remain on the user's device instead of being sent to a third-party inference API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offline capability:&lt;/strong&gt; Once the required model assets are available locally, the core workflow can continue without a live AI service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Freedom to experiment:&lt;/strong&gt; Developers can compare models, adjust prompts, change grouping strategies, and optimize inference for different hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lower recurring costs:&lt;/strong&gt; Local inference avoids per-request API charges, although it still consumes device resources and requires an initial model download.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Community-driven improvements:&lt;/strong&gt; Contributors can improve tab extraction, grouping quality, model compatibility, accessibility, and browser support without depending on a single AI vendor.&lt;/p&gt;

&lt;p&gt;A closed API might make the first prototype easier to deploy, but it would introduce a remote dependency for a task that benefits from local processing.&lt;/p&gt;

&lt;p&gt;For TabSloth, open innovation isn't just about choosing a different model. It's about deciding that the user's browsing context should remain theirs.&lt;/p&gt;

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

&lt;p&gt;Imagine finishing a research session with 30 open tabs.&lt;/p&gt;

&lt;p&gt;Without TabSloth, you might spend ten minutes revisiting pages, renaming bookmarks, writing notes, and deciding what can safely be closed.&lt;/p&gt;

&lt;p&gt;With TabSloth, the intended workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Organize My Chaos&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Review the AI-generated project groups.&lt;/li&gt;
&lt;li&gt;Save the sessions and close the tabs you no longer need.&lt;/li&gt;
&lt;li&gt;Return later and click &lt;strong&gt;Resume&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The target is to turn several minutes of repetitive tab management into a quick review.&lt;/p&gt;

&lt;p&gt;I'll measure the actual time saved during testing rather than claim an unverified number. Useful metrics include grouping accuracy, summary usefulness, time required to organize a session, and the percentage of sessions users can successfully resume.&lt;/p&gt;

&lt;p&gt;Because sometimes productivity doesn't mean doing more.&lt;/p&gt;

&lt;p&gt;Sometimes it means finally closing those 37 tabs and going outside.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;TabSloth: Your tabs work overtime. Let them rest.&lt;/strong&gt; 🦥&lt;/p&gt;

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