Reporting · Precision Operator Briefing
The Reporting tab (surface code RPT-01) is a live workspace roll-up that reads the signals queue, agent reasoning, engagement trace, and buddy activity into a single operator dashboard. Every readout is Sudo-rendered from server-computed aggregates (no client-side guessing), and each cell carries a delta vs the prior window.
Layout
ColumnHeader (RPT-01)
DashboardTitle
KPI strip 4 ModuleCards (sparkline · meter · strip · row)
TraceChart + HUD dial
Buddy Activity grid
ReasoningLog + RecommendedActions
HourlyTimeline full-width bottom rowKPI strip · four module cards
| Code | Card | Adornment |
|---|---|---|
| M-01 | Signals Last 24h | Sparkline (24 hourly buckets, oldest → newest) vs prior-24h delta |
| M-02 | Pipeline ARR | Meter vs arrTargetCents (default $50,000) |
| M-03 | Critical Signals | 8-segment strength strip (criticalCount / criticalCapacity) |
| M-04 | Agents Healthy | Row: agentsHealthy / agentsTotal + uptimePct |
Confidence-band tokens flip vermillion when degradation is detected.
Trace chart + HUD dial
Animated line chart (stroke-dashoffset draw-in, pulsing NOW endpoint,
DROP.DETECT marker when a dip is picked up). The NOW badge renders as
an HTML overlay rather than SVG text so preserveAspectRatio="none"
doesn’t stretch it horizontally.
Reasoning log + recommended actions
- ReasoningLog: terminal-style stream of recent agent reasoning turns, grouped by buddy. The active entry gets a blinking cursor.
- RecommendedActions: playbook-driven action cards, filtered
through
pickPlaybooks()so only actions whose required integrations are connected show up. Clicking one opens the target buddy’s chat with a pre-filled prompt.
Hourly timeline
Full-width 24-bucket bar chart of signal events across the last 24 hours. Oldest bucket on the left.
Data endpoints
GET /api/v1/reporting/summary
Returns the KPI strip payload. 30-second cache per workspace.
{
"activeSignals": 14,
"pipelineArr": 420000,
"openTasks": 12,
"avgConfidence": 78,
"signalsLast24h": 204,
"signalsPrev24h": 187,
"signalsHourly": [3, 5, 8, 12, 9, ...],
"arrTargetCents": 5000000,
"criticalCount": 3,
"criticalCapacity": 8,
"agentsTotal": 4,
"agentsHealthy": 4,
"uptimePct": 99.94,
"confidencePptDelta": 1.2
}Fields:
| Field | Source |
|---|---|
activeSignals | Customer nodes with signal_type in the last 7d |
pipelineArr | Sum of amount on open Opportunity nodes |
openTasks | Count of open Opportunity nodes |
avgConfidence | Mean of waypath_confidence or icp_match_score across customers; falls back to relationship confidence |
signalsLast24h · signalsPrev24h · signalsHourly | Touchpoint events bucketed to hourly windows [now-24h, now) and [now-48h, now-24h) |
criticalCount | Customer nodes with hyper_signal OR signal_strength >= 0.75 within the 7-day window |
agentsHealthy / agentsTotal | Derived from the buddy registry (4 specialists) |
uptimePct · confidencePptDelta | Workspace-level proxies until richer telemetry lands |
The cache is invalidated automatically by any handler that mutates Customer / Opportunity / Touchpoint nodes, so the next poll recomputes.
GET /api/v1/reporting/recent-reasoning?limit=25
Returns the N most recent assistant turns across all buddies in the
workspace. limit is clamped to 1–100 (default 25).
{
"entries": [
{
"id": "msg_abc",
"sessionId": "sess_xyz",
"ts": 1729612340000,
"buddyId": "insights",
"text": "Detected hyper-signal on Acme Corp. New VP Marketing..."
}
]
}On a fresh demo workspace with no chat history yet, the endpoint seeds
the log with synthetic entries built from the workspace’s
Recommendation nodes and recent Touchpoint events (tagged with
plausible buddy IDs). This keeps the Reporting surface useful
immediately after a new-workspace signup. No empty state.
When Supabase isn’t configured, the endpoint still returns synthetic
entries rather than [], so the UI always has content to render.