← Back to projects

0-1 Creating the first DevSecOps platform

Role
Lead Designer
Team
1 PM, 2 EMs, 1 Staff Engineer
Result
$20M in net ARR over the next 2 years

TL;DR

Designed GitLab’s first comprehensive security object, unlocking enterprise adoption & revenue.

Situation

GitLab had basic security capabilities—vulnerabilities were transient, stored only in a list, and detected via open-source SAST tools. The company aimed to expand security offerings by adding Dependency Scanning, DAST, and a proprietary SAST tool, requiring a new system object for vulnerability management.

Task

Design and implement a scalable Vulnerability Object that:

  • Supports multiple security detection methods
  • Integrates into GitLab’s workflow
  • Provides tracking, auditing, and security-focused actions

Action

  • Defined an extensible schema through JTBD research with internal & external security professionals
  • Designed a security-first UI, adding audit logs, severity overrides, and evidence attachment
  • Created a Security Design Language, introducing security-specific icons & UI components
  • Transformed vulnerabilities into a structured issue type, integrating with GitLab’s existing system
  • Iteratively tested & refined the model through user feedback, challenging internal resistance

Result

  • First true DevSecOps product integrating security into DevOps at scale
  • $20M ARR generated in 2 years
  • Growth from 500 to 28,000 top-tier subscribers
  • Refined security workflows, making GitLab a stronger enterprise security solution

What could be improved?

  • Start with org-level security needs before asset-level solutions
  • Involve project management teams earlier for better alignment

Situation

GitLab’s security capabilities were limited to basic vulnerability detection via open-source SAST tools. Vulnerabilities were transient, not stored in a database, and lacked auditing, making security management inefficient. As GitLab expanded its security offerings with Dependency Scanning, DAST, and a proprietary SAST tool, a scalable vulnerability management system was required to support multiple detection methods, provide better tracking, and integrate seamlessly into GitLab’s workflow.

The challenge was to create a scalable and extensible vulnerability management system while balancing engineering feasibility, user experience, and GitLab’s existing capabilities.

Task

The goal was to design and implement a new Vulnerability Object that:

  • Supports multiple security detection methods and scales over time.
  • Integrates into GitLab’s ecosystem, leveraging existing components.
  • Provides structured tracking, audit logs, and user-driven security actions.
  • Ensures security professionals can manage vulnerabilities effectively with the right tools and workflows.

I broke the work down into themes to ensure the team could do as much in parallel as possible.

Action

1. Understanding the space

To ensure a well-informed approach, I conducted a JTBD study with five internal security professionals and ten external users to understand how vulnerabilities were currently being managed and what improvements were necessary. I immersed myself in the security space by attending AppSec team meetings, webinars, and discussions to gain deeper insights into industry practices. This research helped clarify the pain points security teams faced when handling vulnerabilities and informed the approach to designing a scalable system.

System flow diagram used to align on the proposed changes

2. Defining an extensible schema & system integration

With a deeper understanding of the space, I collaborated closely with engineers and AppSec teams to define an extensible vulnerability schema. Initially, the existing scheme only supported data from a few open-source analyzers, limiting flexibility. Through research, we discovered that security teams needed the ability to override severity ratings, maintain an audit log of actions, and attach evidence to vulnerabilities. We worked to refine the data structures, ensuring that the model was both scalable and adaptable for future enhancements.

Object schema, connecting required data with existing data from GitLab

At the same time, I worked with engineering to evaluate GitLab’s existing issue tracking system and determine how the vulnerability object could be integrated without disrupting current workflows. This led to necessary modifications in system architecture, including changes to how vulnerabilities were stored and linked to projects. We designed and tested modal updates that improved the experience for security workflows, ensuring that security professionals had a dedicated, structured way to manage vulnerabilities. User testing confirmed that vulnerabilities needed a distinct workflow separate from standard GitLab issues. Based on this feedback, we introduced audit trail functionality, allowing security teams to track vulnerability status changes over time, ensuring accountability and compliance.

Mapping the data to the new page helped when collaborating with stakeholders
State::status system. A more granular approach was required for vulnerabilities. We were also able to extend this to incidents with slight modifications.

3. Security Design Language

From the outset, I recognized the necessity of a security-centric design language to distinguish security workflows from other GitLab processes. I initiated the creation of a security-specific icon system that aligned with GitLab’s existing design system while ensuring clarity and usability for security professionals.

I introduced visual indicators for severity levels, vulnerability status, and security actions, ensuring that critical security insights were easily accessible.

New severity system that plugged into our existing design system

4. Product enhancements & feature expansion

With a strong foundation in place, we developed a dedicated Vulnerability Management page that improved accessibility and streamlined tracking. The original vulnerability list view was converted into an interactive table with bulk actions, making it easier for security teams to manage large numbers of vulnerabilities efficiently.

Here are a few final deliverables: the new page layout, actions for adding a comment while dismissing, and the ability to translate severity to CVSS.

Vulnerability page — multiple findings aggregated
Adding evidence — information added
Changing severity
Changing status
Activity note syntax

To ensure the roadmap was aligned with user needs, I conducted a KANO study, prioritizing security features based on impact and expectations. Throughout multiple iterations, we refined security dashboards and action workflows based on ongoing user feedback, ensuring that the final product met the demands of security professionals while maintaining GitLab’s usability standards.

KANO study results that generated a concise roadmap for the team to focus the next iterations

Result

The initiative successfully established GitLab as the first true DevSecOps platform, integrating security into the development lifecycle at scale.

Key outcomes

  • $20M in ARR generated over three years.
  • Increased top-tier subscription users from 500 to 28,000.
  • Security professionals recognized GitLab as a viable enterprise security solution.
  • Institutional biases against security-first issue types were challenged and ultimately overcome through user research and data-driven design decisions.

Reflection & lessons learned

What I would have done differently:

  • Started with organizational-level considerations before designing for asset-level security.
  • Collaborated earlier with the team responsible for project management capabilities, ensuring alignment between vulnerability tracking and broader issue management.