<?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: Golor Abraham AjiriOghene</title>
    <description>The latest articles on DEV Community by Golor Abraham AjiriOghene (@abrahamgolor).</description>
    <link>https://dev.to/abrahamgolor</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%2F4155300%2F3a7733a2-a7a0-4819-b41b-03ed0b774cd1.jpg</url>
      <title>DEV Community: Golor Abraham AjiriOghene</title>
      <link>https://dev.to/abrahamgolor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abrahamgolor"/>
    <language>en</language>
    <item>
      <title>I Built IssueWise: Let AI Do the GitHub Issue Detective Work So You Can Focus on Contributing</title>
      <dc:creator>Golor Abraham AjiriOghene</dc:creator>
      <pubDate>Mon, 26 Oct 2026 06:50:50 +0000</pubDate>
      <link>https://dev.to/abrahamgolor/i-built-issuewise-let-ai-do-the-github-issue-detective-work-so-you-can-focus-on-contributing-1b59</link>
      <guid>https://dev.to/abrahamgolor/i-built-issuewise-let-ai-do-the-github-issue-detective-work-so-you-can-focus-on-contributing-1b59</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;p&gt;Have you ever opened a GitHub issue that looked interesting, read through the description, and then realized you had absolutely no idea where to start?&lt;/p&gt;

&lt;p&gt;I have.&lt;/p&gt;

&lt;p&gt;One minute, you're excited about contributing to an open-source project. The next, you're jumping between the issue description, comments, documentation, and repository files, trying to understand what the problem actually is.&lt;/p&gt;

&lt;p&gt;Sometimes, the issue mentions a function you've never seen. Other times, it references a part of the codebase you know nothing about.&lt;/p&gt;

&lt;p&gt;And before you've written a single line of code, you've already spent a considerable amount of time investigating.&lt;/p&gt;

&lt;p&gt;I've contributed to open-source projects, including Signal Android and Lawnchair, and one thing I've learned is that finding an issue and understanding an issue are two very different things.&lt;/p&gt;

&lt;p&gt;GitHub makes it easy to discover issues. Understanding enough about an unfamiliar project to work on one is where things get difficult.&lt;/p&gt;

&lt;p&gt;That experience gave me an idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if I could paste a GitHub issue URL into a tool and get a clear explanation of the problem, what I need to understand, and where I should start investigating?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not something that writes the solution for me, but something that helps me understand the problem before I start writing code.&lt;/p&gt;

&lt;p&gt;That's how &lt;strong&gt;IssueWise&lt;/strong&gt; came about.&lt;/p&gt;

&lt;p&gt;For this year's Hacktoberfest &lt;em&gt;Slow and Steady&lt;/em&gt; challenge, I built IssueWise to handle some of the repetitive investigation involved in understanding GitHub issues, so developers can focus more on contributing.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;IssueWise is an AI-powered GitHub issue explorer that helps developers understand unfamiliar issues and figure out how to approach them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple.&lt;/p&gt;

&lt;p&gt;You paste a public GitHub issue URL, IssueWise retrieves information about the issue and its repository, and Google's Gemma 4 model helps turn that information into a structured explanation.&lt;/p&gt;

&lt;p&gt;Instead of getting one long AI-generated response, you get four sections that guide you through the issue.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Understand — What exactly is the problem?
&lt;/h3&gt;

&lt;p&gt;Some GitHub issues are written with the assumption that whoever reads them already understands the project.&lt;/p&gt;

&lt;p&gt;But what if you don't?&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Understand&lt;/strong&gt; section breaks down the issue into simpler terms, helping you understand what's happening and why it matters.&lt;/p&gt;

&lt;p&gt;It's the first thing I would want to know before attempting any fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Explore — Where should I start looking?
&lt;/h3&gt;

&lt;p&gt;Understanding the problem is one thing. Knowing where to investigate is another.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Explore&lt;/strong&gt; section helps you think through the issue in the context of the project.&lt;/p&gt;

&lt;p&gt;IssueWise also provides additional information through expandable sections such as Advanced Analysis, Discussion, and Repository Snapshot.&lt;/p&gt;

&lt;p&gt;I wanted this information to be available without overwhelming someone who just wants to understand the basics first.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Learn — What should I know before working on this?
&lt;/h3&gt;

&lt;p&gt;Sometimes, an issue introduces concepts you've never encountered.&lt;/p&gt;

