How Spotonix Advisor thinks.

Builds the case. Lands the change. Measures predicted vs realized.

Dashboards show spend. Audits recommend once. Auto-tuners act opaquely. Spotonix Advisor turns your observed workload into ranked, evidence-backed recommendations — grounded in fingerprint-level attribution — applies approved changes through your own dbt workflow, and measures predicted vs realized against an agreed baseline.

Each moment closes one handoff.

Dashboards observe. Catalogs list. Audits recommend. Auto-tuners act. Each closes one handoff and leaves the next one open. Advisor connects the loop.

01 / Profile

Reads the workload, not the bill.

Spotonix ingests query history, plans, schema, dbt lineage, and BI assets. Every query that actually ran is captured, grouped, and resolved against your Context Graph. We start from how the warehouse is used, not what last month's invoice said.

QUERIES

6 months, captured illustrative

12,400 queries → 380 query patterns

SCHEMA + LINEAGE

Warehouse + dbt

tables, joins, models, dependencies

BI ASSETS

Dashboards + reports

what your team actually consumes

PLANS + SAMPLES

Cost-relevant only

parsed/sampled for attribution

02 / Ledger

Maps every asset to the queries that actually use it.

Tables, materialized views, and warehouses — each paired with the queries that touch it, how often, and at what filters. The materialized view that refreshes hourly — about 4,320 times over six months — to serve three queries. The clustering key 78% of queries already filter on. The warehouse idle most of the day. This is the hard part: a catalog can list your assets; only the Ledger can pair them with the queries that touch them.

One asset. Its ledger entry, six months in. illustrative

Assetmv_daily_sales_rollup
Typematerialized view · hourly refresh
Queries served3  (over 6 months of observed workload)
Refresh count~4,320  (hourly × ~180 days)
Refresh-to-serve ratio1,440 : 1
Source-query latency without itunder 20 seconds
Dependent dashboards0 (observed)

Every table, materialized view, and warehouse gets its own ledger entry. Cases (Moment 3) read this ledger to find which assets earn their keep and which don't.

03 / Case

Every recommendation is a ranked, falsifiable business case.

A Case binds the workload evidence, the rule that fired, the proposed action, the estimated ROI, confidence, blast radius, reversibility, dbt-managed ownership, and the measurement plan — into one artifact your team can approve. Advisor doesn't fire every rule that matches; it arbitrates a ranked portfolio and surfaces only the few worth human attention.

CASE #1 OF 12 illustrative DECOMMISSION · LOW BLAST RADIUS

Disable mv_daily_sales_rollup.

Evidence
Served 3 queries in 6 months. Refresh cost ≈ $4,200/month. Underlying source queries run in <20s without it.
Action
Disable the dbt-managed model and its incremental refresh.
Estimated savings
≈ $4,200/month refresh credits. Storage release at next compaction.
Confidence
High (Ledger attribution + serving-value floor).
Blast radius
3 dependent assets, all observed; no dashboards reference the MV directly.
Reversibility
Revert PR. MV recreated by next scheduled refresh.
Eligibility
dbt-managed ✓   ·   Engine: Snowflake ✓
Measurement plan
Test group = the 3 queries served by the MV in the last 6 months. Comparison group = 12 similar low-volume queries untouched.

A Case is not a tip. It is the full operating contract for a change.

04 / Change

Lands through your stack, on your trust ladder.

Approved Cases land as dbt-native changes — config, model, PR, MCP action — with dry-run, ownership detection, rollback windows, and approval gates. The trust ladder is yours: Observe → Advise → Propose → Autopilot. Every Change is approved by your team until a specific class earns delegation through measured outcomes.

The Change lands as a dbt pull request your team reviews like any other. illustrative

models/marts/mv_daily_sales_rollup.sql
-{{ config(materialized='incremental', schedule='hourly') }}
+{{ config(materialized='ephemeral', enabled=false) }}
--- spotonix-advisor case-001 ---
+# Disabled per Case #1: served 3 queries in 6 months, refresh ≈ $4,200/mo.
+# Cohort measurement plan + rollback path attached.
+# Reversibility: revert this PR; MV rebuilds in next scheduled run.
  • Dry-run + query plan attached to the PR description.
  • Owner detection — dbt-managed, hand-built, or externally managed.
  • Approval gates per class of Change.
  • Undo window on every applied Change.

