Skip to content
md ~/projects/llm-issue-triage
Remembering Atatürk with Respect and Longing

November 10 · 88th anniversary

Remembering Atatürk with Respect and Longing

Mustafa Kemal Atatürk, founder of the Republic of Turkey, passed away at 09:05 on 10 November 1938 at Dolmabahçe Palace in Istanbul. Every year at this time the whole country stands in silence.

Keeping alive the Republic he entrusted to us is a duty we all share.

My humble body will one day turn to dust, but the Republic of Turkey will stand forever.Mustafa Kemal Atatürk
Project archive

2026Live

LLM Issue Triage

  • TypeScript
  • GitHub Actions
  • Node.js
  • Gemini API
  • Embeddings
  • zod
  • esbuild
  • Vitest

Overview

A GitHub Action that triages new GitHub issues automatically with AI. It labels each issue by type and priority with the repository's own labels, finds duplicate issues with embedding similarity, asks for missing bug details and writes the result as a single comment. It runs on a free Gemini key or any OpenAI-compatible API and is published on GitHub Marketplace.

01 · Problem

Issues in open source projects arrive unsorted: no labels, unclear priority, the same bug reported twice, bug reports without a version or steps. Maintainers have to read and label every issue by hand and keep asking the same questions.

02 · Solution

I built an Action that runs on every new issue. A chat model returns type, priority, labels and missing details in one request following a JSON schema; the answer is validated with zod and filtered against the repository's real labels. Duplicates are found among the last 100 issues with embeddings and cosine similarity. Because anyone can write an issue in a public repository, the issue text is passed as data to resist prompt injection, the comment is built from a template, and mentions and links are neutralised.

03 · Outcome

Published on GitHub Marketplace and triaging its own repository's issues. In the live trial it labelled Turkish and English issues correctly, found the duplicate bug and did not follow the injection attempt. The project has 137 automated tests, and every security guard was verified by breaking it on purpose and watching a test fail.