&lt;p&gt;You might understand what needs to change but still need to learn how a particular framework, component, or programming concept works.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Learn&lt;/strong&gt; section explains relevant concepts to help you build that understanding.&lt;/p&gt;

&lt;p&gt;This is especially useful for developers who are still learning or contributing to a particular project for the first time.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Contribute — How do I get started?
&lt;/h3&gt;

&lt;p&gt;This is where everything starts coming together.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Contribute&lt;/strong&gt; section helps you approach the issue with a clearer idea of what to investigate and how to proceed.&lt;/p&gt;

&lt;p&gt;It doesn't replace reading the code, testing your changes, or following the project's contribution guidelines.&lt;/p&gt;

&lt;p&gt;It simply helps you get past that initial feeling of being lost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IssueWise doesn't write the contribution for you. It helps you understand what you're contributing to.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that was exactly what I wanted to build.&lt;/p&gt;

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

&lt;p&gt;IssueWise is live, and you can try it yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 &lt;a href="https://issuewise-web.onrender.com/" rel="noopener noreferrer"&gt;Try IssueWise&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://issuewise-web.onrender.com/" rel="noopener noreferrer"&gt;IssueWise website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste a public GitHub issue URL.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Explore Issue&lt;/strong&gt; to retrieve the issue details.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Explain This Issue&lt;/strong&gt; to generate an explanation using Gemma 4.&lt;/li&gt;
&lt;li&gt;Explore the &lt;strong&gt;Understand&lt;/strong&gt;, &lt;strong&gt;Explore&lt;/strong&gt;, &lt;strong&gt;Learn&lt;/strong&gt;, and &lt;strong&gt;Contribute&lt;/strong&gt; sections.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's all you need to get started.&lt;/p&gt;

&lt;p&gt;I tested IssueWise using real issues from open-source repositories, including &lt;a href="https://github.com/signalapp/Signal-Android/issues/15081" rel="noopener noreferrer"&gt;Signal Android&lt;/a&gt; and &lt;a href="https://github.com/pallets/flask/issues/6146" rel="noopener noreferrer"&gt;Flask&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's a look at the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  The homepage
&lt;/h3&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%2Fo4i2279zssnuc2ces6ny.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%2Fo4i2279zssnuc2ces6ny.png" alt="IssueWise homepage showing the GitHub issue exploration interface" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything starts with a GitHub issue URL. No complicated setup or lengthy instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exploring an issue
&lt;/h3&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%2Fvfyj2ft8ypcz11i4sn77.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%2Fvfyj2ft8ypcz11i4sn77.png" alt="IssueWise displaying GitHub issue information and repository context" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IssueWise retrieves the issue details and presents them in a way that's easier to explore.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding the issue with AI
&lt;/h3&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%2F4spf4gk5dbf05xcyviox.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%2F4spf4gk5dbf05xcyviox.png" alt="IssueWise AI-generated explanation with Understand, Explore, Learn, and Contribute sections" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my favorite part.&lt;/p&gt;

&lt;p&gt;Instead of reading an issue and wondering what to do next, you have a structured explanation to help you understand the problem and begin investigating.&lt;/p&gt;

&lt;p&gt;The application is hosted on Render's free services, so the first request may take a little longer if the server has been inactive.&lt;/p&gt;

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

&lt;p&gt;IssueWise is open source, and the complete source code is available on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 &lt;a href="https://github.com/abgolor/issuewise" rel="noopener noreferrer"&gt;View IssueWise on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I organized the project as a monorepo, with the frontend and backend in separate applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issuewise/
├── apps/
│   ├── api/       # FastAPI backend
│   └── web/       # Next.js frontend
├── docs/          # Documentation
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The repository includes the application code, tests, and documentation.&lt;/p&gt;

&lt;p&gt;You can explore how it works, run it locally, or contribute improvements.&lt;/p&gt;

&lt;p&gt;Since IssueWise is designed to help people contribute to open source, I felt it was important to make the project open source too.&lt;/p&gt;

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

&lt;p&gt;I wanted IssueWise to feel simple to use, even though there's quite a bit happening behind the scenes.&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;Next.js&lt;/strong&gt; for the frontend, &lt;strong&gt;FastAPI&lt;/strong&gt; for the backend, &lt;strong&gt;PostgreSQL&lt;/strong&gt; for storing application data, and &lt;strong&gt;Gemma 4&lt;/strong&gt; for the AI explanations.&lt;/p&gt;

