<?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: Aditya</title>
    <description>The latest articles on DEV Community by Aditya (@alone_boy_0c806ff50784922).</description>
    <link>https://dev.to/alone_boy_0c806ff50784922</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%2F4046942%2F18072864-0a7d-4d28-a64d-cc8084c45b67.jpg</url>
      <title>DEV Community: Aditya</title>
      <link>https://dev.to/alone_boy_0c806ff50784922</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alone_boy_0c806ff50784922"/>
    <language>en</language>
    <item>
      <title># Building an AI-Powered GitHub Issue Triage Bot with n8n, Gemini &amp; SigNoz</title>
      <dc:creator>Aditya</dc:creator>
      <pubDate>Sat, 25 Jul 2026 16:07:40 +0000</pubDate>
      <link>https://dev.to/alone_boy_0c806ff50784922/-building-an-ai-powered-github-issue-triage-bot-with-n8n-gemini-signoz-205f</link>
      <guid>https://dev.to/alone_boy_0c806ff50784922/-building-an-ai-powered-github-issue-triage-bot-with-n8n-gemini-signoz-205f</guid>
      <description>&lt;h2&gt;
  
  
  🚀 Overview
&lt;/h2&gt;

&lt;p&gt;Managing GitHub issues manually can become repetitive, especially when maintainers need to categorize incoming issues, determine severity, respond to contributors, and track activity.&lt;/p&gt;

&lt;p&gt;For the SigNoz AI Agent Observability Hackathon, I built an automated GitHub Issue Triage Bot that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Receives GitHub issue events through webhooks&lt;/li&gt;
&lt;li&gt;Uses Gemini AI to classify issues&lt;/li&gt;
&lt;li&gt;Automatically posts contextual responses on GitHub&lt;/li&gt;
&lt;li&gt;Sends telemetry to SigNoz using OpenTelemetry-compatible logs&lt;/li&gt;
&lt;li&gt;Visualizes issue trends and severity distributions through dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project was built as part of the SigNoz AI Agent Observability Hackathon. My goal was not only to automate GitHub issue triage using AI, but also to understand how observability can help monitor and debug AI-driven workflows in real-world environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo Video:&lt;/strong&gt; &lt;a href="https://youtu.be/4flZ2YEblZs" rel="noopener noreferrer"&gt;https://youtu.be/4flZ2YEblZs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/aditya-dev-prog/Dev-Rel-AI-Bot-Analytics" rel="noopener noreferrer"&gt;https://github.com/aditya-dev-prog/Dev-Rel-AI-Bot-Analytics&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Architecture
&lt;/h2&gt;

&lt;p&gt;I chose n8n because it allowed me to quickly connect GitHub, Gemini, and SigNoz without building a custom orchestration layer from scratch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow Pipeline
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Issue
      │
      ▼
 GitHub Webhook
      │
      ▼
   n8n Workflow
      │
      ▼
 Gemini AI Analysis
      │
      ├── GitHub Comment
      │
      └── OpenTelemetry Logs
                    │
                    ▼
                 SigNoz
                    │
                    ▼
              Dashboards
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Complete n8n Workflow
&lt;/h3&gt;

&lt;p&gt;This is the final workflow running in n8n that handles issue ingestion, AI classification, GitHub responses, and telemetry export.&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%2Fntd41jfy93wbjcdozrag.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%2Fntd41jfy93wbjcdozrag.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;br&gt;
The workflow consists of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;GitHub Webhook Trigger&lt;/li&gt;
&lt;li&gt;JavaScript preprocessing&lt;/li&gt;
&lt;li&gt;Gemini AI classification&lt;/li&gt;
&lt;li&gt;Response parsing&lt;/li&gt;
&lt;li&gt;GitHub comment generation&lt;/li&gt;
&lt;li&gt;Telemetry export to SigNoz&lt;/li&gt;
&lt;li&gt;Dashboard visualization&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  🔄 Workflow Breakdown
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 1: Receive GitHub Issue Events
&lt;/h3&gt;

