Data Analysis Agent / read-only by default

Ask the question.
See the evidence.

Moby turns business questions into defensible analysis. It chooses the right data surface, validates the method, preserves your definitions, and returns the answer with its source attached.

One question Routed to the correct analytical surface
Summary Topline / configured KPIs
Dashboards Named widgets / filters
Warehouse SQL Breakdowns / exports
Pixel attribution Source → ad drilldown
Peer benchmarks Cohort context
Definitions Metric truth / caveats
Analysis / run 08C4Working
Why did MER improve while net margin fell?
Resolve the exact periods

Previous completed calendar month vs the month before.

UTC
calendar
Load the owning metrics

Configured Summary definitions for MER and net margin.

Summary
source
03
Diagnose the movement

Spend, order mix, COGS, discounts, and customer mix.

Warehouse
query
04
Reconcile the tension

Separate marketing efficiency from margin pressure.

Answer
pending
MER improved because revenue grew faster than spend.

Net margin declined as product mix and fulfillment costs moved against the gain.

+3.9%MER
-0.9ppMargin
orders_tableRevenue / orders / customers
pixel_joined_tvf()Attribution / sessions / spend
customers_tableIdentity / value / consent
ads_tableCampaigns / delivery / status
products_tableCatalog / variants / inventory
product_analytics_tvf()Revenue / units / contribution
Validated answerSchema → relationship → query → coverage
Which products drove new-customer revenue without sacrificing margin?
Built to work across

Starts with the right source.

The agent does not force every question through one database. It routes the request to the surface that actually owns the metric.

AR_7C12E4Routing live
Conceptual product scene
Analysis router / request 0428
source map ready
Execution plan
Period comparison Store topline / completed calendar months
Summary compare Values + calculated changes
Summary page

Topline, configured costs, formulas, and executive KPIs.

Owner
summary surface
Named dashboard

Widget-level analysis with known filters and dimensions.

Owner
dashboard widget
Validated warehouse SQL

Breakdowns, joins, exports, custom windows, and reconciliation.

Owner
read-only query
Pixel attribution

Source, campaign, ad set, and ad contribution by selected model.

Owner
attribution page
Peer benchmarks

Defined channel comparison against a similar-shop cohort.

Owner
peer cohort
The analysis workspace

One question. The whole business underneath it.

Ask in Moby. The agent can move from Summary metrics to warehouse tables to Pixel attribution without making you translate the question into dashboards or SQL.

Triple Whale Moby workspace showing the Data Analysis Agent experience
Ask what changedThe question and analysis stay together
Triple Whale Data Analysis Agent detail view with the analysis kept in context
Drill into the answerThe evidence stays attached
01
Ask a business question

Revenue, margin, customers, products, channels, campaigns, or the tension between them.

02
Follow the analysis

The source, table, model, date range, and validation steps remain visible while the agent works.

03
Keep the context

Refine the question, export the result, or drill into the next layer without starting the analysis over.

SQL that checks itself before it speaks.

For custom analysis, the agent inspects known-good patterns, validates the table and columns, executes read-only SQL, and checks coverage before interpreting the result.

SQ_23A09FValidation passed
Example workflow / illustrative data
Validated query / product contribution
read-only
query.sql Shop timezone / 2026-05-01 → 2026-06-01
WITH
  sum(ord.order_revenue) AS revenue,
  uniqExact(ord.order_id) AS orders
SELECT
  ord.product_title,
  revenue,
  orders,
  revenue / nullIf(orders, 0) AS aov
FROM orders_table AS ord
WHERE
  ord.event_date >= '2026-05-01'
  AND ord.event_date < '2026-06-01'
  AND ord.is_new_customer = 1
GROUP BY ord.product_title
ORDER BY revenue DESC
Result preview
ProductRevenueOrdersAOV
Core set$184,2601,942$94.88
Starter pack$121,9841,632$74.75
Refill bundle$93,1151,073$86.78
Travel size$48,906884$55.32
Quality checks
31 / 31 days covered No missing dates in requested range
New-customer orders Split defined by is_new_customer
Export ready CSV shape stable / 26 rows

A warehouse built for questions, not table hunting.

Connected tools resolve into purpose-built analytical tables. The agent finds the right grain, validates fields and relationships, then queries only the surfaces needed to answer the question.

ShopifyOrders
catalog
AmazonMarketplace
sales
MetaAds
delivery
GoogleAds
search
KlaviyoEmail
flows
Triple PixelSessions
attribution
Warehouse map / select a table
Schema first → relationship check → read-only query → coverage check Tables stay separate when definitions or reporting systems differ

Attribution without sleight of hand.

Model, window, date basis, source, and drilldown level stay visible. The agent does not quietly swap a platform number for a Pixel-attributed one.

