top of page
VulnTool_WhiteLogo 2.png

VulnTool

By introducing structured triaging, VulnTool transformed Meta how engineers and analysts prioritized vulnerabilitiescutting triage time by 75%, reducing average remediation time by 57.7%, and enabling detection of 171% more false positives. The tool doubled remediation impact and led to 105% more vulnerabilities resolved across Meta, improving accuracy, speed, and overall security coverage.

Role

Product Designer

Length

Ongoing ownership & iteration

Users

5,000 + Meta Employees

Responsibilities
  • Product Design — Designing new internal tool from the ground up

  • Problem Definition — Redefining the core challenge and solution space

  • User Research — Identifying pain points and requirements; usability testing

  • Design Systems — Building within Meta’s internal xDS framework

Final VulnTool 2.png

VulnTool Final Home Dashboard

The Problem

Meta’s infrastructure was increasingly exposed to vulnerabilities, putting sensitive data at risk.
ee vln dash.png

The “EE Vuln Org Overview” Dashboard

The existing dashboard that displayed CVEs (Common Vulnerabilities and Exposures) gave leadership visibility, but did not support day-to-day remediation workflows.

Frontline teams lacked an effective system to investigate, prioritize, and fix vulnerabilities, resulting in:

  • Delays in remediation

  • Missed handoffs between teams

  • Elevated security risk

The Legacy Vuln Remediation Task

Auto-remediation tasks were then generated to prompt engineering teams to fix vulnerabilities, but the process proved ineffective and often failed to drive timely action.

Scanner

Scanner

Vuln/CVE Detected

Task Auto-Created

Attempted Fix

No clear tracking nor remediation confirmation

Pain Points
v icon 1.png
Inefficient Workflows
  • Manual matching of CVEs to hostnames

  • Googling for remediation steps due to lack of in-tool guidance

  • Ambiguous task statuses, making it hard to know what’s done

  • Multiple tasks for same vulnerabilities

v icon 2.png
Poor Tracking & Visibility
  • No unified view of scanned assets and their associated CVEs

  • No clear lifecycle statuses like “Fix Applied”

  • No dashboards or charts to monitor vuln health or remediation trends

v icon 2.png
Limited Navigation & Usability
  • No ability to sort, search, or group CVEs effectively

  • No grouping logic (e.g., by shared solution or severity)

VulnTask 1.png

Auto vuln task before VulnTool

Scaling a Hackathon Idea into a Core Workflow

When I joined Meta, VulnTool’s MVP was already in production—engineer-built, lightly researched, and poorly designed. While it did streamline parts of the legacy workflow, the team had jumped to solutions without fully validating the problem, leaving significant gaps for me to address.

OriginalUI_VulnsTable 1.png

Original VulnTool Homepage

OriginalUI_VulnsTable 2.png

Original Vulns Solution Grouping View (Where task linked to)

The VulnTool MVP "Improved" Remediation Workflow
s icon 1.png
1. VulnTool Scanner Runs

Auto-creates remediation tasks for engineers

s icon 2.png
2. Engineer Opens VulnTool

Views recommended fix and affected hosts

s icon 3.png
3. Follows Remediation Instructions

Applies patch to affected host(s)

s icon 4.png
4. Marks Fix as Applied

Grouped vulns auto-marked if sharing same solution

s icon 5.png
5. Clicks “Rescan” to Confirm

Scanner auto-closes task if resolved, or reopens if still active

VulnTool Users

p icon 1.png
Engineers

Remediates vulnerabilities after receiving a task

p icon 2.png
Team Managers

Monitors their infrastructure & their engineers’ productivity

p icon 3.png
Security Analysts

Identifies high priority vulnerabilities and coordinates remediation

p icon 1.png
Leadership

Tracks fleet wide vulnerability insights

Early Challenges

Ambiguity & Velocity
e icon 1.png
Inherited a Hackathon MVP

The tool originated from a hackathon without UX input or research. When I joined, there was no clear product strategy and a lot of ambiguity. I had to navigate carefully—respecting the original vision while introducing structure and user-centered thinking.

e icon 2.png
Learning While Building

Still ramping up on Meta’s complex infra and security workflows. Initially trusted engineering assumptions without questioning enough.

e icon 3.png
Fast Timelines, Limited Resources

The eng lead was under pressure to ship quickly. I wasn’t given time to pause and fully reframe the problem space.

e icon 4.png
Design + Research in Tandem

Despite constraints, I conducted lean research (charrettes, interviews, usability tests) while designing — to keep progress moving without blocking eng.

Early UX Work

ew1.png
Usability Testing
ew2.png
Ideation Session
ew3.png
Heuristic Evaluation
ew4.png
User Journey

First Iteration

First Iteration

Vulns Table

