ACBDiDATAP.AI

Data Governance
Evidence by Construction

Where did this number come from? Who can see it? Is the table open or locked in? Our layer answers all three for every column, on every build — from the dbt project you already have, on Iceberg storage you own, inside your VPC in Australia.

Column-level lineageData quality testsPII map & maskingIceberg you ownRuns in your VPC

Four things every regulated data team gets asked

Lineage · Quality · Personal data · Ownership — one layer, generated on every build.

1

Column-level lineage

Click any number, see every source it was computed from.

  • —Table and column lineage from the dbt project you already run
  • —No migration, no new catalog, no per-seat licence
  • —Lives inside your dbt docs: click a table → its documentation; every docs page links back
  • —Stored per build in your own database, queryable in plain SQL
2

Data quality, generated

Tests are written with the pipeline, not after it.

  • —Row-count reconciliation between layers
  • —Range, set and null expectations derived from the data profile
  • —Failures repair themselves before the build goes green
  • —Results kept per run for audit
3

Personal data, followed

A scanner finds email. Lineage finds the six columns derived from it.

  • —Classification propagates through every rename, join and hash
  • —Masking policy per sensitivity level, ready to apply — hash, redact, partial
  • —AI answers respect the same classification
  • —Default: classify, don’t block — restrictions only when you decide
4

Open storage you own

Every table the layer builds is Apache Iceberg on your object storage.

  • —Snowflake, Databricks, Athena, ClickHouse read the same files
  • —Move engines without moving data
  • —Point-in-time snapshots for regulators
  • —Nothing leaves your VPC, in Australia

Decouple your data from your engine. Keep one lineage.

Open table formats freed the files from the engine. Governance is still inside it. In our own build, shared tables live once on Apache Iceberg, are produced on one engine and consumed on two others — and columns are still traced end to end across the engine boundary, for everything that runs through the project. Read the 3-minute note →

3
engines across two clouds, in our demo build
46
column edges that cross an engine boundary
0
unresolved columns, and no table data copied between engines
Open it full screen →Click any column. Its provenance lights up in both directions, across the engine boundary.
Second shape · batch and realtime

One stream lands once. A batch engine and a realtime engine read it, independently.

The graph above is a chain: one engine produces, the next two consume what it made, and the lineage crosses each boundary in turn. This one is different. A tick stream is written once as Iceberg by the streaming sink and catalogued once. Snowflake builds the audit-grade marts from it. ClickHouse builds the same models, plus a live quote board, for sub-second reads. Neither reads the other. The same dbt models run on both, and the lineage shows exactly that: two consumers, one copy, no chain.

Measured on 28 September on our own CFD tick stream: four raw tables, 1.9 million ticks each; Snowflake and ClickHouse consumers built and tested; ClickHouse reading the Iceberg files in place through its table function. Snowflake-to-ClickHouse reads are not part of this graph and are not claimed.

 Chain (above)Batch + realtime (below)
Raw layerGlue-managed Iceberg, daily pricesGlue-catalogued Iceberg, streaming ticks
ProducerAthena, a dbt projectKafka Connect sink, no dbt
ConsumersSnowflake, then Databricks reads Snowflake’s martSnowflake and ClickHouse, side by side
Between consumersA real dependency, drawn as a boundaryNone, drawn as two stacked lanes
Same models on two enginesNo, each engine has its own modelsYes, six models built on both
Measured12 tables · 75 edges · 46 cross-engine17 tables · 179 edges · 67 cross-engine
Open it full screen →The raw lane sits between the two consumers. No engine boundary is drawn, because there is none.

One product with your dbt docs

Same project, same URL, two views. Nothing to install beside dbt docs.

Lineage view with the provenance of close_usd highlighted
Lineage view. Click a column, its provenance lights up across every layer.
dbt docs Code tab showing the table is configured as Iceberg
dbt docs. Click the table, see the logic — and that it is Iceberg on your storage.

How it works

01

Point it at your dbt project

Read-only. Nothing changes in your warehouse.

02

Every build produces the evidence

Lineage, classification, tests — written into dbt docs and your own tables.

03

Decide what to enforce

Masking, access, human approval — policy in a config table, changed without code.

Made for Australian regulated finance

Runs in your own cloud account, in the region you choose: AWS in our own deployment, with adapters for Azure and Google Cloud. Models you choose. Formats you own. Designed for IRAP-aligned controls.

ObligationWhat you get
APRA CPS 230 / CPS 234Per-column classification, source-to-report lineage, reproducible per build
ASIC reportingLineage from source systems to each reported field
AUSTRAC record-keepingClassification and retention rules, snapshot evidence
Privacy Act APPsPersonal-information inventory, who can see it, masking evidence

Open storage used to cost you governance.
Not any more.

Open table formats freed the files from the engine. Lineage, quality evidence and ownership stayed inside each one, so the audit trail stopped at every engine boundary. The layer carries it across, in your own tables.

Out of the box, in our own build
  • —Each engine showed its own lineage; the path stopped at every engine boundary
  • —Evidence lived in each tool’s own catalog and screens
  • —Lineage of code and lineage of real tables were not distinguished
  • —Connecting the engines safely took days of catalog, role and trust configuration
With the layer
  • +One column-level path across every engine and repository
  • +Evidence in plain tables in your own database; one SQL view lists every column that crossed an engine
  • +Every table marked built or not built, so a picture cannot claim what has not run
  • +Repeatable kits that render the exact policies and statements for your environment

See it on your own dbt project

One afternoon, read-only, inside your account. Lineage and a personal-data map you did not have yesterday.