&lt;p&gt;Here's the stack:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;What I used it for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Next.js + TypeScript&lt;/td&gt;
&lt;td&gt;Frontend application&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;td&gt;Styling and responsive interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python + FastAPI&lt;/td&gt;
&lt;td&gt;Backend API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alembic&lt;/td&gt;
&lt;td&gt;Database migrations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 26B A4B IT&lt;/td&gt;
&lt;td&gt;AI-powered issue explanations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google AI Studio&lt;/td&gt;
&lt;td&gt;Hosted model inference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub API&lt;/td&gt;
&lt;td&gt;Retrieving issue and repository information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Render&lt;/td&gt;
&lt;td&gt;Hosting the application&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why I chose Gemma 4
&lt;/h3&gt;

&lt;p&gt;I wanted to build something where open-weight AI was an important part of the product, not just an extra feature.&lt;/p&gt;

&lt;p&gt;IssueWise uses &lt;strong&gt;Google's Gemma 4 26B A4B IT&lt;/strong&gt; model to generate explanations from GitHub issue context.&lt;/p&gt;

&lt;p&gt;The GitHub API provides the issue information, but that information alone isn't always enough to help a newcomer understand what to do.&lt;/p&gt;

&lt;p&gt;Gemma helps turn it into something more useful: an explanation of the problem, relevant concepts, possible investigation directions, and guidance for getting started.&lt;/p&gt;

&lt;p&gt;Without that AI layer, IssueWise would mostly be another interface for reading GitHub issues.&lt;/p&gt;

&lt;p&gt;The explanation is what makes the experience different.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works behind the scenes
&lt;/h3&gt;

&lt;p&gt;When someone submits a GitHub issue URL, the frontend sends the request to the FastAPI backend.&lt;/p&gt;

&lt;p&gt;The backend retrieves the issue and relevant repository context from GitHub.&lt;/p&gt;

&lt;p&gt;That context is then used by the AI explanation pipeline, which generates the information displayed in the four main sections.&lt;/p&gt;

&lt;p&gt;The process looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        GitHub Issue URL
               |
               v
     Fetch Issue Information
               |
               v
        FastAPI Backend
               |
               v
      Gemma 4 AI Model
               |
               v
      Structured Explanation
               |
               v
    Understand | Explore
      Learn | Contribute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also implemented caching.&lt;/p&gt;

&lt;p&gt;When an explanation has already been generated and stored, IssueWise can reuse it instead of making another unnecessary AI request.&lt;/p&gt;

&lt;p&gt;This helps avoid repeating work and makes previously analyzed issues quicker to revisit.&lt;/p&gt;

&lt;p&gt;I think that's a good fit for the &lt;em&gt;Slow and Steady&lt;/em&gt; theme: if you've already done the work once, why do it all over again?&lt;/p&gt;

&lt;h3&gt;
  
  
  Making the interface easy to use
&lt;/h3&gt;

&lt;p&gt;One thing I wanted to avoid was building an application that gives you another wall of technical information to read.&lt;/p&gt;

&lt;p&gt;That would defeat the purpose.&lt;/p&gt;

&lt;p&gt;So I organized the explanation into four sections and kept more detailed information inside expandable panels.&lt;/p&gt;

&lt;p&gt;You can start with the basics and explore further when you're ready.&lt;/p&gt;

&lt;p&gt;The goal was to make the experience useful without making it feel complicated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing and deployment
&lt;/h3&gt;

&lt;p&gt;I also spent time testing the frontend and backend to make sure the different parts worked together.&lt;/p&gt;

&lt;p&gt;Once the application was ready locally, I deployed it using Render.&lt;/p&gt;

&lt;p&gt;The frontend, backend, and PostgreSQL database are hosted as separate services.&lt;/p&gt;

&lt;p&gt;Getting everything working in production took some effort, especially configuring environment variables, connecting the database, running migrations, and making sure the frontend could communicate with the API.&lt;/p&gt;

&lt;p&gt;At one point, the backend wouldn't start because the production database didn't have the required tables.&lt;/p&gt;

&lt;p&gt;I had to run the Alembic migrations against the hosted database before the application could start successfully.&lt;/p&gt;

&lt;p&gt;It was a useful reminder that an application working locally doesn't automatically mean it's ready for production.&lt;/p&gt;

&lt;p&gt;Eventually, everything came together.&lt;/p&gt;