05 / Proof

Measures the queries it promised to move.

After a change merges, Advisor measures the exact queries the Case targeted — before and after — against a comparison group of similar untouched queries. The before/after baseline nets out workload drift. The Health Record records predicted vs realized impact and files back to the Context Graph. (Before/after measurement is the operating method; the productized version is the v2 milestone.)

Health Record — Case #1, after 14 days of measurement. illustrative

PredictedRealized
Refresh credits avoided≈ 4,200 / month4,180 / month
Cohort p50 latencyno regression+1.6s (under threshold)
Control cohort delta−0.3% (drift only)
HypothesisConfirmed

Confirmed → filed back to the Context Graph. The "decommission unused MV" pattern climbs one rung on the trust ladder.

06 / Playbook

Confirmed outcomes become reusable operating memory.

Confirmed Cases become Health Records in the Context Graph. Over time, repeated successful patterns become reusable Playbooks — and a Playbook with enough Proofs in its band can climb the trust ladder, one rung at a time. Autonomy is not a switch. It is earned per play, by measured outcomes.

Example Playbook entries illustrative

  1. Decommission MVs unused for 60+ days 12 confirmed · 0 regressions · trust rung: Auto+undo
  2. Cluster fact tables where ≥70% of queries filter on a single key 8 confirmed · 1 partial · trust rung: Propose
  3. Auto-suspend warehouses idle past threshold 4 confirmed · 0 regressions · trust rung: Approve+run
  4. Right-size warehouses against attributed concurrency collecting · trust rung: Advise

Decommission is the first Case, not the last rung.

The first engagement starts with decommissioning unused materializations, pipelines, and warehouses — not because we begin at Autopilot, but because it is the cleanest first Case. Low blast radius. Short Proof window. A direct test of the Ledger: what does this asset cost, what queries does it actually serve, and what breaks if it goes away?

  1. 01 · Profile6 months of workload, captured.
  2. 02 · LedgerRefresh + compute + storage cost vs serving value.
  3. 03 · CaseDisable mv_daily_sales_rollup; 3 queries / 6 months; ≈ $4,200/mo refresh.
  4. 04 · Changedbt PR, owner-detected, dry-run, rollback ready.
  5. 05 · ProofCohort vs control: no latency regression, realized $4,180/mo.
  6. 06 · Playbook"Unused MV decommission" earns trust rung Auto+undo.

Autonomy is a rung you earn. Not a switch you flip.

A class of Change earns its next rung only when it has landed inside its predicted band six times running, with before/after Proof against a comparison group. Every rung carries undo. Most teams stay at Advise for the first quarter.

  1. 01 Observe Read-only profiling. No recommendations surfaced yet.
  2. 02 Advise Ranked Cases with evidence + estimated impact. Every Change is human-reviewed.
  3. 03 Propose Advisor drafts each Change as a dbt PR. Your team approves every one before it merges.
  4. 04 Autopilot A specific class earns delegation after six on-band outcomes. Runs within guardrails, with undo and an audit log.

Honesty edge: Before/after measurement is the operating method in preview engagements. The productized version against a comparison group is the v2 milestone. We will not headline guaranteed savings before that ships — every preview number is an estimate, every measured number is reported as measured.

Two phases. Read-only first. Change second, only if you opt in.

Phase 1 · Assessment · 30 days · read-only

Read-only credentials to one warehouse + your dbt project. Six months of query history captured. Top ten ranked Cases with evidence and predicted impact. Executive readout and go / no-go on Phase 2.

Phase 2 · Change sprint · optional · ~30 days

You pick one or two low-blast-radius Cases. Advisor drafts each Change as a dbt PR; your team approves before merge. The first Health Record after merge records predicted vs realized against an agreed baseline.