open-source · practically free · zero maintenance

End the
Duplicate Issue
Triage Nightmare.

An autonomous, cloud-native GitHub Action that leverages semantic embeddings and vector databases to identify duplicate bug reports. Bring your own keys; we handle the automation.

The Stack

Enterprise AI. Microscopic costs.

OpenAI API
~$0.0001 / issue

Uses text-embedding-3-small. Processing a massive 4,000-word issue costs a fraction of a single cent.

Pinecone DB
2M vectors / free

Lightning-fast cosine similarity search. The Serverless Free Tier holds up to 2,000,000 issues forever without a credit card.

GitHub Actions
Free on public

Containerized execution runs natively in your repository. Zero external servers to manage, deploy, or maintain.

The Data Pipeline

See exactly how the engine processes data from the moment a user hits "Submit new issue."

1

Smart Extraction

The bot extracts up to 4,000 words from the issue Title and Body. Built-in regex automatically strips out markdown and massive code blocks, ensuring the AI evaluates only the core human intent.

2

Semantic Translation

The cleaned text is sent securely to OpenAI, which converts the vocabulary into a 1,536-dimensional coordinate vector. This neutralizes differences in wording (e.g., "log in" vs. "authentication").

3

Search & Flag

Pinecone executes a Cosine Similarity search against your repository's memory index. If a past issue matches with > 65% similarity, the bot posts a friendly comment flagging it for human review.

Ready to automate your repo?

Copy this workflow into .github/workflows/duplicate-checker.yml to activate the AI.

.github/workflows/duplicate-checker.yml
name: Issue Duplicate Checker

on:
  issues:
    types: [opened, edited]

jobs:
  check-duplicates:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Run AI Duplicate Detector
        uses: Shashank-8p/issue-detector@main
        with:
          openai_api_key: ${{ secrets.OPENAI_API_KEY }}
          pinecone_api_key: ${{ secrets.PINECONE_API_KEY }}
          pinecone_index_name: ${{ secrets.PINECONE_INDEX_NAME }}
          github_token: ${{ secrets.GITHUB_TOKEN }}