Explain an anomaly with AI
Goal
You'll get a natural-language summary of why an anomaly fired — what changed, by how much, against what baseline — without reading the JSON payload.
Status: partial (PARITY-9) — the explain panel UI is in flight. The
POST /api/v1/ai/explainbackend endpoint is already in place.
Prereqs
- An
AnomalyEventexists for an asset in your workspace. If you don't have one and want to test, the easiest way is to manuallyUPDATEthe row counts in your sample table between two profile runs. - The org has an
LLMConfigconfigured. - Workspace viewer role or higher (read access is sufficient).
Steps
-
Navigate to Anomalies. You see the list of open events.
-
Click an anomaly row. A side drawer opens with the Explain panel.
-
If an explanation already exists, you see it rendered as Markdown. Skip to step 5.
-
Otherwise, click "Generate explanation". PLACEHOLDER Cloud enqueues a worker job; the UI shows a typing-cursor placeholder while the LLM responds. The first explanation typically returns in 5 – 20 seconds.
-
Read the explanation. A good one tells you:
- What metric deviated and by how much.
- Whether the deviation is a sustained drift or a one-off spike.
- Plausible upstream causes ("this pattern is consistent with a stalled ETL job").
-
Optional: click "Regenerate" to force a fresh call. Use this if the first explanation referenced wrong context (a sign the prompt-built or the model picked up stale stats).
-
Optional: click "Show me the numbers" to jump to the linked
MetricRunrows that fed the deviation, so you can verify the LLM didn't hallucinate.
Verify
The explanation renders inside the drawer. The model name + generation timestamp are shown at the bottom (claude-3-5-sonnet • 2026-05-11T14:22Z).
When to trust it
- High confidence: the LLM is summarising the baseline numbers PLACEHOLDER Cloud computed. The numbers are real.
- Medium confidence: plausible cause attribution. The LLM doesn't have access to your pipelines; it's guessing based on the shape of the anomaly.
- Low confidence: any specific dollar-amount or row-count claim not present in the underlying
MetricRunpayload. Use Show me the numbers to verify.
Cost
Each explanation is one LLM call (a few thousand input tokens, a few hundred output tokens). Multiply by your provider's rate. Per-org budgets land with HARDEN-25.