Reporting
One funnel view from first touch to closed won
The Monday question is whether the motion is working. One curated view answers it, and every figure traces back to the primitive that produced it instead of to a spreadsheet.
Most early teams answer the pipeline question with a sheet somebody updates on Sunday. The numbers are stale, nobody quite agrees what counts as a reply, and the answer lands after the week it could have changed. The curated view is opinionated instead: touches, replies, positive replies, meetings, deals, won, and what needs a person today.
It is a pure projection and causes nothing. No sends, no writes, no side effects, ever. Each figure resolves to a query over a primitive that owns that truth, so a number you distrust can be opened rather than argued about, and the terminal, the web view, and the widget all read one API.
Example searches
Ask for it the way you'd say it
Every search below runs on the same hosted Tables, with the cost previewed before anything is spent.
The Monday question
is the motion working this month, and which channel is carrying it
The funnel returns counts per stage with a channel split and the revenue booked inside the period you asked for.
What needs me today
what is waiting on a human right now, approvals and unanswered replies included
Needs-action triage counts only work genuinely blocked on a person, rather than listing everything still open.
Explain a number I distrust
where did this reply count come from and which conversations sit behind it
Each metric resolves to a query over the primitive that owns it, so the figure opens into the rows underneath it.
Plays
Three motions you can run this week
Each one is a chain of Oxygen primitives — the same hosted objects your workspace already has, composed.
Run the week from one view
A founder answers the pipeline question in a minute, without assembling a report first.
- 1Read the funnel summary for the period and note where the drop actually is.
- 2Work the needs-action queue before opening any other surface.
oxygen dashboards summaryCompare channels honestly
Email, LinkedIn, and messaging get judged on the same funnel rather than on separate vanity screens.
- 1Read persisted sequence status separately from current operational state.
- 2Compare per-channel replies against sends before shifting any budget.
oxygen sequences analyticsFind the cost behind the result
The credits that produced this month's meetings become visible next to the meetings themselves.
- 1List recent runs with their status, provider, and credits drawn.
- 2Trace the expensive ones back to the column or workflow that queued them.
oxygen observability runs
Capabilities
What you get
A funnel that ships configured
Touches, replies, positive replies, meetings, deals, and won are defined for you, so the first week produces a number instead of a configuration project. Reading it is unmetered on every tier, free included, because the view makes no provider call.
Traceable figures
Every metric resolves to a query over a named primitive. A number nobody can explain is treated as a defect here, not as a quirk of the reporting layer.
A needs-action queue
Approvals waiting, replies unanswered, runs parked. The triage view is the daily list, and it counts what is blocked on a person rather than everything technically open.
Same answer on every surface
The web dashboard, the terminal summary, and the widget read one API, so a number quoted in chat matches the one on screen without anyone reconciling them.
Boundaries
What Dashboards does not own
Dashboards project and never act. Run timelines, costs, retries, and provider errors belong to Observability, which this only summarizes. A threshold that should trigger something is a Workflow subscribing to Signals rather than a dashboard feature.
Data sources
What the data actually comes from
Every value lands with its provider and cost recorded on the cell.
PredictLeads
Hiring and technology events land on the company record as signals. The funnel projects records and signals; the dashboard itself calls no provider.

Crustdata
Headcount trend and funding context on the company behind a deal, so a stage count describes accounts rather than anonymous rows.
SignalBase
Buying signals per company enter the signals stream the intent side of the view reads. Reading the view fetches nothing of its own.
Run these on Oxygen's managed credits, or connect your own provider keys and pay the vendor directly — the same columns, the same runs, the same provenance either way. See every integration.
Limits
Where this stops
- The curated set is deliberately not a builder. It answers what an early revenue team asks every week, and user-defined dashboards are a separate later slice rather than a hidden configuration screen.
- A funnel is only as honest as the data under it. Unlinked conversations and un-promoted rows do not appear, which is an argument for tidy identity resolution rather than for distrusting the view.
FAQ
Questions people ask first
Can I build my own dashboard?
Where do the numbers actually come from?
What counts as a touch or a positive reply?
Is the terminal answer the same as the web one?
Can it alert me when something moves?
What exactly is needs-action triage?
Run one funnel view from first touch to closed won on your own workspace
Sign up, get a working workspace with a one-time credit grant, and run the first play from the web app, the CLI, or your AI assistant over MCP.