Maturity Report

Understand how a service's level is calculated and how you can improve it.


When viewing a service in OpsLevel, the Maturity Report tab provides detailed information about that service’s level. You can use it to answer questions like:

  • Why is my service in the Bronze level?
  • How is my service doing in the Security category?
  • How is my service performing against Scorecards?
  • How can I bring my service up to the next level?
The Maturity Report gives a visual explanation of why a service has a certain level

The Maturity Report gives a visual explanation of why a service has a certain level

What’s a Service Level?

Every service in OpsLevel is assigned a level indicating how mature it is. The definition of mature varies from company to company, so OpsLevel lets you fully customize how services are graded against the rubric and Scorecards. For example, a service could be assigned a low level because it has poor test coverage or a high number of security vulnerabilities. Another service could be assigned a high level because it has great test coverage and zero security vulnerabilities. The number and names of your service levels are configurable within your account.

The Current Level section of the Maturity Report card shows the service’s overall level as defined by the rubric (Note: Scorecards don't impact overall Service Level). In this example, the service is currently in the Bronze level.

Current Level

The Checks section provides detailed information about how the service is performing against the individual standards laid out in your rubric and scorecards, via checks. It can be used to figure out why your service is at a certain level and how much work is needed to move on to the next level.

The progress bar at the top shows how far up the ladder of levels your service has progressed. The section below shows the passing and failing checks for the service, grouped by level.


Calculating a Service’s Level

In the image above, the service is passing all checks in the Bronze level. It’s failing a check in the Silver level. Since the service is working towards the Silver level but hasn’t achieved it yet, the current level of the service is Bronze. Once the service passes the failing check, it will achieve the Silver level.

For a service to achieve a given level, it must pass all checks in that level and all levels below.

In addition to having an overall level, a service has levels for each of the different categories from the rubric as well as scorecards applied to the service. The category levels are calculated in the same way as the overall level but instead of considering all checks, OpsLevel will only look at checks for that specific category.

The Rubric section shows this information with the categories as rows and the levels as columns. Hovering over a cell will display the level for that category.

Recall the example from earlier where the service has a failing check in the Gold level. Since this failing check belongs to the Security category, the service has a Silver level in Security. This Silver in Security is holding the service back from achieving an overall level of Gold.

The Scorecards section shows this information with the individual scorecards as rows and the levels as columns. Hovering over a cell will display the level for that scorecard.

You can toggle each Rubric category or Scorecard in the Service Maturity card to control the overall level and check results displayed in the Checks card.

Improving a Service’s Level

In order to move on to the next level, the service must pass all failing checks in that level. The amount of work involved in fixing a failing check depends on the type of check.

Simple checks like Tool Usage checks can be fixed directly from the Maturity Report. Clicking the ‘Fix This’ button will let you add a tool to the service.

Failing Check Tool

More advanced checks like Repo File checks could require a code change to fix. The check notes can provide more info about how to fix. For example, this ‘Ruby Version >= 2.6.0’ check can be fixed by upgrading to Ruby 2.6 or 2.7.

Failing Check Repo File