&lt;p&gt;Seeing IssueWise retrieve a real GitHub issue and generate an explanation from the live website made the work worthwhile.&lt;/p&gt;

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

&lt;p&gt;One of the reasons I enjoy open-source development is that it gives people the opportunity to learn from real projects.&lt;/p&gt;

&lt;p&gt;You can read the code, understand how something works, suggest improvements, and contribute to software that other people use.&lt;/p&gt;

&lt;p&gt;But there's a difference between having access to source code and understanding it.&lt;/p&gt;

&lt;p&gt;That's part of what inspired IssueWise.&lt;/p&gt;

&lt;p&gt;I wanted to build something that could make open-source projects a little more approachable, especially for developers who are still gaining experience.&lt;/p&gt;

&lt;p&gt;Using Gemma also fits into that idea.&lt;/p&gt;

&lt;h3&gt;
  
  
  More freedom to experiment
&lt;/h3&gt;

&lt;p&gt;Gemma is an open-weight model family, which means developers have options beyond relying exclusively on a closed model API.&lt;/p&gt;

&lt;p&gt;With suitable hardware and infrastructure, open-weight models can be deployed and experimented with in different environments.&lt;/p&gt;

&lt;p&gt;For a project like IssueWise, that opens up interesting possibilities.&lt;/p&gt;

&lt;p&gt;Different programming languages, repositories, and technical problems may benefit from different models or specialized approaches.&lt;/p&gt;

&lt;p&gt;I like the idea of being able to experiment with the AI layer as the project grows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Being realistic about the current implementation
&lt;/h3&gt;

&lt;p&gt;The deployed version of IssueWise uses Google AI Studio for inference.&lt;/p&gt;

&lt;p&gt;So, while Gemma is an open-weight model, &lt;strong&gt;IssueWise currently relies on a hosted service to run it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It doesn't run entirely offline, and I'm not claiming that it does.&lt;/p&gt;

&lt;p&gt;However, using an open-weight model means there are other deployment possibilities worth exploring in the future, including self-hosted inference.&lt;/p&gt;

&lt;p&gt;For me, that's one of the practical benefits of open innovation: having more choices about how a project can evolve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Helping more developers participate
&lt;/h3&gt;

&lt;p&gt;I also believe that open source becomes more valuable when more people can participate.&lt;/p&gt;

&lt;p&gt;Not everyone has years of experience working with large codebases.&lt;/p&gt;

&lt;p&gt;Sometimes, all someone needs is a clearer explanation or a better starting point.&lt;/p&gt;

&lt;p&gt;If IssueWise helps even a few developers feel more confident exploring unfamiliar issues, then it's solving a problem I care about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Making code public is important. Helping people understand that code matters too.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;The theme for this challenge is &lt;em&gt;Slow and Steady&lt;/em&gt;, and I think IssueWise fits it quite well.&lt;/p&gt;

&lt;p&gt;Because sometimes being productive isn't about working harder.&lt;/p&gt;

&lt;p&gt;It's about finding ways to avoid unnecessary work.&lt;/p&gt;

&lt;p&gt;Before building IssueWise, understanding an unfamiliar GitHub issue could involve reading the description several times, checking the comments, exploring the repository, searching unfamiliar concepts, and trying to connect everything together.&lt;/p&gt;

&lt;p&gt;None of those activities is necessarily difficult on its own.&lt;/p&gt;

&lt;p&gt;But together, they can take a lot of time, especially when you're new to a project.&lt;/p&gt;

&lt;p&gt;With IssueWise, the process becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paste the issue URL → Explore → Explain → Start investigating.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The application brings the initial information-gathering and explanation process into one workflow.&lt;/p&gt;

&lt;p&gt;I've tested it with real GitHub issues and verified that the deployed application can retrieve issue information and generate explanations.&lt;/p&gt;

&lt;p&gt;I haven't conducted a formal study to measure exactly how much time it saves, so I won't make up a number.&lt;/p&gt;

&lt;p&gt;But the practical benefit is clear: instead of repeatedly collecting context and asking separate questions, you get a structured starting point in one place.&lt;/p&gt;

&lt;p&gt;And for me, that's the kind of laziness worth encouraging.&lt;/p&gt;

&lt;p&gt;Let the tool handle some of the repetitive investigation.&lt;/p&gt;

&lt;p&gt;Save your energy for understanding the code, testing your ideas, and making a useful contribution.&lt;/p&gt;

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