&lt;p&gt;The workflow begins when GitHub sends an issue event to the webhook.&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%2Fhtzxobasubp00w4aj750.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%2Fhtzxobasubp00w4aj750.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The webhook payload contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issue title&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Issue number&lt;/li&gt;
&lt;li&gt;Repository metadata&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Step 2: AI-Powered Classification with Gemini
&lt;/h3&gt;

&lt;p&gt;After receiving the GitHub issue payload, the workflow sends the issue title and description to Gemini AI for analysis.&lt;/p&gt;

&lt;p&gt;Gemini classifies the issue into categories such as bug, feature request, or question, and also assigns a severity level.&lt;/p&gt;

&lt;p&gt;A typical response looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"question"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"severity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"suggested_reply"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Thanks for reporting this issue..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During testing, I opened several sample GitHub issues to validate the workflow end-to-end. One example issue was titled "Webhook not triggering correctly". Gemini categorized it as a bug with medium severity and generated a suggested response. The workflow then automatically posted the response back to GitHub and exported the classification details to SigNoz, where I could verify the telemetry through logs and dashboards.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Parsing the AI Response
&lt;/h3&gt;

&lt;p&gt;The Gemini response is parsed and transformed into structured fields.&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%2F93dgklue59sde4pt7cxz.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%2F93dgklue59sde4pt7cxz.png" alt=" " width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Category&lt;/li&gt;
&lt;li&gt;Severity&lt;/li&gt;
&lt;li&gt;Suggested response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These values are later sent to both GitHub and SigNoz.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Automated GitHub Responses
&lt;/h2&gt;

&lt;p&gt;After classification, the workflow posts an AI-generated response directly on the GitHub issue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Responses
&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%2F4rnlpuod193m9mitd9ri.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%2F4rnlpuod193m9mitd9ri.png" alt=" " width="799" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Examples generated by the bot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connectivity test confirmation&lt;/li&gt;
&lt;li&gt;Webhook verification feedback&lt;/li&gt;
&lt;li&gt;Operational status updates&lt;/li&gt;
&lt;li&gt;Follow-up guidance for contributors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This provides immediate feedback to users without requiring a maintainer to respond manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Adding Observability with SigNoz
&lt;/h2&gt;

&lt;p&gt;The project was not limited to automation.&lt;/p&gt;

&lt;p&gt;I wanted visibility into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What categories are most common?&lt;/li&gt;
&lt;li&gt;What severity levels occur most often?&lt;/li&gt;
&lt;li&gt;How frequently is the bot being used?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To answer these questions, telemetry data is exported to SigNoz.&lt;/p&gt;




&lt;h2&gt;
  
  
  💥 What Actually Took Most of My Time
&lt;/h2&gt;

&lt;p&gt;When I started this project, I expected the AI integration to be the hardest part.&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;On the first day, I started around 9:00 AM and spent nearly 9 hours working on the project. Most of that time was not spent building the AI workflow—it was spent debugging infrastructure issues.&lt;/p&gt;

&lt;p&gt;Some of the biggest challenges included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;n8n continuously crashing because of Docker/WSL permission issues.&lt;/li&gt;
&lt;li&gt;Telemetry failing to reach SigNoz because the collector was not accepting data.&lt;/li&gt;
&lt;li&gt;Invalid JSON payloads breaking OpenTelemetry log exports.&lt;/li&gt;
&lt;li&gt;Workflow references failing after node renaming.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ironically, building the AI workflow was easier than making the entire system observable.&lt;/p&gt;

&lt;p&gt;Looking back, those debugging sessions taught me more than the AI integration itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 Challenges Faced During Development
&lt;/h2&gt;

&lt;p&gt;No real project is complete without debugging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 1: Invalid Syntax While Sending Telemetry
&lt;/h3&gt;

&lt;p&gt;Initially, telemetry payloads were generated using inline expressions.&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%2Fxq53tk1icbn66qob0aes.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%2Fxq53tk1icbn66qob0aes.png" alt=" " width="800" height="809"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This resulted in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;invalid syntax
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The issue was caused by embedding n8n expressions directly inside JSON structures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Instead of building the payload using complex inline expressions, I restructured the workflow and generated clean JSON objects before sending them to SigNoz.&lt;/p&gt;