vt v2.png
MVP Problems & Solutions
  • Unclear Next Steps: The interface lacked a clear call to action, leaving users uncertain about what to do.

    • Solution

      • Linked task tool directly to vulns tab with more information.

  • No Actionable Items: The vulnerabilities page didn’t allow users to take action.

    • Solution

      • Added multi-select and an actions bar.

  • Mixed States: Active and remediated vulnerabilities were shown together, causing confusion.

    • Solution

      • Created separate pages for active vs. remediated vulns, with banners to cross-reference counts.

  • Too Many Clicks: Filtering required excessive steps, slowing down workflows.

    • Solution

      • Added clickable filters for vuln statuses.

  • Poor Layout & Visual Hierarchy: Limited viewport space and cluttered navigation hindered focus.

    • Solution

      • Adopted internal design system standards, collapsed nav by default, moved charts to a separate page, and added “See More” for long solution/proof lists.

  • False Positives & Anxiety: Users struggled to confirm remediation due to insufficient details.

    • Solution

      • Displayed last scan date with “last seen” date to flag potential false positives and track rescans.

Vuln Grouping Challenge & Constraint

  • The Problem

    • Vulnerabilities were usually fixed in groups (e.g., OS tiers, apps, clusters) rather than individually.

    • The UI didn’t support grouping by vulnerability type or CVE.

    • With limited engineering bandwidth, I needed lightweight solutions to bridge the gap.

Solutions

1. Entity Groups Column – Added a table column where users could select a category (e.g., OS tier) and filter the table by specific group instances.

 

2. Active CVEs Widget – Introduced a homepage & widget with quick links to filter the vulnerabilities table by CVE in a new tab.

g c.png

Entity Group Column

Frame 1006.png

Dashbloard with CVE Grouping Widget

Stagnant User Satisfaction...

Despite major improvements, the push to ship fast meant we prioritized quick fixes over re-examining the problem space. User satisfaction stalled—and I knew the approach had to change.

frown.png

"How can we disable auto-task creation for Vulns? The auto task creation is simply adding addition noise."

This is not the first time I've wasted hours of my life because you are not using information that you could easily collect."

"How can I group by CVE's and the host it effects? I would rather fix a CVE that goes to every host (that I care about) than fixing CVE's by host."

A Push For Change

I advocated for a large-scale qualitative research study to rethink the tool from the ground up, starting with the core problems.

 

The engineering project lead was initially protective of his MVP vision, but by emphasizing the importance of UX research and its value to both users and stakeholders, I was able to gain full buy-in.

Research Plan

Goals
  • Understand why users were dissatisfied with the current VulnTool experience

  • Identify needs across key personas, teams, and platforms

  • Uncover the ideal remediation workflow to reduce errors and speed resolution

  • Define an optimized information architecture for clarity and ease of use

  • Use insights to shape the roadmap and prioritize high-impact improvements

Who

18 participants, mix of teams and personas

What

1:1 60 min interviews

When

3 Months (Oct-Dec)

How

Remote Sessions through VC

VulnTool_Interview_Synthesis 1.png

Single Interview Synthesis (3 of 10 pages)

VulnTool_Research_PostIts 1.png

Research Affinity Board 

Research Results

r4.png

Reliability

Nexpose Vuln Data

Very generic. Doesn’t consider FB or OS specific steps.

“The Nexpose solution is pointless at best and probably harmful because the manually installed package would not get any further updates.”

False & Unknown Vulns

The tool can’t identify backports & has too many false/unknown CVSS vulns.

“95% of frustration dealing with backports & manually marking false positive.”

Task/Vuln Tool Relationship

​It’s difficult to monitor remediation success via tasks due to poor data & complex patch schedules.

“I waste a lot of time when tasks don’t automatically close due to overlaps & gaps in scan cycles of general scanner vs when OS auto-patches.”

r 3.png

Discoverability

Solution Grouping Hides CVE Info

The VulnTool link from the task tool hides vuln info & doesn’t communicate the highest priority ones.

“I don’t like the solution view. I want to view the highest CVSS & which hosts the vuln affects. I don’t see the information I need here.”

Active Vulns Table too Broad

The active vulns view has too many statuses that don’t reflect the true lifecycle of a vuln.

“I want to auto focus on vulns that need attention & in progress, rather than manually filtering out all the false positives.”

Scattered Metadata

Vuln data to make decisions and act on them is indirect & dispersed all over the views/task.

“The task itself doesn’t provide any helpful info. It just says you have this vulnerability.”

r 2.png

Simplicity

Absent Vuln Timeline

There is no aggregated single vuln history that includes vuln published date, status changes, & scanner updates.

The last scan date is misleading, because it makes it seem like physical host was scanned but it is actually a nexpose run date.”

Labeling of Vulns

Application versus OS issues (and the OS type) aren’t communicated in the tool.

“Engineers attack vulns by OS type & applications. It makes sense to split up by them like that.”

