dotCMS / dotCMS/core

feat: implement AI-powered smart router to assign team ownership to unplanned GitHub issues

Open
#36,101 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

stale Team : Maintenance
Dominant language
Java
Stars
970
Forks
486
Avg merge
3d 33m
Merged PRs (30d)
170

Description

Background

It is healthy and encouraged for contributors outside of defined team planning cycles to open PRs and issues — it's a sign of broad engagement and cross-team velocity. However, it creates a practical gap: these contributions arrive without a defined owner, which leads to missed QA and accountability issues if not addressed.

This issue proposes a lightweight routing solution to bridge that gap.

Problem

GitHub issues submitted by contributors outside of sprint planning end up unowned. Without a team assignment, they may go through merge and release without scheduled QA. The current ad-hoc ownership model is not sustainable.

Proposal

Build a routing workflow that:

  1. Detects unplanned GitHub issues from contributors not belonging to a defined team
  2. Analyzes content (title, description, labels, linked PRs) to determine the appropriate owning team
  3. Applies a team label to the issue (labels are for issues only — PRs are not labeled with team tags)
  4. Sends a Slack notification to the assigned team, letting them know a new issue has been routed to them

Role of dotcms-aios

dotcms-aios should serve as the source of truth for the context used to make routing decisions — team definitions, ownership pillars, domain boundaries, etc. The routing logic itself may live elsewhere (e.g. a GitHub Action or a separate agent), but it should consume context from dotcms-aios.

Example ownership mappings:

  • UVE-related → Scout
  • Analytics-related → Falcon
  • Auth, sessions, cache/Redis → Platform
  • FE-only → available FE bandwidth (e.g. support rotation)

Acceptance Criteria

  • Team ownership mappings and domain context are documented in dotcms-aios
  • A routing agent analyzes an issue and outputs a team assignment with reasoning
  • The correct team label is applied to the issue (issues only, not PRs)
  • A Slack notification is sent to the assigned team channel when an issue is routed to them
  • Routing decisions are explainable — the agent states why it picked a team
  • Issues outside all team scopes (experimental, infra-only, etc.) are flagged separately rather than forced into a team

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the team definitions, ownership pillars, and domain boundaries in dotcms-aios, then trace how unplanned GitHub issues could be detected and routed. Done means an explainable team assignment, the correct issue-only label, a Slack notification, and separate handling for issues outside team scopes.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, github-actions
Domain
ci-cd, devops, documentation, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.