&lt;h3&gt;
  
  
  Challenge 2: Referenced Node Doesn't Exist
&lt;/h3&gt;

&lt;p&gt;While formatting telemetry logs, I encountered:&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%2Fglxbwmnelascd99svg2l.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%2Fglxbwmnelascd99svg2l.png" alt=" " width="551" height="806"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Referenced node doesn't exist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow was attempting to access outputs from nodes that were no longer available in the execution path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;I redesigned the workflow and used a Merge node to combine data from different branches before generating telemetry.&lt;/p&gt;




&lt;h3&gt;
  
  
  Challenge 3: Gemini API Availability Issues
&lt;/h3&gt;

&lt;p&gt;During testing, Gemini occasionally returned:&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%2Fj1lipmatua7mxp540jku.jpeg" 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%2Fj1lipmatua7mxp540jku.jpeg" alt=" " width="799" height="378"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service unavailable
This model is currently experiencing high demand
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This highlighted the importance of building retry mechanisms and handling transient failures in AI-powered workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Challenge 4: Docker &amp;amp; WSL Permission Issues
&lt;/h3&gt;

&lt;p&gt;Before I could even focus on AI workflows, I spent a significant amount of time fixing local infrastructure problems.&lt;/p&gt;

&lt;p&gt;The n8n container repeatedly entered a restart loop because of permission conflicts between Docker and the mounted WSL directories.&lt;/p&gt;

&lt;p&gt;After investigating container logs, I discovered that n8n could not write to its configuration directory. Fixing the directory ownership resolved the issue and allowed the workflow environment to become stable.&lt;/p&gt;

&lt;p&gt;The issue was resolved by fixing the directory ownership:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; 1000:1000 ~/.n8n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔀 Final Telemetry Pipeline
&lt;/h2&gt;

&lt;p&gt;After debugging, the workflow was redesigned to merge AI classification results with GitHub metadata before exporting logs.&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%2Fdybxg8wfn50qvd9pcxbq.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%2Fdybxg8wfn50qvd9pcxbq.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ensured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consistent telemetry&lt;/li&gt;
&lt;li&gt;Reliable metadata&lt;/li&gt;
&lt;li&gt;Cleaner observability pipelines&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📈 Observability Results
&lt;/h2&gt;

&lt;p&gt;Once telemetry reached SigNoz, logs became searchable and structured.&lt;/p&gt;

&lt;h3&gt;
  
  
  Structured Log Example
&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%2F4qxms11iwwwgfvr5btxi.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%2F4qxms11iwwwgfvr5btxi.png" alt=" " width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The logs contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;service.name = devrel-bot-agent
issue.category = question
issue.severity = low
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Additional Metadata
&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%2F9qe16d7efo86w7u7y4pk.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%2F9qe16d7efo86w7u7y4pk.png" alt=" " width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Telemetry also includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scope_name
trace_id
span_id
deployment_environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes troubleshooting significantly easier.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Building Dashboards
&lt;/h2&gt;

&lt;p&gt;To understand issue trends, I created dashboards inside SigNoz.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue Category Distribution
&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%2F8ivjzwdcgvwf39m1sep8.jpeg" 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%2F8ivjzwdcgvwf39m1sep8.jpeg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The dashboard groups issues by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;issue.category
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and visualizes category frequency.&lt;/p&gt;




&lt;h3&gt;
  
  
  First Dashboard Iteration
&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%2Ffhh3o95khsmr3xlc5e9l.jpeg" 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%2Ffhh3o95khsmr3xlc5e9l.jpeg" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This confirmed that telemetry was being ingested correctly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Dashboard
&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%2F560p7zhbf4o4qtfgw2o0.jpeg" 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%2F560p7zhbf4o4qtfgw2o0.jpeg" alt=" " width="799" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The final dashboard includes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue Categories Distribution
&lt;/h3&gt;

&lt;p&gt;Tracks how issues are classified by the AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Triage Severity Ratio
&lt;/h3&gt;

