<?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: Ignacio Joaquin Sanga Olmos</title>
    <description>The latest articles on DEV Community by Ignacio Joaquin Sanga Olmos (@elnachto).</description>
    <link>https://dev.to/elnachto</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%2F4151312%2Fde34d978-4615-4bbd-8126-dc0e94363493.jpg</url>
      <title>DEV Community: Ignacio Joaquin Sanga Olmos</title>
      <link>https://dev.to/elnachto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elnachto"/>
    <language>en</language>
    <item>
      <title>laya-triage is in Hacktoberfest: free, local AI triage for GitHub issues</title>
      <dc:creator>Ignacio Joaquin Sanga Olmos</dc:creator>
      <pubDate>Thu, 01 Oct 2026 13:30:00 +0000</pubDate>
      <link>https://dev.to/elnachto/laya-triage-is-in-hacktoberfest-free-local-ai-triage-for-github-issues-1l8f</link>
      <guid>https://dev.to/elnachto/laya-triage-is-in-hacktoberfest-free-local-ai-triage-for-github-issues-1l8f</guid>
      <description>&lt;p&gt;Every popular repository has the same problem: new issues pile up faster than maintainers can read them, and many end up mislabeled or go unaddressed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;laya-triage&lt;/strong&gt; is a GitHub Action that reads each new issue and labels it as a bug, feature request, question, or documentation problem. If a bug report is almost empty, it asks the author for the missing details. It runs a fine-tuned open-weight model inside your own GitHub Actions runner: no API key, no cost, and the issue text never leaves GitHub.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/elnachto/laya-triage" rel="noopener noreferrer"&gt;https://github.com/elnachto/laya-triage&lt;/a&gt;&lt;br&gt;
🛒 &lt;strong&gt;Marketplace:&lt;/strong&gt; &lt;a href="https://github.com/marketplace/actions/laya-triage" rel="noopener noreferrer"&gt;https://github.com/marketplace/actions/laya-triage&lt;/a&gt;&lt;br&gt;
🤗 &lt;strong&gt;Models:&lt;/strong&gt; &lt;a href="https://huggingface.co/elnachto/laya-triage-en" rel="noopener noreferrer"&gt;https://huggingface.co/elnachto/laya-triage-en&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it in one minute
&lt;/h2&gt;

&lt;p&gt;Create &lt;code&gt;.github/workflows/triage.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Triage&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;triage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;elnachto/laya-triage@v1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It starts in dry-run mode, so it prints decisions only in the workflow log. When you like what you see, set &lt;code&gt;dry-run: "false"&lt;/code&gt;. There are more ready-to-copy workflows in &lt;a href="https://github.com/elnachto/laya-triage/tree/main/docs/examples" rel="noopener noreferrer"&gt;&lt;code&gt;docs/examples/&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it was built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tuning:&lt;/strong&gt; I fine-tuned the open &lt;a href="https://github.com/NandhaKishorM/laya" rel="noopener noreferrer"&gt;Laya&lt;/a&gt; decision model on 1 million real issues from the NLBSE'23 benchmark, on my own GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My own dataset:&lt;/strong&gt; I collected recent issues (2025–2026) from thousands of active repositories and kept only the labels a maintainer applied, not the ones added automatically by issue templates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest measurement:&lt;/strong&gt; separate exams that were never used for tuning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;88.8%&lt;/strong&gt; accuracy on NLBSE'23, within the margin of the RoBERTa research baseline (89.1%).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;79.8%&lt;/strong&gt; on 10,026 recent issues from 288 active repositories, ahead of Jev (78.1%), a paid commercial API.&lt;/li&gt;
&lt;li&gt;It adapts to each repository: it reuses your existing label names (&lt;code&gt;type: bug&lt;/code&gt;, &lt;code&gt;kind/feature&lt;/code&gt;…) and learns how common each issue type is from the issues you labeled in the last year.&lt;/li&gt;
&lt;li&gt;It never overrides a label you or your issue template already set.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to jump in
&lt;/h2&gt;

&lt;p&gt;Some &lt;code&gt;good first issue&lt;/code&gt; tasks are still open, and none of them needs a GPU:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a CI workflow for the template tests.&lt;/li&gt;
&lt;li&gt;Unit tests for the repository-adaptation logic.&lt;/li&gt;
&lt;li&gt;Translate the README to Spanish.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most valuable contribution of all: &lt;strong&gt;install it in your repo and tell me when it gets a label wrong&lt;/strong&gt; (there’s an issue form for that). Those reports are the training data for the next model.&lt;/p&gt;

&lt;p&gt;Please read the &lt;a href="https://github.com/elnachto/laya-triage/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;contributing guide&lt;/a&gt; and leave a comment on an issue prior to beginning. A big thank you to the first contributors who have already submitted pull requests! Happy Hacktoberfest 🎃&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>ai</category>
      <category>github</category>
    </item>
  </channel>
</rss>
