How to read the report
A guide to every panel, score, and metric in Causal Performance Analyzer.
Overview
Causal Performance Analyzer is a six-phase forensics pipeline that takes a URL, runs Google PageSpeed Insights against it, and then systematically works out why the page is slow — distinguishing root causes from symptoms and assigning a confidence score to each diagnosis.
The pipeline runs left-to-right through these phases:
Lighthouse Report
This panel shows the raw data returned by Google PageSpeed Insights before any causal analysis is applied. It is the ground truth for everything that follows.
Performance score
The large circle shows Lighthouse's overall performance score (0–100). It is a weighted geometric mean of the six lab metrics below and is colour-coded:
Core Web Vitals · Lab
Six metrics measured in the simulated Lighthouse environment:
Field Data (CrUX P75)
Real-user measurements from Chrome UX Report at the 75th percentile — meaning 75% of real users experienced this metric or better. When field data differs significantly from lab data, it usually means real users are on slower networks or devices than the simulated environment.
CrUX categories map to ratings: FAST = GoodAVERAGE = Needs improvementSLOW = Poor
Opportunities to improve
Lighthouse audits that scored below 0.9, sorted by severity (worst first). Each shows the audit title and the potential savings. These are the raw signals that feed into the hypothesis generation step.
Hypotheses & Symptoms
What is a hypothesis?
A hypothesis is a proposed root cause for the observed performance problems. It is not a measurement — it is a causal claim: "the reason the LCP is slow is X". The AI generates several competing hypotheses at once so the reasoning engine can evaluate and score them against the evidence.
Detected symptoms
Before generating hypotheses the system detects which performance symptoms are present based on the facts:
Hypothesis fields
Validation
Every hypothesis is validated before being shown. Hypotheses that are logically impossible given the evidence are rejected automatically — for example, alazy-lcp-image hypothesis is rejected if the LCP element does not have loading="lazy". Rejected hypotheses are not shown in the UI.
Reasoning Engine
The reasoning engine takes the validated hypotheses and scores them using a set of deterministic rules against the fact evidence. No AI is involved.
Confidence score
Each hypothesis starts at a base confidence of 0.40 (40%). Rules then apply boosts (positive evidence) and penalties (contradicting evidence) to produce a final confidence score.
A hypothesis is declared the dominant cause if it reaches ≥ 50% confidence and leads all other hypotheses by at least 15 percentage points. If no hypothesis clears this bar the verdict is inconclusive.
Boosts and penalties
Each small tag under the confidence bar shows one scoring signal. Green tags are boosts (evidence supports this cause); red tags are penalties (evidence contradicts it). Hover any tag to read the full rationale.
Elimination
Hypotheses can be eliminated — removed from contention — by hard rules such as missing a required fact, or by scoring so low that no evidence can recover them. Eliminated causes are listed with their reason at the bottom of the panel.
Unexplained symptoms
If a detected symptom is not explained by any non-eliminated hypothesis, it is flagged as unexplained. This usually means the root cause is outside the 13 known causes, or that key diagnostic data is missing.
Causal Graph
The causal graph is a bipartite view of the relationships between causes and symptoms. It is built directly from the reasoning result — no additional AI calls.
Reading the graph
Engineering Report
The engineering report is a deterministic summary derived entirely from the reasoning result. It is the primary deliverable for a developer or engineering team.
Verdict
The verdict is either identified or inconclusive.
Identified: one hypothesis cleared the 50% confidence threshold and leads the pack by more than 15 pp. The summary names the dominant cause and its confidence level.
Inconclusive: no hypothesis reached the threshold. The summary shows the highest confidence achieved and suggests collecting more telemetry (HAR files, RUM data, field traces).
Evidence chain
An ordered list of the scoring signals that contributed most to the dominant cause's score. Green tokens are boosts; red tokens are penalties. The number is the confidence delta in percentage points. This is the audit trail — it shows exactly why the engine reached its conclusion.
Alternatives
Causes that scored ≥ 20% but were not dominant. These are not ruled out — they may be contributing factors alongside the primary cause. Investigate them if fixing the dominant cause does not fully resolve the performance issue.
Gaps & Uncertainties
Recommendations
Actionable fixes for the dominant cause, tagged by priority:
PDF Download
The ↓ Download PDF Report button (shown after hypothesis generation) opens a new browser tab containing a formatted print-ready document and triggers the browser's native Print dialog. Use Print → Save as PDF to save it.
The PDF contains all eight sections of the analysis:
- Cover — URL, performance score, verdict, and date
- Core Web Vitals — lab metrics grid, field data table, failing audits
- Detected symptoms with rationale
- AI-generated hypotheses with full rationale and missing evidence
- Confidence scoring — bars and signal breakdown for each hypothesis
- Verdict and evidence chain
- Actionable recommendations by priority
- Alternative causes, gaps, and appendix with all raw facts
The PDF is entirely self-contained — no internet connection is required to view it and it does not depend on any external fonts or CDN resources.
Configuration
All user-facing strings and defaults are in src/config.ts. Edit that file to rebrand the app or change defaults without touching any component or engine code.
src/config.ts for changes to take effect in production builds.