Eidetic

Risk Heatmap

AI
Governance
New

Interactive 5x5 risk assessment matrix using likelihood x impact scoring. Visualize, categorize, and track AI risks with ISO 42001 compliance indicators.

Interactive Demo

Fully populated risk matrix with sidebar summary. Click any cell to view its risks.

AI Risk Heatmap Matrix

Likelihood x Impact risk assessment matrix

Risk Matrix
12 risks
Low Moderate High Critical
Negligible
Minor
Moderate
Major
Catastrophic
Impact →
Almost Certain
Likely
Possible
Unlikely
Rare
Likelihood

Risk Summary

12
Total Risks
20/25
Highest Score

By Severity

critical
2
high
6
moderate
4
low
0

Mitigation Status

Mitigated
5
In Progress
4
Unmitigated
3

By Category

Bias
2
Hallucination
2
Security Exploit
2
Operational Failure
2
Data Poisoning
1
Privacy Breach
1
Model Drift
1
Compliance Violation
1

ISO 42001 Compliance

Risk Coverage58%

Partial compliance. Address unmitigated risks to improve.

Score Calculation

Risk Score = Likelihood x Impact

Low (1-4)Acceptable
Moderate (5-9)Monitor
High (10-16)Action Required
Critical (17-25)Immediate Action

Max possible score: 25 (5 x 5)

Empty State

Matrix with no risks shows the severity gradient clearly.

New Risk Assessment

Likelihood x Impact risk assessment matrix

Risk Matrix
0 risks
Low Moderate High Critical
Negligible
Minor
Moderate
Major
Catastrophic
Impact →
Almost Certain
Likely
Possible
Unlikely
Rare
Likelihood

Risk Summary

0
Total Risks
0/25
Highest Score

By Severity

critical
0
high
0
moderate
0
low
0

Mitigation Status

Mitigated
0
In Progress
0
Unmitigated
0

By Category

No risks recorded

Score Calculation

Risk Score = Likelihood x Impact

Low (1-4)Acceptable
Moderate (5-9)Monitor
High (10-16)Action Required
Critical (17-25)Immediate Action

Max possible score: 25 (5 x 5)

Without Sidebar

Matrix only, useful when embedded in dashboards.

Embedded Risk View

Likelihood x Impact risk assessment matrix

Risk Matrix
5 risks
Low Moderate High Critical
Negligible
Minor
Moderate
Major
Catastrophic
Impact →
Almost Certain
Likely
Possible
Unlikely
Rare
Likelihood

Props

RiskHeatmap component API reference

PropTypeDefaultDescription
risks*RiskItem[]Array of risk items to display on the matrix
titlestring"AI Risk Heatmap Matrix"Title displayed in the component header
showSidebarbooleantrueShow the right sidebar with risk summary statistics
showAddFormbooleantrueShow the Add Risk button and form
showCompliancebooleantrueShow the ISO 42001 compliance indicator in the sidebar
onAddRisk(risk: Omit<RiskItem, "id">) => voidCallback when a new risk is submitted via the form
onExport(risks: RiskItem[]) => voidCallback when the export button is clicked
onRiskSelect(risk: RiskItem) => voidCallback when a risk item is clicked in the detail panel
filterCategoryRiskCategory | nullPre-set category filter
filterStatusMitigationStatus | nullPre-set mitigation status filter
classNamestringAdditional CSS classes

RiskItem Type

PropTypeDefaultDescription
id*stringUnique identifier
title*stringRisk title
description*stringRisk description
category*RiskCategoryOne of: bias, hallucination, data-poisoning, privacy-breach, security-exploit, model-drift, compliance-violation, operational-failure
likelihood*LikelihoodLevelOne of: rare, unlikely, possible, likely, almost-certain
impact*ImpactLevelOne of: negligible, minor, moderate, major, catastrophic
mitigationStatus*MitigationStatusOne of: mitigated, in-progress, unmitigated
mitigationNotesstringNotes about mitigation actions taken
ownerstringPerson or team responsible for this risk
dateIdentifiedstringDate the risk was identified (ISO format)

Usage

Import and implementation example

import { RiskHeatmap, type RiskItem } from '@/blocks/governance/risk-heatmap'
import { useState } from 'react'
export default function RiskManagement() {
const [risks, setRisks] = useState<RiskItem[]>([
{
id: '1',
title: 'Biased hiring recommendations',
description: 'AI model may perpetuate demographic biases.',
category: 'bias',
likelihood: 'likely',
impact: 'major',
mitigationStatus: 'in-progress',
owner: 'Ethics Team',
},
])
const handleAddRisk = (risk: Omit<RiskItem, 'id'>) => {
setRisks(prev => [...prev, { ...risk, id: crypto.randomUUID() }])
}
return (
<RiskHeatmap
risks={risks}
onAddRisk={handleAddRisk}
onExport={(data) => console.log('Export:', data)}
onRiskSelect={(risk) => console.log('Selected:', risk)}
/>
)
}

Built With

3 components

This block uses the following UI components from the design system:

Features

Built-in functionality

  • 5x5 risk matrix: Likelihood x Impact grid with 25-point scoring system
  • Color-coded severity: Green (low), yellow (moderate), orange (high), red (critical) cell backgrounds
  • Interactive cell selection: Click any cell to view the risks it contains in a detail panel
  • 8 risk categories: Bias, hallucination, data poisoning, privacy, security, model drift, compliance, operational
  • Mitigation tracking: Track risks as mitigated, in-progress, or unmitigated with visual indicators
  • Sidebar summary: Breakdown by severity, category, and mitigation status
  • ISO 42001 compliance: Compliance score based on risk mitigation coverage percentage
  • Filtering: Filter by category and mitigation status with combinable filters
  • Add risk form: Built-in form to add new risks with all required fields
  • Export for audit: Export filtered risks for compliance audits and reporting
  • Dark mode: Full dark mode support with semantic color tokens
  • Responsive layout: Sidebar stacks below matrix on smaller screens

Accessibility

ARIA support and keyboard navigation

ARIA Attributes

Matrix cells have descriptive aria-labels with likelihood, impact, risk count, and scoreRisk items in detail panel are keyboard-focusable with role="button"Color is not the only indicator - counts, scores, and labels are always present

Keyboard Navigation

KeyAction
TabNavigate between matrix cells and interactive elements
Enter / SpaceSelect a cell or risk item
EscapeClose detail panel (when focused)

Notes

  • Risk count badges provide text alternative to color-only severity indication
  • Score values displayed in each cell for screen reader users
  • Form inputs have proper label associations
  • Filter buttons toggle state is communicated via visual styling