&lt;p&gt;Building IssueWise taught me a few things.&lt;/p&gt;

&lt;p&gt;First, integrating an AI model is only one part of building a useful AI application.&lt;/p&gt;

&lt;p&gt;You also need to think about the information the model receives, how the output is organized, what happens when requests fail, and how people will actually use the result.&lt;/p&gt;

&lt;p&gt;Second, a good interface can make a big difference.&lt;/p&gt;

&lt;p&gt;Even a useful explanation becomes difficult to follow if everything is presented at once.&lt;/p&gt;

&lt;p&gt;Breaking the experience into smaller sections helped me keep the application focused on what the developer needs at each stage.&lt;/p&gt;

&lt;p&gt;And finally, I was reminded that it's better to solve one real problem properly than to build a long list of features that don't necessarily help anyone.&lt;/p&gt;

&lt;p&gt;There are plenty of things I'd like to improve in IssueWise over time.&lt;/p&gt;

&lt;p&gt;But for this challenge, I wanted to focus on one question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I make it easier for someone to go from finding an unfamiliar GitHub issue to understanding how to approach it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the problem IssueWise is built around.&lt;/p&gt;

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

&lt;p&gt;I'm submitting IssueWise for two partner categories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;IssueWise uses &lt;strong&gt;Gemma 4 26B A4B IT&lt;/strong&gt; to generate structured explanations of GitHub issues.&lt;/p&gt;

&lt;p&gt;The model powers the main experience, helping developers understand problems, learn relevant concepts, and identify where to begin investigating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of Render
&lt;/h3&gt;

&lt;p&gt;I used &lt;strong&gt;Render&lt;/strong&gt; to deploy the complete application, including the Next.js frontend, FastAPI backend, and PostgreSQL database.&lt;/p&gt;

&lt;p&gt;Render makes IssueWise publicly accessible so other developers can try it without setting up the project locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I don't think AI should do all the thinking for developers.&lt;/p&gt;

&lt;p&gt;And I don't think contributing to open source should mean asking an AI model to generate code you don't understand.&lt;/p&gt;

&lt;p&gt;But I do think AI can help remove some of the unnecessary friction that makes contributing feel difficult.&lt;/p&gt;

&lt;p&gt;Sometimes, the hardest part of fixing an issue isn't writing the code.&lt;/p&gt;

&lt;p&gt;It's understanding the problem well enough to know where to begin.&lt;/p&gt;

&lt;p&gt;That's what I'm trying to make easier with IssueWise.&lt;/p&gt;

&lt;p&gt;If you've ever opened a GitHub issue and wondered where to start, give it a try.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 &lt;a href="https://issuewise-web.onrender.com/" rel="noopener noreferrer"&gt;Try IssueWise&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 &lt;a href="https://github.com/abgolor/issuewise" rel="noopener noreferrer"&gt;Explore the source code on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear what you think, especially if you've experienced the same challenges while contributing to open source.&lt;/p&gt;

&lt;p&gt;And if you find something that could be improved, the repository is open for contributions too.&lt;/p&gt;

&lt;p&gt;Happy Hacktoberfest! 🎃&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>I built an offline AI that warns my mum about scam messages.</title>
      <dc:creator>Golor Abraham AjiriOghene</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:51:37 +0000</pubDate>
      <link>https://dev.to/abrahamgolor/i-built-an-offline-ai-that-warns-my-mum-about-scam-messages-3p58</link>
      <guid>https://dev.to/abrahamgolor/i-built-an-offline-ai-that-warns-my-mum-about-scam-messages-3p58</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;My mum is a trader. She owns a shop where she sells food items.&lt;/p&gt;

&lt;p&gt;On her birthday, my siblings surprised her with a brand new smartphone. Her first ever smartphone. She never really liked smartphones. She complained that it would take her a long time to get used to one, and that she preferred her button phone. But button phones don't have social media, calls on social media are cheaper, and we wanted her to enjoy the fun that comes with it. So we ignored her complaints and got her the smartphone anyway.&lt;/p&gt;

&lt;p&gt;Then I noticed a problem. She started getting so many fake messages, especially forwarded messages on WhatsApp. She would even forward them to me and ask if MTN was really doing a promo, or if MTN was really giving out freebies for its anniversary. Every time, I told her it was a scam. But after a while I got tired, because I can't check every single message she gets.&lt;/p&gt;