Notifications & Noise

Unimportant vuln tasks and misleading critical CVE references from auto tasks creates distress & waste time.

“I am alarmed by the number of active vulns in home dashboard. In reality only a few are validated & in progress.”

r 1.png

Flexibility

Ownership of Entity Groups

Tasks and CVEs are matched to single hostnames that often are not assigned to the right person.

“Tasks are made on oncall rotations; it doesn’t consider vulns that need to be attacked on upstream dependencies.”

Overrides

There is no way to insert or override the correct versions and workarounds in the tool.

“I want to override solutions in bulk to easily communicate proper remediation steps to my team.”

Custom Columns & Saved Searches

The tool needs to be flexible to accommodate different types of users & edge cases.

“It’s too many clicks & filters to find the info I need to see. I want columns for the metadata in the extra vuln and host info.”

Ideation

Short Term - Quick Wins
  • Launch Triaging View so analysts validate vulnerabilities before assignment

  • Reduce noise by filtering false positives at the triage stage

  • Improve ownership accuracy (assign vulns to the right person/team)

  • Provide basic vuln lifecycle metadata in one place (status, published date, scan updates)

  • Add bulk overrides for known false/duplicate vulns

Mid Term – Next Phase
  • Redesign the Active Vulns Table to reflect the true lifecycle of vulnerabilities

  • Group & prioritize by CVSS score and business impact (not scanner buckets)

  • Improve metadata discoverability (centralize scattered vuln info)

  • Add customizable columns & saved searches for different user roles (engineers vs. analysts)

  • Clarify task/vuln relationship so remediation progress is trackable

Long Term – Future Vision
  • Use AI-assisted triage to suggest ownership and validate severity

  • Auto-detect sensitive systems / upstream dependencies and recommend fixes

  • Provide predictive remediation timelines (ETA to resolution)

  • Fully automate handoffs and notifications across security + engineering teams

  • Standardize vuln policy across tools and environments (OS vs. application consistency)

Biggest Short Term Impact

Triaging View

Through research with Meta’s Production team, I learned they rely on triage workflows—where a security analyst reviews vulnerabilities before sending them to the right team.

Triaging means validating an issue first, then assigning clear ownership. This helps:

  • Focus only on real vulnerabilities

  • Improve accuracy of ownership and systems affected

  • Cut noise from false positives

  • Reduce dependence on flawed auto-remediation

  • Support decision-making at scale isolation

Prod_Triage_Dashboard 1.png

The Production Manuel Triage Decision Table

After I presented this idea during the ideation session, the team aligned on building a triaging view in VulnTool—the biggest short-term impact to group, prioritize, and track vulns more effectively.

Triaging Workflow Diagram
triage workflow.png

Triaging Designs

The final triage designs were shaped through collaborative input, rapid validation, and iterative sessions with analysts and engineers, even though I wasn’t able to fully document the evolution before leaving Meta.

Key Challenges

  • Sub Groupings: The triage view grouped vulns by CVE since it was the most common method, but each CVE could include multiple entity types—some of which didn’t require triage.

  • Engineering Bandwidth: We lacked the resources and time to build dynamic, multi-level vuln selection across entity types. This was deferred to the next phase, when the vulns table would be redesigned.

Triage View Default

Triaging final designs.png
  • Grouping Multiple CVEs

    • Bulk triage options in the left-side CVE list, paired with detailed info on the right, enabled analysts to make triage decisions across multiple CVEs at scale.

  • Saved Searches

    • ​Search queries persisted when switching between the vuln table and CVE view, letting users quickly return to affected CVEs and related vulns.

  • CVE Info Icon

    • Hovering over the left-side info icon revealed full CVE details, avoiding the heavy load time of opening the full CVE panel.

  • CVSS Rankings

    • Multiple sources for CVSS scores and vectors were included in the right panel, with indicators showing whether a score was original or adjusted.

  • Tabs & Sidebar

    • Each CVE included tabs for individual vulns and tasks, giving users a quick at-a-glance view without returning to the vuln table

    • An additional sidebar showed affected entity groups, since users wanted visibility into groups while making triage decisions.

  • Null State

    • When no triage existed for a CVE, the right panel displayed a null state with an illustration to clearly indicate that no triage was available

Triaging State

triaging.png
  • Flexible CVSS Scores

    •  Allowed analysts to rescore each CVE via its vector, with clear indicators showing whether a score was original or adjusted throughout the UI.

  • Meta-Specific Remediation Info

    • ​Triage entries could now include tailored remediation steps (solutions, impacted versions. URLs, notes, and tags), giving engineers Meta-specific guidance instead of relying on generic Nexpose solutions.

  • Only Show Selected​

    • Added a checkbox to filter the dropdown and display only chosen entity groups, making it easier to review selections before creating a triage.

  • Triage Subset Icon

    • ​When a CVE was triaged by an entity group subset, an icon appeared in the left-side CVE list to indicate multiple triages existed and some CVEs might still be untriaged.

