GitLab
A single application for the entire DevOps lifecycle
GitLab Professional Services
Accelerate your software lifecycle with help from GitLab experts
Popular GitLab use cases
Remote Work Continuous Integration (CI/CD) Source Code Management (SCM) Out-of-the-box Pipelines (Auto DevOps) Security (DevSecOps) Agile Development Value Stream ManagementGitLab
A single application for the entire DevOps lifecycle
GitLab Professional Services
Accelerate your software lifecycle with help from GitLab experts
Popular GitLab use cases
Remote Work Continuous Integration (CI/CD) Source Code Management (SCM) Out-of-the-box Pipelines (Auto DevOps) Security (DevSecOps) Agile Development Value Stream ManagementKPI | Health | Status |
---|---|---|
Capital Efficiency Ratio | Unknown |
|
Gross margin | Unknown |
|
Average Days Sales Outstanding (DSO) | Unknown |
|
Runway | Unknown |
|
ARR by Annual Cohort | Unknown |
|
Capital Consumption vs Plan | Unknown |
|
IACV per Capital Consumed by calendar month. Capital Efficiency Ratio = IACV/Capital Consumed. IACV is sourced from SFDC and Capital Consumed is sourced from Netsuite.
Target: GitLab's target is to be > 2. The target will change in the future when GitLab is no longer in the capital consumption phase.
Chart (Sisense↗)
Status: Unknown
Gross margin is defined as total revenue less cost of revenues as defined by GAAP and reported in the Company's financial statements.
Target: Our long term gross margin target is 85% but is dependent on the revenue mix between products - self managed and gitlab.com and professional services.
This KPI cannot be public.
URL(s)
Status: Unknown
Average Accounts Receivable balance over prior 3 months divided by Total Contract Value (TCV) bookings over the same period multipied by 90 that provides an average number of days that customers pay their invoices. The accounts receivable data is sourced from Netsuite and the TCV data is sourced from SFDC.
Target: the median DSO for SAAS companies is 76 days. Our target at GitLab is 45 days.
Chart (Sisense↗)
Status: Unknown
Runway is defined as the number of months based on cash balance plus available credit divided by average cash burn. The analysis can be found on the Finance Dashboard. Cash data is sourced from Netsuite.
Target: Our target is that this metric is always greater than 12 months.
This KPI cannot be public.
URL(s)
Status: Unknown
ARR can be sliced many different ways for analysis. In the ARR by Cohort analyses, we look at ARR by the Fiscal Year Cohort. That analysis can be found on the Finance Dashboard. The data for ARR by Annual Cohort is sourced from SFDC and Zuora.
This KPI cannot be public.
URL(s)
Status: Unknown
TCV less Total Operating Expenses. This metric tracks net cash consumed excluding changes in working capital (i.e. burn due to balance sheet growth). Since the growth in receivables can be financed using cheap debt instead of equity this is a better measure of capital efficiency than cash burn. Capital Consumed is sourced from Netsuite.
This KPI cannot be public.
URL(s)
Status: Unknown
Level | Meaning |
---|---|
Okay | The KPI is at an acceptable level compared to the threshold |
Attention | This is a blip, or we’re going to watch it, or we just need to enact a proven intervention |
Problem | We'll prioritize our efforts here |
Unknown | Unknown |
Level | Meaning |
---|---|
Okay | We are correctly capturing and measuring data for GitLab.com and self-managed instances. |
Attention | Missing one of: GitLab.com or self-managed data. |
Problem | Missing both: GitLab.com and self-managed data. |
Unknown | Unknown |
Pages, such as the Engineering Function Performance Indicators page are rendered by an ERB template that contains HTML code.
Other PI Pages
sectionmaturity
table, make changes to the Performance Indicators Maturities ERB fileThese ERB templates calls custom helper functions that extract and transform data from the Performance Indicators data file.
kpi_list_by_org(org)
helper function takes a required string argument named org
(deparment or division level) that returns all the KPIs (pi.is_key == true) for a specific organization grouping (pi.org == org) from the Performance Indicators data file.pi_maturity_level(performance_indicator)
helper function automatically assigns a maturity level based on the availability of certain data properties for a particular PI.pi_maturity_reasons(performance_indicator)
helper function returns a reason
for a PI maturity based on other data properties.performance_indicator_target(name)
helper function returns the target value from the target
property for a specific PI from the Performance Indicators data file.performance_indicators(org)
takes a required string argument named org
(deparment or division level) that returns two lists - a list of all KPIs and a list of all PIs for a specific organization grouping (department/division).signed_periscope_url(data)
takes in the sisense_data property information from the Performance Indicators data file and returns a signed chart URL for embedding a Sisense chart into the handbook.The heart of pages like this is the Performance Indicators data file which is in YAML file. Each - denotes a dictionary of values for a new (K)PI. The current elements (or data properties) are:
Property | Type | Description |
---|---|---|
name |
Required | String value of the name of the (K)PI |
base_path |
Required | Relative path to the performance indicator page that this (K)PI should live on |
definition |
Required | refer to Parts of a KPI |
parent |
Optional | should be used when a (K)PI is a subset of another PI. For example, we might care about Hiring vs Plan at the company level. The child would be the division and department levels, which would have the parent flag. |
target |
Required | The target or cap for the (K)PI. Please use Unknown until we reach maturity level 2 if this is not yet defined. |
org |
Required | the organizational grouping (Ex: Engineering Function or Development Department) |
is_key |
Required | boolean value (true/false) that indicates if it is a (key) performance indicator |
health |
Required | has two additional elements/property - level (inclusive value between 0-3) and reasons. This should be updated monthly before Key Meetings by the DRI. |
urls |
Optional | list of urls associated with the (K)PI |
sisense_data |
Optional | contains elements/properties related to Sisense, including chart (numeric Sisense widget ID), dashboard (numeric Sisense dashboard ID), shared_dashboard (Sisense shared dashboard ID), embed (v2) |
public |
Optional | boolean flag that can be set to false where a (K)PI does not meet the public guidelines. |
instrumentation |
Optional | has two additional elements/property - level (inclusive value between 0-3) and reasons. This should be updated monthly before Key Meetings by the DRI. |
Here are some additional tips:
shared_dashboard
, chart
, and the dashboard
key-value pairs to the Performance Indicators data file under the sisense_data
property:
in strings as it's an important character in YAML and will confuse the data parsing process. Put the string in "quotes" if you really need to use a :
urls:
should be an array (indented lines starting with dashes) even if you only have one urlmaturity.level
and health.level
display a value between 0 and 3 (inclusive). The health value is a manual input while the maturity is an automated value based on other discrete (K)PI data properties.