Skip to main content

AI Adoption

The Configuration section responsible for data on AI tool usage: commit recognition patterns, the visibility toggle, and mapping accounts from telemetry. The charts themselves and how to read them are described in AI Adoption in the Features section.

The purpose of the module is to replace declarations and license counts with measurable data: how much work was produced with AI involvement, how many people actually use it, how much it costs, and whether changes made with the help of AI stay in the code.

Two data sources, two different requirements

The choice of source determines how much work the deployment requires.

SourceWhat it providesWhat it requires
Commit recognitionsplits Calories and commits into those produced with AI and withoutnothing, it works on data Q247 already collects
AI tool telemetrywork time, token count, cost, number of generated linestelemetry export in the AI tool and the Enterprise Plugin

The first source relies on recognizing, in commit messages, trailers that indicate AI tool involvement, for example Co-Authored-By: Claude. It requires no integration or changes to repositories. If you only care about the proportion of work done with AI, it is enough to turn on visibility and stop there.

The second source is telemetry in the OpenTelemetry standard, reported by the AI tool. It accounts for costs and token usage, and its deployment, variants, and prerequisites are described in AI tool logs in Integrations.

Both sources are joined at the user level, by email address. This is why account mapping is a separate deployment step, and without it, telemetry has no account to attach to.

Commit messages as a data source

This source works on data Q247 collects anyway, so it depends solely on the content of the commit message.

Pattern matching

Q247 searches the commit message (its title and body, including the footer) for text from the pattern list. Matching rules:

  • Text fragment: the pattern matches when it occurs anywhere in the message. It does not have to start or end a line.
  • Case insensitive: Co-Authored-By: Claude and co-authored-by: claude match the same way.
  • First match decides: patterns are checked in the order of the list, and the commit gets the tool label from the first matched pattern. A commit tagged by two tools at once is therefore assigned to only one of them.
  • Any text after the pattern does not interfere: the pattern Co-authored-by: Copilot also matches the line Co-Authored-By: Copilot GPT 4.5, so appending the model name and version does not break recognition.

A pattern can also be a regular expression, if a plain text fragment is not enough.

Trailers recognized by default

ToolPattern
Claude CodeCo-Authored-By: Claude
Claude CodeGenerated with Claude Code
GitHub CopilotCo-authored-by: Copilot
CursorCo-authored-by: Cursor Agent
AiderCo-authored-by: aider
DevinCo-authored-by: Devin AI
OpenAI CodexCo-authored-by: Codex

Most of them are standard Git trailers, that is lines in the commit message footer, appended automatically by the tool.

Enforcing the trailer in AI tool instructions

AI tools do not always append the trailer, and not all of them do. A commit without a trailer looks to Q247 like an ordinary human commit, so every such case understates the share of work done with AI. The most reliable solution is to add this requirement to the main prompt (the file with instructions for the tool, for example CLAUDE.md or copilot-instructions.md), so that it applies in every repository:

## Git workflow
Every commit message MUST end with a blank line followed by the `Co-Authored-By` trailer. Append the model type and version after `Copilot` (e.g. `GPT 4.5`):

Co-Authored-By: Copilot GPT 4.5

No exceptions. This applies to version bumps, hotfixes, and one-line commits.

Appending the model name and version after the tool name is also beneficial: the pattern still matches, and the repository history itself retains the information on which model made the change.

Recognition works retroactively

Patterns are also applied to commits already collected, so the split between work with AI and without appears immediately after turning the feature on, without waiting for new commits. Adding a pattern later recalculates the history again.

Settings in Q247

Commit patterns recognized as AI work

The visibility toggle

The "Show AI adoption" toggle controls the visibility of the widget on the dashboards. Data collection works independently of it: while the toggle is off, data still flows in and is processed, and the widget stays hidden. Turning it on later therefore also shows the history.

Pattern table

The pattern table is an editable list of the trailers described above. The columns are the tool, the text pattern, and an activity toggle, and the default entries can be turned off or changed.

It is worth extending the list if the team uses a tool outside the default seven patterns or applies its own tagging convention. This requires no changes on the repository side.

LimitValue
Maximum number of patterns100
Ordermatters, the first match wins

Mapping accounts from telemetry

The AI tool identifies the user by the email address configured locally on their computer. This address is not always the same one the person's account has in Q247, and without a match, telemetry has no account to attach to.

Matching addresses are mapped automatically and require no action. The "Unmapped AI tool users" section shows cases that need attention, in two categories:

CategoryWhat it meansWhat to do
Unmatched addresstelemetry arrived, but could not be linked to any Q247 accountpoint out the link manually
Address without dataa link exists, but no telemetry has been recorded from this addresscheck whether the address contains a typo

The "Go to Users and teams" shortcut leads directly to account mapping, described in Users And Teams.

Wait a day or two before you start mapping

Right after launch, the list of unmatched addresses is incomplete, because telemetry is only just starting to come in. Reviewing it after one or two business days saves you from repeating the same work.

Verification

  1. Commit patterns: the split between work with AI and without should appear immediately, because it works on historical data.
  2. Telemetry: the timing of the first data depends on the variant, and it is described in AI tool logs.
  3. List of unmatched addresses: review after one or two business days and complete the links.
  4. Addresses without data: an entry remaining in this category after a few days points to an error in the address, not to a lack of activity.

See also