The layer that explains your lakehouse

Every tool sees its own layer.NaviLake traces the cause — and proposes the change.

Your warehouse sees what ran. dbt sees what was built. Your catalog sees what is stored. None can say why something broke or cost more. NaviLake traces it across layers, proposes the exact change, and checks afterwards that it worked.

NaviLake · Finding
Illustrative chain — Iceberg + BigQuery

2 systems correlated · 3 events in chain

Confidence88%
IcebergBigQuery2 layers correlated
IcebergRoot cause

Current metadata.json moved on — newer than the BigQuery pointer

BigQueryPointer is stale

External table still pins an older metadata file

BigQueryWhat you feel

Readers get a stale snapshot. No error. No alert.

Impact

Stale snapshot, no error

Table

1 external table

First fix

Re-point at current metadata.json

Illustrative — Iceberg catalog vs BigQuery external pointer. Not a live finding and not a dollar claim.

No migration

We sit in your existing stack. Nothing to move.

No agent required

A reader account. Nothing installed in your jobs.

We never read table rows

Metadata and job history only.

We do not host your catalog

Your catalog stays in your account.

The loop

Detect. Explain. Propose. You apply. Verify.

We propose. You apply through your normal process. We check afterwards that it worked.

  1. Detect
  2. Explain
  3. Propose
  4. You apply
  5. Verify

Architecture

Each connector you add changes what we can see.

A single connector shows you one layer. Two connectors unlock cross-system causality. BigQuery, dbt, and Iceberg REST are in the product today — and each connector you add compounds what NaviLake can trace back to its origin.

Live todayBigQuery · dbt · Iceberg RESTSpark next

  • Warehouse

    • BigQuery
    • Snowflake — roadmap
    • Redshift — roadmap
  • Transformation

    • dbt
    • dbt Mesh — roadmap
  • Open table formats

    • Iceberg REST
    • Delta — roadmap
    • Hudi — roadmap
  • Compute

    • Spark — roadmap
    • Dataproc — roadmap

Correlation graph

Compounds with every connector added

FindingIllustrative

analytics.events

Iceberg×BigQuery

Root Cause

Iceberg catalog current metadata.json moved on. BigQuery still pins an older file.

View findingView table
Live today
On the roadmap

Connectors

Connect any one. Connect more, and it traces causes across them.

Same weight, same shape. None of these comes first.

BigQuerylive

BigQuery

Read-only. Metadata and job history only.

Reads

Query historyTable metadataUsage

Never reads: table rows

Unlocks

  • Cost and usage patterns
  • Full-scan and cache analysis
  • Query fingerprints
dbtlive

dbt

Read-only. Manifest and run history only.

Reads

ManifestRun resultsLineage

Never reads: table rows

Unlocks

  • Build failures and run cost
  • With BigQuery: unused outputs
  • With BigQuery: zombie tables
Iceberg RESTlive

Iceberg REST

Read-only. Catalog metadata only.

Reads

SnapshotsTable propertiesTable metadata

Never reads: table rows

Unlocks

  • Catalog health
  • Table estate view
  • Cross-system joins

Connect two or more and NaviLake correlates across them automatically — that's where the causal chain comes from.

What we find

A table. A model. A query. Across layers.

Every finding says what happened, what the evidence is, and what to change. Dollars only when we can attribute them.

A table·TrustIcebergBigQuerylive

Nothing failed. BigQuery is reading an old snapshot.

Catalog current metadata.json moved on. BigQuery still pins an older file.

Traced across. Iceberg catalog location → BigQuery external table uris

Proposed change. Re-point the table at the current metadata file.

A model·CostIcebergdbtlive

The table is partitioned. The model never uses it.

fct_events is partitioned by day of event_ts. Compiled SQL never filters it.

Traced across. Iceberg partition spec → dbt compiled SQL

Proposed change. Add a predicate on event_ts, or evolve the spec to match the filters.

A table·HealthIceberglive

The table sets its own retention. Its snapshots outlived it.

Oldest snapshot is older than the retention in force, with nothing pinning it.

Traced across. Iceberg snapshots → declared snapshot retention

Proposed change. Expire snapshots on your compute. Recommend-only.

A table·CostBigQuerydbtlive

The table is still billed. Nobody has queried it in 90 days.

Writes stopped, then reads stopped. No dbt model points at it.

Traced across. BigQuery last read → dbt model mapping

Proposed change. Confirm no consumers, then drop. Your team applies it.

A pipeline·TrustdbtBigQuerylive

Nothing failed. Everything was wrong.

A model stopped writing. Status stayed green. Dashboards served frozen numbers.

Traced across. dbt write cadence → BigQuery table freshness

Proposed change. Restore the write, or stop serving the stale table.

A query·TrustBigQuerylive

The query failed again. No bill ever showed it.

A recurring query keeps erroring. Failed on-demand jobs never appear on the bill.

Traced across. BigQuery job history

Proposed change. Fix the query, or stop the schedule.

An Iceberg catalog knows the current snapshot. BigQuery knows which file it was pointed at. Neither notices when those disagree — because that fact lives in the relationship between catalog and warehouse.

The problem

Every tool in your stack only sees its own layer.

The engineer becomes the integration layer, stitching root causes together by hand.

× Single-layer tools

  • See cost, but not why
  • See models, but not the warehouse scan they cause
  • See lineage, but not whether anything still reads it
  • Hours of manual stitching per incident

NaviLake

  • Sees cost and the upstream model
  • Ties a full-scan job back to the dbt refresh that caused it
  • Cross-references lineage with real query history
  • Correlated and ranked automatically

Across layers

The insight isn't in any one layer. It's in between them.