Entity Groups Workaround
  • Analysts often triaged only subsets of affected vulns by entity group, but multi-level groupings weren’t available and we could only group vulns in this view by CVE.

    • Solution​

      • ​We added a Triage Subset dropdown, enabling analysts to target specific entity groups and leave out the rest—allowing multiple triages per CVE.

Remediation Task Creation

r t.png
  • Triage Cards

    • Once a triage was created, the right-side null state was replaced with a triage card dropdown—collapsed by default so multiple triages could fit in the viewport, with the option to expand for full details (Shown expanded above).

  • Task Creation

    • Analysts could click “Create Task” to open a modal where they assigned the correct owner/team and selected either a corp or prod task template to align with Meta standards.

Triaging Impact

Remediated 105% more vuln issues

117,905 remediated vuln issues in H2, to 242,476 remediated vuln issues in H1.

Reduced the average remediation time by 57.7%

Average remediation dropped from 45 days to 19 days after introducing triage workflows.

171% More False Positives Detected

Security analysts identified and flagged ~38,000 false positives per half-year compared to ~14,000 before triage improvements.

Medium time to triage vulns decreased by 75%

Median triage time dropped from 12 days to 3 days, accelerating prioritization and resolution.

noun-success-5716649 1.png

Phase 2: Dynamic Vuln Groupings

The Problem

The vuln table lacked dynamic groupings, and the MVP triage flow only allowed users to triage by CVE and then manually subtract unneeded entity groups—creating an unnecessary two-step process. In the separate vulns table, triages couldn’t even be initiated, leaving analysts stuck with endless scrolling, switching tabs duplicate effort, and a slow, frustrating workflow.

The Solution

We planned a redesign of the vulns table to support group-level triage, tracking, and visibility. Vulnerabilities could be grouped by entity type or CVE—whether application or OS issues—with multi-level groupings. This would enable analysts to act on clusters of related issues in a single workflow, cutting down scrolling, simplifying decisions, and eliminating repetitive steps.

User Journeys

group uj.png

Ideation Session

Ideation 1.png

A/B Testing

Option 1

FINAL_option1_b.png

Table-Level Multi-Groupings: Multi-level grouping built directly into the vuln table, with a slide-in right panel for detailed results

CSAT 4.4 / 5
Better than Current UI 4.8 / 5

Option 2

option2_final_b.png

Card-Based Navigation: Layered cards with breadcrumb navigation to move through groupings step by step.

CSAT 4.4 / 5
Better than Current UI 4.8 / 5

Outcome

Option 1 showed a slight lead, but results weren’t conclusive. We moved forward with a dual-panel table view, incorporating UX improvements informed by feedback from both options.

Final Dynamic Grouping Designs

Vulns Table Default

Frame 245.png
A/B Testing Insights & Solutions
  • Cluttered Metrics: Wireframes displayed too many metrics, taking up space and reducing the number of vulns visible in the viewport.

    • Solution

      • Optimized metrics based on user feedback and added a toggle to show or hide them.

  • Grouping Navigation: Users preferred having first-level groupings available in tabs for quick switching (fewer clicks than a selector)

    • Solution

      • Retained the tabs concept from Option 2, but moved them to the left side instead of the top to maximize viewport space.

  • Hidden Environment Filter: The environment filter icon was ambiguous, and the design lacked a clear system status indicator.

    • Solution

      • Replaced the icon with a labeled dropdown for clarity and added visible system status by default.

  • Busy UI: Overall layout felt overwhelming and hard to digest.

    • Solution

      • Centralized all filters into a single unified filter panel.

  • Ambiguous Vuln Counts: The vuln count token wasn’t clear, and users wanted to see whether counts were increasing or decreasing.

    • Solution

      • Clarified the column header, added arrows, and used color coding (red/green) to indicate trends.

  • Missing Metadata: Analysts lacked relevant context in the vuln table.

    • Solution

      • Added Trend Ranking, Number of Owners columns, and a 100 scale severity score.

Vulns Table Grouped

Frame 1007.png
A/B Testing Insights & Solutions
  • Complex Navigation: Users found breadcrumb views for multi-level groupings required too many clicks.

    • Solution

      • Adopted a tree table with selector access, reducing navigation steps.

  • Grouping Order: Users preferred seeing CVEs listed under their parent grouping for clarity.

    • Solution

      • Reordered the tree table so parent groups appear at the top, with CVEs nested beneath.

Save Search Modal

Frame 1008.png

Development on these views began just as I was leaving the company, so I don’t have impact metrics. However, the designs were very well received by both stakeholders and users, and there was strong excitement to adopt the new UI.

bottom of page