&lt;p&gt;Shows severity distribution across issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bot Activity Over Time
&lt;/h3&gt;

&lt;p&gt;Measures automation activity and issue processing trends.&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%2Fc5gcyznp788dmxfnaaty.jpeg" 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%2Fc5gcyznp788dmxfnaaty.jpeg" alt=" " width="799" height="379"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Key Learnings
&lt;/h2&gt;

&lt;p&gt;This project taught me that AI automation alone is not enough.&lt;/p&gt;

&lt;p&gt;To build production-ready AI agents, we also need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Telemetry&lt;/li&gt;
&lt;li&gt;Debugging capabilities&lt;/li&gt;
&lt;li&gt;Reliability engineering practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using SigNoz alongside n8n and Gemini helped transform a simple automation workflow into an observable AI system.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Resources
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Demo Video&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/4flZ2YEblZs" rel="noopener noreferrer"&gt;https://youtu.be/4flZ2YEblZs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/aditya-dev-prog/Dev-Rel-AI-Bot-Analytics" rel="noopener noreferrer"&gt;https://github.com/aditya-dev-prog/Dev-Rel-AI-Bot-Analytics&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you'd like to reproduce the project locally, the repository contains the workflow JSON and deployment configuration used during development.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Future Improvements
&lt;/h2&gt;

&lt;p&gt;There are several enhancements that could make this system even more powerful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-label issue classification&lt;/li&gt;
&lt;li&gt;Automatic issue assignment to maintainers&lt;/li&gt;
&lt;li&gt;Slack and Discord notifications&lt;/li&gt;
&lt;li&gt;Advanced severity scoring&lt;/li&gt;
&lt;li&gt;OpenTelemetry traces and metrics alongside logs&lt;/li&gt;
&lt;li&gt;Historical trend analysis dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  These improvements would help transform the project from an automated workflow into a more production-ready AI operations platform.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;This was my first hackathon focused on observability and OpenTelemetry, and it pushed me far beyond simply building an automation workflow.&lt;/p&gt;

&lt;p&gt;While building the project, I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How OpenTelemetry logs are structured&lt;/li&gt;
&lt;li&gt;How to export telemetry from n8n workflows&lt;/li&gt;
&lt;li&gt;How to visualize AI-agent activity in SigNoz&lt;/li&gt;
&lt;li&gt;How observability helps debug automation workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most challenging part was debugging telemetry payloads and fixing workflow data flow issues, but solving those problems helped me better understand production-grade AI systems.&lt;/p&gt;

&lt;p&gt;One of the most satisfying moments during the project was seeing the first log appear inside SigNoz after hours of debugging Docker permissions, OpenTelemetry payloads, and workflow issues.&lt;/p&gt;

&lt;p&gt;Until that point, I wasn't sure whether the problem was in n8n, the collector, networking, or the telemetry payload itself.&lt;/p&gt;

&lt;p&gt;When the log finally appeared, it confirmed that the entire path—from GitHub → n8n → Gemini → SigNoz—was working end to end.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The biggest lesson from this project is that AI agents should not operate as black boxes.&lt;/p&gt;

&lt;p&gt;Automation is useful, but observability is what makes automation trustworthy.&lt;/p&gt;

&lt;p&gt;By combining GitHub, Gemini AI, n8n, OpenTelemetry, and SigNoz, I was able to build a workflow that not only performs automated issue triage but also provides visibility into every important decision it makes.&lt;/p&gt;

&lt;p&gt;If you're building AI agents, don't stop at automation—make them observable.&lt;/p&gt;

&lt;p&gt;For me, the most valuable part of this project was learning that observability is not something you add later. It becomes essential the moment an AI workflow starts making decisions automatically.&lt;/p&gt;

&lt;p&gt;This project gave me hands-on experience with OpenTelemetry, SigNoz, AI orchestration, and debugging distributed workflows, making it one of the most educational projects I have built so far.&lt;/p&gt;

</description>
      <category>signoz</category>
      <category>observability</category>
      <category>ai</category>
      <category>n8nbrightdatachallenge</category>
    </item>
  </channel>
</rss>