Iceberg knows the partition spec. dbt knows the compiled SQL. Neither notices the model never filters the partition column, so pruning cannot apply.

NaviLake correlates across the boundaries to catch what slips between the cracks.

Illustrative example — Iceberg + dbt

NaviLake · Finding · illustrative
warning

fct_events

Partitioned by day of event_ts — compiled SQL never filters it. Illustrative example.

iceberg×transformation2 layers correlated

Iceberg layer

Table is partitioned by day of event_ts

Transformation layer

dbt compiled SQL never filters event_ts, so pruning cannot apply

Root Cause

Iceberg default spec partitions on event_ts. The mapped dbt model's compiled SQL never filters that column, so the partition cannot prune those reads.
Confidence
85%

Outcomes

From finding to verified

Every change is proposed with its evidence. Your team reviews and applies it through your normal process.

Optional Iceberg property writes — for example snapshot retention — are grant-gated, reversible, and default off. Compact, expire, and orphan stay recommend-only. Table-format stay-or-look-closer advice is on the roadmap, labelled as a heuristic.

NaviLake · Finding · illustrative
critical

warehouse.sales.order_events

Daily dbt refresh triggers full-table scans — partition pruning never kicks in. Illustrative example.

warehouse×transformation2 layers correlated

Transformation layer

dbt model order_events does a full refresh daily with no partition filter

Warehouse layer

BigQuery table partitioned by event_date — but the model never filters on it

Query pattern

Downstream BI queries filter by date range — they inherit the full scan cost from the upstream model

Root Cause

dbt model refreshes the entire table nightly without an event_date partition filter. BigQuery can't prune partitions, so every run scans the full history.
Confidence
87%

Verification

  1. Detect
  2. Explain
  3. Propose
  4. You apply
  5. Verify
  • proposed

    The change is recommended. Nothing has been applied.

  • delivered

    Your team applied it. We are re-measuring.

  • verified

    The measured metric moved in the intended direction.

  • no change

    The change landed. The metric did not move.

  • regressed

    The metric moved the wrong way.

For leadership

Your team already knows the data platform is slow and expensive.
Now you can show the evidence — table, job, and model — without stitching tools by hand.

First scan

Surfaces tables with no reads observed, orphaned pipelines, and storage patterns as soon as BigQuery, dbt, or Iceberg REST is connected.

2–4 hours

Time saved per incident — root cause surfaced instantly instead of manually stitched together across tools.

First sync

Time from a connected BigQuery project to a first finding — after jobs are in, not a public self-serve timer.

Every finding that carries a dollar has a confidence score and the evidence behind it. Findings without a defensible number show the pattern and omit the $. You and your team look at the same record.

This isn't a tool that adds to your stack of dashboards nobody checks. It's the thing that explains why the other dashboards say what they say.

Recommend only

NaviLake never runs DDL or DML in your warehouse. Every change is proposed with its evidence. Your team reviews and applies it through your normal process. Read-only on BigQuery: metadata and jobs, never table rows.

Take this to your budget review
"[Team] connected BigQuery and dbt and found:

→ 34 tables with no reads observed in 90+ days
→ 12 dbt models with no downstream readers
→ 3 tables flagged for missing partition filters

Prioritized by impact — with evidence for each."
*Illustrative example based on typical deployment

Status

Live today

Correlated together — findings from one layer enrich the other.

BigQuerylive
Usage, cost, query history, and fingerprints.
dbtlive
Model-to-table mapping, lineage, and run cost.
Iceberg RESTlive
Catalog health, estate view, and BigQuery joins.

Coming next

Each new connector compounds what every connector before it can see.

Sparkroadmap
Job-to-table attribution. Compact / expire / orphan execution. Not in the product today.

Security

Metadata-only by default. Your team approves every write.

We never read table rows. Roles, writes, and what we have proven are listed once below.

Access we ask for

Read-only. Metadata and jobs.

metadataViewerjobUserresourceViewer

Never requested

That role reads table rows.

dataViewer

Metadata-only, least-privilege

We read schema, statistics, and job history — never your actual data files, and BigQuery access is read-only.

Proposed changes

Every change is proposed with its evidence. Your team reviews and applies it through your normal process. NaviLake never executes against BigQuery. Compact / expire / orphan stay recommend-only; you run them on your compute.

Evidence frozen on the finding

Each recommendation keeps the evidence that produced it. The one catalog write we offer is an Iceberg property change that is grant-gated and default off: it needs an explicit org grant, an approved change stores the inverse, and it can be reverted. Warehouse rollback stays your team's change process.

Iceberg REST is in-product, proven on our synthetic tenant and local Polaris, not claimed on every customer catalog.

Not a cost dashboard. Not a catalog.

We didn't start by picking tools. We started by picking a problem.

"Every data team we've ever been part of had the same failure mode: five excellent tools, each confident about its own layer, none of them agreeing on the full picture. We didn't want to build another excellent single-layer tool. We wanted to build the layer that sits above all of them — one that gets more valuable every time you connect something new to it, not less.

BigQuery and dbt are where we started because that's where the pain is sharpest today. Iceberg REST is in the product now. Spark is next, and it won't be where we stop."

Access

Design-partner access. No public price list yet.

BigQuery + dbt is live today. Iceberg REST is in-product. We will tell you what a paid seat looks like after you have seen findings on your own jobs — not before. There is no 50-table free SKU, no Growth/Scale grid, and no Iceberg health plan on a price card we do not sell.

Email hello@navilake.com

See findings on your own stack.

No migration. No agent required. We never read table rows. We do not host your catalog.

Get started
↑ for engineers
Book a walkthrough
↑ for leadership