AT_501BC8Attribution ready
Illustrative data / explicit model + window
Pixel attribution / source → campaign
event date
Attribution model
Window
EntitySpendRevenueROAS
Meta AdsSource / 18 campaigns
$214.8k
$521.7k
2.43
Prospecting / Broad / USCampaign / active
$78.4k
$176.5k
2.25
Creator whitelisting / Q2Campaign / active
$52.1k
$149.8k
2.88
Retargeting / 30DCampaign / active
$31.7k
$91.4k
2.88
Google AdsSource / 12 campaigns
$169.3k
$402.1k
2.38

Compare performance in context.

See the period change, then understand whether it is an internal shift, a channel problem, or a gap versus similar businesses.

CP_8D920AComparison complete
Illustrative values / defined cohort
Performance comparison / May vs April
peer cohort loaded

Store performance

2026-05-01 → 2026-05-31
vs prior calendar month
Total sales
$2.84m
$2.61m
+8.8%
Blended ad spend
$714k
$681k
+4.8%
MER
3.98
3.83
+3.9%
New customer CPA
$61.40
$57.90
+6.0%
Net margin
13.2%
14.1%
-0.9pp

One agent. The full analytical loop.

From a quick KPI read to a custom export, the same discipline follows the question all the way through.

01

Executive KPI snapshots

Load configured Summary sections for a period and explain the topline without rebuilding proprietary formulas.

Summary
snapshot
02

Period comparisons

Compare exactly two periods with calculated changes and the underlying values visible.

Summary
compare
03

Dashboard and widget analysis

Discover a named dashboard, inspect its widgets, apply the relevant filters, and retrieve focused data.

Dashboard
widget
04

Data warehouse + validated SQL

Inspect purpose-built tables, validate fields and relationships, run scoped SELECT queries, and save stable results for reuse.

Warehouse
SQL
05

Breakdowns and joins

Analyze products, customers, orders, campaigns, cohorts, and time windows with explicit grain and join logic.

Controlled
scope
06

Stable exports

Create CSV-ready outputs, stabilize empty time series with a date spine, and preserve a usable schema.

CSV
artifact
07

Pixel attribution drilldowns

Move from all-channel source views into campaign, ad set, and ad detail using the selected model and window.

Pixel
attribution
08

Peer benchmarks

Compare channel performance against a defined industry and GMV cohort without pretending it is a store KPI.

Peer
cohort
09

Metric validation

Preserve metric definition, source, timezone, date basis, attribution, population, and material filters.

Definition
ledger
10

Coverage and quality checks

Detect empty ranges, inspect availability bounds, check types, and retry once with a safer query shape when needed.

Quality
gate
11

Attribution-aware recommendations

Use Pixel contribution for media decisions and platform metrics as diagnostics, while checking current entity status.

Evidence
first
12

Defensible explanations

Return the answer, what changed, why it matters, the exact evidence basis, and the limitation that could change the conclusion.

Source +
caveat

Every answer should survive the follow-up.

Analysis as a durable method

The goal is not a clever sentence. It is an answer another person can inspect, reproduce, challenge, and still use.

Trust layer / what stays explicit

Exact about what it knows.

The agent is designed to reduce ambiguity, not hide it. When a definition, source, range, or join is uncertain, that uncertainty stays visible.

01

No silent metric mixing

Store truth, blended metrics, platform-native reporting, and Pixel attribution remain separate unless the analysis explicitly reconciles them.

02

No invented dashboard values

If a Summary metric is unavailable or returns N/A, the agent says so. A warehouse fallback is labeled as a different definition and scope.

03

No unvalidated SQL shortcuts

Tables and columns are inspected before new queries. Read-only execution, scoped dates, and exact grain are part of the workflow.

04

No attribution ambiguity

Model and window stay attached. “Linear” is clarified. “Total Impact” and click-plus-view wording map to their exact reporting models.

05

No pretending analysis is action

Forecasting, causal lift, creative production, and campaign mutations are separate workflows. Recommendations do not become changes without the owning action surface.

Bring me the question.

Give it a KPI, a time range, or a question without a neat answer. The agent shows the route, checks, and evidence before it gives you the conclusion.

Moby / analysis plan
evidence attached

Analysis plan

Illustrative workflow
No live shop data shown
Resolve the exact periods

Previous completed calendar month compared with the month before it.

Shop timezone
calendar dates
Load the owning metrics

MER and net margin from configured Summary definitions.

Summary
topline
Diagnose the movement

Use spend, revenue, costs, order mix, and customer mix as supporting evidence.

Summary +
validated detail
Reconcile the tension

Separate marketing efficiency from gross-margin and operating-cost pressure.

No mixed
definitions

Answer shape

Lead with the exception. Show the period values. Explain which components improved, which deteriorated, and which source supports each claim. End with the next question worth answering.

Source: configured Summary + validated supporting detail Scope: exact calendar periods Output: concise readout + export when needed Boundary: recommendation, not mutation