As part of GitClear's suite of AI ROI tools, support for many LLMs is bundled into the basic GitClear subscription: Claude Code, Github Copilot, Cursor, Gemini and Augment Code can all be connected to retrieve per-developer detail about how much AI is being used.


One challenge to presenting robust AI team measurements is to ensure that GitClear can detect the connection between the developers reported by your Git provider (e.g., Github, Gitlab, Bitbucket, Azure) and your AI provider. In general, GitClear is able to handle this automatically by using a set of heuristics that checks for a match of "email address," "committer name," and other fields. However, sometimes the git provider does not supply a committer email address to GitClear, or the committer has cleared out their "Full name" field in git.


In cases where there are hundreds of committers associated with an AI provider account, it can sometimes be necessary (or advantageous) to explicitly specify which AI identity belongs to which committer. This page describes the options available to make an explicit connection between "committer" and "AI user"


link1. Mapping committers from the settings page

The fastest way to connect a small or moderate number of committers is from the Settings → AI Provider Committer Mapping page:


The AI Provider Committer Mapping page allows specifying AI identity for an unknown committer


That page shows a paginated table of every committer GitClear knows about for the current entity. Each row has:

The committer's full name, user name, and email (as reported by their commits)

A column for each AI provider you've connected — for example Cursor, Anthropic, Claude Code, Gemini, Augment

A searchable dropdown in each provider column, listing the identities that provider has reported but not yet attached to a committer


To create a mapping:

Find the committer you want to connect (use the search box at the top of the table — it matches against full name, user name, and email).

In the column for the AI provider, open the dropdown and choose the provider-reported identity that belongs to that developer.

The mapping saves immediately. A confirmation pill appears in the row, with an Undo link in case you picked the wrong identity.


When the dropdown for a provider is empty, it means the provider has not yet reported any unattached identities. Run a fresh AI provider sync (or wait for the next scheduled one) and the new identities will appear here.


link2. Mapping committers in bulk by CSV upload

For larger organizations — or when you already have a spreadsheet that maps your employees to their AI-tool identities — uploading a CSV is faster than clicking through the table. Use the Upload CSV Identity Map button on the same settings page.


The button to upload an identity map is located in upper-right corner of the "AI Provider Committer Mapping" settings page

linkCSV format

The CSV must contain exactly one committer column (identifying who the developer is in GitClear) and a provider_identity column (identifying who they are at the AI
provider).


Column

Required?

Description

committer_email

One of these three is required

The developer's email address as recorded in GitClear. Matched case-insensitively against any of the committer's nown email addresses.

gitclear_id

One of these three is required

The numeric committer.id from GitClear. Useful when you've already exported a committer list from GitClear and ant a guaranteed unambiguous match.

remote_id

one of these three is required

The committer's identity at their git provider (e.g. their GitHub login, GitLab username, Bitbucket account ID, or Azure DevOps identity)

provider_identity

required

The AI provider's identity string for the developer — typically an email, login, or opaque ID.

ai_provider

optional

The AI provider key (e.g. cursor_ai, anthropic_usage, claude_code_analytics, claude_code_telemetry, gemini_code, augment_code). Required when (a) the same provider_identity appears under more than one provider, or (b) the identity is not yet known to GitClear and a brand-new provider identity must be created.


Either commas or semicolons are accepted as the column separator, so spreadsheet exports that use the European-style ; delimiter will import without modification.


After upload, the file is processed in the background. You'll receive an email summarizing what was connected, what was skipped with a warning, and what failed with an error — row by row.


linkExample 1 — Matching by committer_email

This is the simplest format. Each row is "this email at GitClear is this person at Cursor."


committer_email,provider_identity,ai_provider
ada@example.com,ada.lovelace@cursor.test,cursor_ai
grace@example.com,grace.hopper@cursor.test,cursor_ai
linus@example.com,linus@anthropic.test,anthropic_usage


Use this format when your IT records key off of corporate email addresses.


linkExample 2 — Matching by gitclear_id

If you've exported the committer list from GitClear, you'll have unambiguous numeric IDs. Use these when developers share emails with bots, have multiple aliases, or when you want to be certain that the correct committer record is updated:

gitclear_id,provider_identity,ai_provider
8421,ada.lovelace@cursor.test,cursor_ai
8422,gracehopper,claude_code_analytics
8423,linus@anthropic.test,anthropic_usage


linkExample 3 — Matching by remote_id (with no ai_provider column)

If the developer's identity at their git provider (GitHub login, GitLab username, etc.) matches what's in your HR system, remote_id is a convenient join key. You can omit ai_provider when each provider_identity is already known to GitClear under exactly one AI provider:

remote_id,provider_identity
ada-lovelace,ada.lovelace@cursor.test
ghopper,grace.hopper@cursor.test
torvalds,linus@anthropic.test


linkExample 4 — Mixing identifiers and disambiguating providers

You can use whichever committer column makes sense per row — but only one column type per CSV. If the same provider_identity could match more than one connected AI provider (for example, the same email is reported by both Cursor and Anthropic), add the ai_provider column to disambiguate:


committer_email,provider_identity,ai_provider
ada@example.com,ada.lovelace@example.com,cursor_ai
ada@example.com,ada.lovelace@example.com,anthropic_usage
grace@example.com,ghopper,claude_code_analytics


linkWhat the import does row-by-row

Match found, not yet connected → the provider identity is attached to the committer.

Match found, but the same committer already has a different identity for that provider → the new row is merged into the existing mapping and the duplicate is removed.

provider_identity is brand new (the AI provider has not yet reported it) → a new identity is created for the committer, provided you supplied an ai_provider column so GitClear knows which service to attach it to.

Committer cannot be found, or the row is missing a value → the row is reported in the email summary as an error or warning; no other rows are affected.