&lt;p&gt;That's where the idea came from. What if she had a buddy on her phone that could tell her, "This SMS is a scam, don't do it"? Or, "Be careful with this WhatsApp message from Amaka. Don't do anything until you ask your son."&lt;/p&gt;

&lt;p&gt;That buddy is what I built this weekend. I called it &lt;strong&gt;ScamGuard&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  It isn't just my mum
&lt;/h3&gt;

&lt;p&gt;I wanted to know if other families had the same problem, so I made a &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdr5EJRz-N-Arl5BjH1aAzqbnmW2ZxftkFCQMpPkCnA2zK8kA/viewform?usp=dialog" rel="noopener noreferrer"&gt;short survey&lt;/a&gt; and shared it on LinkedIn. Eleven people answered for their parents (&lt;a href="https://docs.google.com/spreadsheets/d/1_XReprLR7cYIreTjNRoAVg2PxYllUrLq5E-edyPeq84/edit?usp=sharing" rel="noopener noreferrer"&gt;you can see the responses here&lt;/a&gt;). That's not a lot of people, but the answers said a lot.&lt;/p&gt;

&lt;p&gt;All eleven said their parents use an Android phone. Eight said their parents had clicked a fake link before, the "MTN 50th anniversary, click here to redeem" kind. Five said their parents had already been scammed. Only two said their parents check whether what they see online is true, and only one was sure their parents could tell an AI-made picture or video from a real one.&lt;/p&gt;

&lt;p&gt;So two things were clear. It had to be an Android app. And it had to warn them the moment the message arrives, because most of them won't stop to check. Most of those scams happened on Facebook. My mum's come through WhatsApp and SMS, so that's where I started. Facebook is next.&lt;/p&gt;

&lt;h3&gt;
  
  
  What ScamGuard does
&lt;/h3&gt;

&lt;p&gt;ScamGuard is an Android app that quietly looks at every SMS and WhatsApp message that comes into a parent's phone. It uses Gemma, an open AI model made by Google, and the AI runs on the phone itself. Nothing is sent over the internet.&lt;/p&gt;

&lt;p&gt;When a scam comes in, this is what my mum sees and hears:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Her screen turns red, even if she's in the middle of a WhatsApp chat.&lt;/li&gt;
&lt;li&gt;A Nigerian voice says, "Mummy, wait o! Dis message na scam. No send money, no press any link, no give anybody any code. Call your family first."&lt;/li&gt;
&lt;li&gt;She can see who sent the message and what it says, with the dangerous parts marked, like the link or "your BVN is blocked". The link can't be opened from there.&lt;/li&gt;
&lt;li&gt;She gets one short reason, like "It has a link and says your account is blocked", and a big button to call me.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not every message is that serious. If something just looks a bit off, she gets a quiet notification telling her to be careful and to call the family before she replies or pays anything. When a real code from her bank comes in, ScamGuard reminds her never to give it to anyone. Normal messages, like the church group or the family chat, get nothing at all.&lt;/p&gt;

&lt;p&gt;She can also check any message herself by sharing it to ScamGuard. And if family alerts are on, I get a short text when she receives a likely scam, so I can call her. That text never says what the message was or who sent it.&lt;/p&gt;

&lt;p&gt;It works in English and Pidgin. Setting it up takes about ten minutes, and it's made for a son or daughter to do on their parent's phone.&lt;/p&gt;

&lt;p&gt;The part I'm proudest of is this: ScamGuard doesn't have permission to use the internet at all. Even if it wanted to, it couldn't send her messages anywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  What my mum said
&lt;/h3&gt;

&lt;p&gt;My mum was very happy with it. She even told me her neighbour is going to use it too. Her neighbour can't read, and scammers once tricked her with a phone call, pretending to be from her bank, and got her to send them a code.&lt;/p&gt;

&lt;p&gt;That's exactly why ScamGuard says its warnings out loud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this matters to me
&lt;/h3&gt;

&lt;p&gt;Every day on the internet, people attach the word "scam" to Nigerians, and that really makes me sad. I have always hated scammers, and I've spent my five-year career building security-focused applications.&lt;/p&gt;

&lt;p&gt;Many elderly people can't really tell what is a scam and what isn't. ScamGuard tells them, and it speaks to them in English and in Pidgin, a language understood across Nigeria, including by many people who never had much formal education.&lt;/p&gt;

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

