Operations Dashboard
Path:/dashboards/operations
The Operations Dashboard is the primary system-health view for platform engineers. It answers: Is the decisioning engine running fast and correctly?
Performance KPI Cards
Four cards across the top row:Latency Visualizations
Acceptance Rate by Offer
Bar chart plus detail table showing per-offer acceptance rates from theinteraction_summaries table:
Budget Utilization
Progress bars for offers with budget allocations. Color-coded:Decision Pipeline Panel
Reads persistedDecisionTrace aggregates via GET /api/v1/dashboards/decision-pipeline. The window is driven by the page’s period selector and capped at 168 hours (7 days); the panel header shows the effective window (“last 7d”, “last 24h”, etc.) derived from the API response’s windowHours field — so it is always truthful.
Query param: windowHours (1–168, default 24). The period selector now correctly refetches the panel on change.
When
traceCount === 0 the panel shows an empty state. The empty state note mentions decisionTraceSampleRate (configurable under Settings → Tenant) in case tracing is turned down or off.
The panel loads via a direct fetch that respects the page’s period selector (periodDays → windowHours = min(periodDays × 24, 168)); auto-refreshes every 30 seconds alongside the rest of the dashboard.
Dead Letter Queue (DLQ) Panel
Shows topic breakdown (e.g.,
decision.outcome, pipeline.error) with Retry All and Purge action buttons.
Circuit Breaker Panel
Displays state change history for each breaker (e.g.,enrichment-redis, connector-snowflake). Color-coded badges: red for open, amber for half_open, green for closed.
Investigating a Drop in Acceptance Rate
Suppose you noticeoffer_summer_promo dropped from 12% to 3% acceptance overnight. Here is how to investigate:
- Check the Decision Pipeline panel. If “After Qualification” is normal but “After Contact Policy” drops sharply, a new frequency cap is filtering aggressively.
- Open a Decision Trace. The trace shows candidates at each stage. If the offer is present at Qualification but absent after Contact Policy, expand the contact policy section to see which rule suppressed it.
- Check the Filter Rate bars. Contact Policy filter rate above 80% (red) means most candidates are being suppressed — likely a misconfigured policy.
Business Dashboard
Path:/dashboards/business
The Business Dashboard answers: How are my offers performing? Designed for analysts and marketers who need to track conversion rates, channel effectiveness, and revenue.
Summary Cards
Offer Funnel
Four-stage funnel showing conversion from configuration to delivery readiness:- Total Offers — all offers in the tenant
- Active — offers with
status = "active" - With Creatives — active offers that have at least one active creative
- Active Creatives — total count of active creatives
If you have 20 active offers but only 5 have creatives, 15 offers cannot be delivered. The funnel makes this gap immediately visible.
Charts
Offer Performance Detail Table
Data Health Dashboard
Path:/dashboards/data-health
Monitors the ingestion layer — connectors, pipelines, and schemas.
Summary Cards
Connectors Table
Model Health Dashboard
Path:/dashboards/model-health
Tracks scoring model status, accuracy trends, and experiment activity. Designed for data scientists monitoring model performance.
Summary Cards
Charts
Models Table
Analysis panels
Four additional analysis panels sit below the main cards:Uplift
Source:GET /api/v1/treatments/uplift?windowDays=N
Per-creative observational uplift cards. Window selector: 7 / 30 / 90 days; auto-refetches on change. Renders a bar chart of uplift value per creative and a table with sample counts, p-value, and 95% confidence interval (unpooled Wald standard error). A samplesBelowMinimum badge flags creatives without enough data for reliable inference.
CATE Explorer
Source:GET /api/v1/algorithm-models/[id]/uplift?customerId=...&method=...
Submit-driven panel for per-customer Conditional Average Treatment Effect (τ). Pick a model, enter a customerId, select a method (t_learner or x_learner), and submit. Renders an offers table with τ values, color-coded segment badges (persuadable / sure_thing / lost_cause / sleeping_dog / uncertain), and an overall ATE summary line.
Fairness
Source:POST /api/v1/fairness/evaluate with { mode: "inline", samples: [...] }
Inline-mode fairness evaluation. Paste a JSON array of { group: string, prediction: boolean, label?: boolean } decision samples and submit. Renders per-group stats (count, positive rate, TPR/FPR when labels are present), key metric cards (demographic parity gap, disparate impact ratio, four-fifths badge), and a warnings list.
There is no persisted fairness history table. The fairness-recheck cron writes outcomes to AuditLog entries but does not store structured
FairnessEvaluation rows. The panel is therefore form-driven and stateless — it evaluates samples you provide inline. To see historical gate outcomes, query GET /api/v1/audit-logs?action=fairness_evaluate.Drift Check
Source:POST /api/v1/models/[id]/drift
Interactive drift analysis. Select a model, paste JSON for reference and current feature distributions ({ featureName: number[] }), and submit. Renders a per-feature PSI and KS table with severity badges (none / monitor / alert) and an overall verdict.
Attribution Dashboard
Path:/dashboards/attribution
Multi-touch attribution analysis comparing how different models distribute credit across channels. Helps answer: Which channels actually drive conversions, and how should I allocate budget?
Attribution Models
Five models are selectable. Two additional models appear as disabled Coming Soon entries in the picker — they are rendered but not selectable and the API enum is unchanged.Summary KPIs
Channel Contribution Chart
Horizontal bar chart showing each channel’s percentage contribution to total credit, with raw credit values.Conversions Per Channel Table
Prometheus Metrics
KaireonAI exposes a Prometheus-compatible scrape endpoint at/api/metrics (requires admin role).
Scrape Configuration
Key Metrics
Decision Engine
HTTP & API
Pipelines & Connectors
Infrastructure
Experiments & Models
AI Intelligence
Compliance
The
/api/v1/metrics/summary endpoint returns a curated subset of these metrics as JSON. This is what the Operations Dashboard uses internally — it does NOT include every metric on this page; the full scrape feed lives at /api/metrics.
For the full operator-grade reference of the seven post-W10 metrics — including registered file-line, alert guidance, and PromQL expressions — see Metrics Reference.
Segment Dimension
Six of the Business and Operations dashboard queries accept an optionalsegmentId query parameter to scope their aggregation to customers in a specific segment. When provided, the underlying SQL joins the segment’s materialized view (seg_<id_prefix>) onto the interaction tables by customerId.
Behavior when a segment is not ready
Segments are materialized to PostgreSQL views asynchronously. If a segment exists but its view has not been built (for example a draft segment), the endpoint returns{"data": [], "warning": "segment view not materialized"} — dashboards can render an informational banner instead of an error. An unknown segmentId returns {"data": [], "warning": "unknown segmentId"} under the same pattern.
Example
Export and Save as Report
Every dashboard in the platform ships with two header-bar buttons that turn the current view into a report artefact:Export works unconditionally — no cron wiring required. Clicking
Export renders the artifact server-side and streams the file back to the
browser immediately.Save as Report also creates the template + schedule immediately, but
the resulting saved schedule only fires on cadence once
/api/cron/tick is being invoked by an external scheduler. During pilot
/ initial deployment this is usually not wired. Use the Run Now
button on the saved template in /settings/reports for on-demand
delivery until you follow
EventBridge Setup (optional).Export
Dropdown with PDF / CSV / Markdown / HTML options. Clicking a format:- Builds a transient report template from the dashboard’s current filters (date range, segment, etc.) via the
view-to-template.tsbridge. - POSTs the transient template to
/api/v1/reports/preview— no database row is created. - Receives a base64-encoded artifact and triggers a browser download via
Blob+URL.createObjectURL.
Save as Scheduled Report
Opens a modal pre-filled from the current view. Pick:- Name (required; defaults to
{Dashboard label} · {days}d). - Formats (multi-select; default PDF).
- Narrative toggle.
- Schedule (preset: Daily 8am / Weekly Mon 8am / Monthly 1st 8am / Custom cron).
- Destinations (multi-select of configured notification providers — Slack, Teams, webhook, Ops-email).
/api/cron/tick), the schedule runs on cadence and delivers artefacts to every destination. Until then, trigger delivery from /settings/reports using Run Now, or invoke the run-now endpoint at /api/v1/reports/templates/[id]/run-now directly. View the persisted template at /settings/reports.
Which data sources are sent?
Each dashboard declares its source list in the dashboards-to-report-template bridge:
Every source is tenant-scoped — the API enforces tenant context and filters every database query by tenant.
Related
Executive Dashboard
C-suite summary with narrated weekly highlights and KPI deltas.
Reports
Templates, schedules, formats, and delivery — the engine behind Save-as-Report.
Decision Traces
Forensic tracing for debugging qualification and ranking.
Metrics Reference
Operator-grade reference for the post-W10 metrics with PromQL alert expressions.
Algorithms & Models
Understand the scoring models tracked by Model Health.