Git AI
Team Usage

Team Hierarchy

Upload a single CSV that defines your entire org chart so Git AI reports can be scoped by team.

Git AI can automatically create a report for every team in your company, and roll them up by groups and departments.

How uploads work

Org charts are uploaded as a CSV. Every upload is a full snapshot of your entire org. We suggest scheduling a daily or weekly sync, or using a Git AI plugin to pull the data on a schedule.

Uploads are atomic. The whole file validates and applies together, or nothing does.

A partial upload is never accepted, so a malformed row can't leave your org half-updated.

We suggest giving this page to your coding agent and having it map an export from your HR or SCM system — or its API calls — to the format below.

CSV format

There's one format, with five columns:

ColumnDescription
team_idA stable identifier you assign. Keep it constant across uploads even if the team is renamed — the API and dashboard reference teams by this ID, so it survives name changes and name collisions.
team_nameThe display name for the team.
team_lead_emailThe manager of the team. One per team.
parent_reference_idThe team_id of this team's parent. One per team. Leave blank for a top-level team.
membersComma-separated list of member emails. Can be blank (see rollup groups).

The team_lead_email and members cells must use the name-qualified format Employee Name <person@test.com>. A bare address like person@test.com is not accepted — the display name is required so contributors resolve cleanly.

Here's a small org laid out as a table:

team_idteam_nameteam_lead_emailparent_reference_idmembers
team2Product XManager 11 <manager11@test.com>
team3Product YManager 15 <manager15@test.com>
team5US EngineeringManager 20 <manager20@test.com>
team1iOSManager 5 <manager5@test.com>team2Person 1 <person1@test.com>, Person 2 <person2@test.com>
team4iOSManager 6 <manager6@test.com>team3Person 3 <person3@test.com>, Person 4 <person4@test.com>

And the same data as the raw CSV you'd upload:

team_id,team_name,team_lead_email,parent_reference_id,members
team2,Product X,Manager 11 <manager11@test.com>,,
team3,Product Y,Manager 15 <manager15@test.com>,,
team5,US Engineering,Manager 20 <manager20@test.com>,,
team1,iOS,Manager 5 <manager5@test.com>,team2,"Person 1 <person1@test.com>, Person 2 <person2@test.com>"
team4,iOS,Manager 6 <manager6@test.com>,team3,"Person 3 <person3@test.com>, Person 4 <person4@test.com>"
Download example file

In this example Product X and Product Y are parent teams. The two iOS teams — same display name, different team_ids — roll up under different parents, which is why stable IDs matter. US Engineering has no members, so it's a rollup group.

Rules

Your mapping job should check each of these before it uploads:

  • Exactly one manager per team. team_lead_email holds a single address.
  • Exactly one parent per team. parent_reference_id points at one team_id, or is blank for a top-level team.
  • A team with no members is a rollup group. Leave members blank for grouping tiers like US Engineering or Global Eng. On the dashboard, a rollup group shows a team leaderboard — a comparison across the teams beneath it — rather than a single team dashboard.
  • Team IDs are stable keys. Changing them may break downstream integrations via the API.

Manager role

Anyone listed as team_lead_email on any team is granted the Manager role in Git AI. Managers who also write code have their own contributions counted inside their team's dashboard — being the lead doesn't remove you from your team's numbers.

Uploading

Load the snapshot one of two ways:

  • Enterprise admin API — post the CSV to the org-chart upload endpoint. Use this for the scheduled job that keeps your hierarchy in sync with your HR system.
  • Dashboard upload form — upload the CSV by hand from the admin settings. Good for the first load and for one-off corrections.