&lt;p&gt;A full walkthrough of ScamGuard on my phone: scams arriving on WhatsApp and SMS, the red warning taking over the screen, normal messages staying quiet, the phone locked, airplane mode on, and the Pidgin voice.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Haasl0aU-ko" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;You can install it yourself from the &lt;a href="https://github.com/abgolor/ScamGuard/releases/tag/v1.0.0" rel="noopener noreferrer"&gt;v1.0.0 release&lt;/a&gt;. It needs Android 8 or newer, a 64-bit phone and about 2.3 GB of free space during setup (about 1.7 GB after).&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/abgolor" rel="noopener noreferrer"&gt;
        abgolor
      &lt;/a&gt; / &lt;a href="https://github.com/abgolor/ScamGuard" rel="noopener noreferrer"&gt;
        ScamGuard
      &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;ScamGuard&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;An offline AI scam guard for your parents' Android phone.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ScamGuard reads every incoming text message (SMS) and WhatsApp message, checks it with Gemma, an AI model by Google that runs &lt;strong&gt;on the phone itself&lt;/strong&gt;, and warns loudly, with a red screen and a spoken warning, before your mum or dad clicks a link, sends money or shares a code.&lt;/p&gt;
&lt;p&gt;It is built for parents and grandparents who use Android, WhatsApp and SMS every day, aren't technical, and will never open an app to "check" a message. Their son or daughter installs it once, in about ten minutes, and it then works on its own.&lt;/p&gt;
&lt;p&gt;It catches the scams Nigerian families actually get: "your BVN is blocked, click this link", fake POS reversals, "send me the OTP", prizes that need a delivery fee, and "Mummy, this is my new number, please send money". It speaks English and Nigerian…&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/abgolor/ScamGuard" 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;ScamGuard is written in Kotlin with Jetpack Compose. The AI is &lt;strong&gt;Gemma 3 1B&lt;/strong&gt;, a 584 MB open-weight model that runs on the phone's processor through Google's &lt;strong&gt;LiteRT-LM&lt;/strong&gt;. The warning voice was made with &lt;strong&gt;ElevenLabs&lt;/strong&gt;. I tested it with 281 automated tests, plus a test screen on the phone that runs sample messages through the real AI and shows me the results and timings.&lt;/p&gt;

&lt;h3&gt;
  
  
  How a message is checked
&lt;/h3&gt;

&lt;p&gt;When a message comes in, ScamGuard does a few things in order.&lt;/p&gt;

&lt;p&gt;First, it ignores messages that are obviously fine, like "Ok", "Amen" or a row of emojis. This saves battery in busy group chats.&lt;/p&gt;

&lt;p&gt;Next, it looks for patterns that are always a scam. A link together with "your BVN is blocked". Someone asking for a code or a PIN. A prize you have to pay a fee to collect. Someone asking for money from a "new number". These are caught almost instantly, and the red screen shows up about two seconds after the message arrives.&lt;/p&gt;

&lt;p&gt;That last one is an old trick. Someone pretends to be a person you know, uses a number you don't recognise, and asks for money urgently. It used to come as a phone call. Now it comes on WhatsApp.&lt;/p&gt;

&lt;p&gt;Everything else goes to Gemma, which decides if the message is a scam, something to be careful about, or fine. For example, a fake "POS reversal" message didn't match any of my rules. Gemma caught it.&lt;/p&gt;

&lt;p&gt;Finally, ScamGuard double-checks Gemma's answer. If Gemma says "scam", there has to be something real in the message to back it up, like a link, a phone number, or a request for money or a code. If there isn't, the warning is turned down.&lt;/p&gt;

&lt;h3&gt;
  
  
  The part where my AI called everything a scam
&lt;/h3&gt;

&lt;p&gt;Getting the AI to run on a phone took one evening. Getting it to make good decisions took most of the weekend.&lt;/p&gt;

&lt;p&gt;I wrote 20 test messages, 10 scams and 10 normal ones, and kept testing against them.&lt;/p&gt;

&lt;p&gt;My first try was simple. I described the kinds of scams Nigerian parents get, then asked Gemma whether each message was one. It caught 9 of the 10 scams. It also said 9 of the 10 normal messages were scams. A family greeting was flagged as "Mummy's request for money". A normal bank alert was "suspicious due to an unusual amount". If my mum got warnings like that, she would stop trusting the app in one day.&lt;/p&gt;

