feat: triage and detect duplicates via github actions#1422
feat: triage and detect duplicates via github actions#1422
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds automated AI-powered issue triage capabilities to the repository through GitHub Actions. When new issues are opened, the system automatically attempts to classify them by product and detect potential duplicates, improving response times and reducing duplicate work.
Changes:
- Added GitHub Actions workflow that triggers on new issues to perform automated triage and duplicate detection in parallel
- Implemented AI-powered product labeling using Claude Haiku to automatically tag issues with appropriate product labels or "needs-triage"
- Implemented duplicate detection system using Claude Sonnet that searches past 18 months of issues, identifies potential duplicates, and posts informative comments with related issue context
- Updated issue templates to include new product categories (API, Calendar, Home, Publishing, Registrations) for consistency with automated labeling
Reviewed changes
Copilot reviewed 7 out of 9 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Defines project dependencies for Anthropic SDK and GitHub Actions toolkit |
| package-lock.json | Locks dependency versions for reproducible builds |
| .gitignore | Excludes node_modules, environment files, and logs from version control |
| .github/workflows/issue-triage.yml | Defines two parallel jobs for product labeling and duplicate detection on issue creation |
| .github/scripts/label-product.js | Uses Claude AI to classify issues by product and apply appropriate labels |
| .github/scripts/detect-duplicates.js | Searches for duplicate issues using keyword extraction and AI comparison, then posts findings as comments |
| .github/ISSUE_TEMPLATE/general_api_question.md | Updated product list to match valid labels used by automation |
| .github/ISSUE_TEMPLATE/feature_request.md | Updated product list to match valid labels used by automation |
| .github/ISSUE_TEMPLATE/bug_report.md | Updated product list to match valid labels used by automation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
.github/scripts/label-product.js
Outdated
| "People", | ||
| "Publishing", | ||
| "Registrations", | ||
| "Resources", |
There was a problem hiding this comment.
I saw we removed "Resources" from the template in a commit. Do we also want to remove it here?
zanebliss
left a comment
There was a problem hiding this comment.
This is cool! Outside of a couple of questions/observations, I wonder about cost tracking. In Natural Language Lists, we utilized cost tracking through AWS Bedrock. In this situation, are we okay with it living in the Anthropic console?
Yes, I believe so. There is a cap on the spend on the specific key and if we need to modify it we can go from there. |
As issues are created, this will, in parallel
needs-triageif one can't be specified reliably) by applying a label onto the issue. Uses Haiku for cost and speedOn a local test run on the data from issue #1399, it correctly labeled the issue as
Publishingand output this from its duplicate detection (everything after[DRY RUN]would be added as an issue comment).Potentially Related Issues
I found some existing issues that may be related to this one. Please check if any of them address your question before waiting for a response:
🟣 #1350 — Publishing Episode Creation – sermonaudio and art parameters "hash" value (Closed)
Summary: This issue describes the same core problem: attempting to attach uploaded files (audio or artwork) to Publishing episodes results in 500 errors. The user discovered that the documented file upload process returns MD5 hashes or file IDs that cannot be used with episode creation/updates, and that a special 'signed_identifier' value from an undocumented endpoint is actually required.
Key discussion points:
Resolution: Staff acknowledged this is not currently supported via the API and added it to the engineering backlog. The issue was closed, but the functionality remains unavailable. The recommended workaround is to host files externally and reference them via URL rather than uploading through the API.
This comment was generated automatically. If none of these match your issue, no action is needed — a team member will review your issue soon.