&lt;p&gt;Next, I tried asking Gemma simple yes or no questions, like "Does this message ask for a code?", and letting my own code make the final decision. That went worse. When I gave it an example answer, it copied the example for almost every message. When I asked one question at a time, it said "no" to nearly everything, even to a message that plainly said "forward me the OTP".&lt;/p&gt;

&lt;p&gt;What finally worked was letting Gemma make the call, but not trusting it blindly. The clear scams are caught by rules before Gemma even sees them. For everything else, Gemma's "scam" only counts if the rules can find something real in the message. And the warning my mum reads is written by me, in English and Pidgin, based on what was actually found. Gemma's own explanations were often made up, so I don't show them.&lt;/p&gt;

&lt;p&gt;With that, all 10 test scams were caught, and no normal message set off the loud alarm. One normal message, a friend asking for a contribution, got the quiet "be careful" note. I think that's fair, because it does ask her to send money.&lt;/p&gt;

&lt;p&gt;Then I tested it on 20 new messages it had never seen before. It missed 3 scams: a fake "fraud desk" asking her to call a number, an "invest ₦50,000 and get ₦150,000 back" scheme, and a message asking her to "reply with the 6-digit code". I fixed those by adding rules for each kind of scam, not just for those exact messages.&lt;/p&gt;

&lt;p&gt;On my Pixel 8, a check by Gemma takes about 5 to 8 seconds, and the clear scams show up in about 2. The first check right after the phone restarted was very slow, over 40 seconds, so ScamGuard now gets the AI ready a couple of minutes after the phone turns on.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it can't do yet
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It doesn't check phone calls, only SMS and WhatsApp messages.&lt;/li&gt;
&lt;li&gt;It doesn't check photos or voice notes, only text.&lt;/li&gt;
&lt;li&gt;If she has a WhatsApp chat open on her screen, WhatsApp doesn't show a notification, so ScamGuard doesn't see the messages in that chat.&lt;/li&gt;
&lt;li&gt;On Android 15 and newer, the phone may hide one-time codes from apps like ScamGuard.&lt;/li&gt;
&lt;li&gt;It isn't on the Play Store yet, so Android asks for an extra step during setup, and Play Protect may show a warning. The setup screens explain what to do.&lt;/li&gt;
&lt;li&gt;It needs a 64-bit phone with about 2.3 GB of free space during setup. Some very cheap phones can't run it, and the app tells them so.&lt;/li&gt;
&lt;li&gt;The download is big, 612 MB, because the AI is inside it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Igbo, Yoruba and Hausa, the three most spoken languages in Nigeria, so every parent can hear the warning in their own language.&lt;/li&gt;
&lt;li&gt;Facebook, TikTok and Instagram. People in my survey asked for these, and most of their parents' scams happened on Facebook.&lt;/li&gt;
&lt;li&gt;A WhatsApp number people can forward suspicious messages to, for family members whose phones can't run the AI.&lt;/li&gt;
&lt;li&gt;A Play Store release, which would also make the app take up less space on the phone.&lt;/li&gt;
&lt;li&gt;A lighter version for older phones.&lt;/li&gt;
&lt;li&gt;Training a small Gemma model on real Nigerian scam messages, so it gets better at catching them on its own.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;If I had used a paid AI service in the cloud, every message my mum gets would have to be sent to someone else's computer to be checked. Her bank alerts, her family chats, everything. I wasn't going to do that. Because Gemma is open and runs on the phone, ScamGuard doesn't need the internet at all, and anyone can check that in the app's permissions.&lt;/p&gt;

&lt;p&gt;It also works without data. Data isn't cheap in Nigeria, and the network isn't always there. ScamGuard works in airplane mode, and checking a message costs nothing.&lt;/p&gt;

&lt;p&gt;The AI comes inside the app, so a family can share ScamGuard from one phone to another with Xender or WhatsApp. No account, no sign-up, nothing extra to download.&lt;/p&gt;

&lt;p&gt;And I'm in control. I tried running the AI on the phone's graphics chip and on its main processor, and picked what worked best. When the AI made bad calls, I could put rules around it and test it as much as I wanted, with no limits and no bills. If a better model comes out, I can swap it in.&lt;/p&gt;

&lt;p&gt;The only part where I used an online service was the voice. I made 24 short warning clips with ElevenLabs, using a Nigerian voice, and put them inside the app. The app plays them offline.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&lt;/li&gt;
&lt;/ul&gt;

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