AI & data

Every report and agent reading the same numbers

Your reporting stack carries four definitions of active customer, all four in use. We rebuild it as one governed platform — modelled tables, tested pipelines, metrics defined once. Analysts stop reconciling; agents stop guessing.

  • Fixed scope
  • No big-bang cutover
  • Demo in 14 days
  • Full IP transfer

What modernisation actually means here

Most data estates were not designed; they accreted. A read replica someone pointed a dashboard at in 2019. A nightly export into a spreadsheet finance now depends on. Two teams computing churn differently, both correctly, by their own definitions. None of it is broken enough to fail loudly — it just makes every number arguable and every question slow. An analyst who gets an odd figure checks it against instinct and asks someone. An agent does not.

The work splits into three layers that get confused with each other. Getting data in reliably and incrementally is a plumbing problem: late-arriving rows, schema drift, backfills that must be safe to run twice. Modelling it into tables a human can reason about is a domain problem. Defining metrics once, so every dashboard and every agent computes them identically, is a political problem wearing a technical costume — and it is the one that decides whether the rest holds.

Constraints that shape Data Modernization work, what each forces, and how the studio responds
What is true of this workWhat it forcesWhat we do about it
Reports stay live while you migrateNo big-bang cutover windowOld and new run parallel
Metric definitions conflict across teamsA human must arbitrateNamed owner signs each definition
Source schemas drift without warningPipelines break silently downstreamContract tests and column lineage
Warehouse compute bills by the queryOne bad model costs real moneyPer-workload budgets and auto-suspend
Agents do not sanity-check answersWrong grain returns confident numbersJoins and grain fixed in config

In scope

  • Ingestion pipelines and change capture
  • Dimensional models and metric definitions
  • Semantic layer serving BI and agents
  • Parallel run, cutover, and decommission

Not in scope

  • Rewriting the source applications themselves
  • Operating the platform after handover
  • Training your analysts on BI tooling

Handled by

What we build

01

Ingestion and change capture

Log-based capture from operational databases plus connectors for SaaS sources, landing raw and replayable. The hard part is not the first load — it is late-arriving rows, schema drift, and safe backfills.

Replayable ingestion pipelines
02

Warehouse and lakehouse builds

Storage and compute sized to your real query pattern, on open table formats where portability matters. Includes what nobody quotes for: compaction, snapshot expiry, and partitioning that survives growth.

Warehouse or lakehouse layer
03

Dimensional modelling

Facts, dimensions, and slowly changing history, built so a question about last quarter still returns last quarter’s answer. Raw staging tables stay away from analysts, because that is how definitions fork.

Fact and dimension tables
04

Semantic layer

Metrics, entities, and joins defined once in version-controlled config, then served to BI tools, notebooks, and agents through one interface. Grain and filter logic stop being re-guessed per question.

Version-controlled metric definitions
05

Tests, lineage, and alerts

Freshness, volume, uniqueness, and referential tests running with the pipeline, wired to whoever is on call. Column-level lineage tells you which dashboards and agents a changed source column breaks.

Data quality test suite
06

Cost attribution

Query-level spend tagged by team, model, and environment, so a runaway dashboard traces to an owner rather than one line on an invoice. Budgets and auto-suspend set before production.

Cost attribution dashboard

How the work runs

  1. 01Week 1

    Estate audit

    We trace what is actually read, not what exists. Query logs show which tables were touched in ninety days, which dashboards nobody opens, and which report the CFO forwards every Monday.

    You getRanked inventory of live assets

  2. 02Week 1

    Metric arbitration

    We collect every existing definition of your core metrics from SQL, spreadsheets, and people’s heads, then put the conflicts in front of the person allowed to settle them. Uncomfortable meeting, highest-value hour of the project.

    You getSigned-off metric definitions

  3. 03Week 2

    Thin slice build

    We build one domain end to end — ingestion, models, tests, metrics, one dashboard — rather than every pipeline at half depth. Fourteen days from kickoff you are querying real production data.

    You getOne domain live end to end

  4. 04Weeks 3–16

    Parallel run and cutover

    We widen domain by domain, old and new running side by side until totals reconcile. Where they disagree we settle which is wrong, usually the legacy report, then move consumers across one at a time, reversibly.

    You getReconciliation report and decommission runbook

What you are handed

  • Ranked inventory of every live data asset
  • Metric definitions in version-controlled config
  • Ingestion pipelines with replayable backfills
  • Modelled warehouse or lakehouse layer
  • Semantic layer serving BI and agents
  • Data quality test suite and alerts
  • Column-level lineage across the estate
  • Cost attribution dashboard by team
  • Cutover runbook and rollback plan

Typical stack

Storage

SnowflakeBigQueryDatabricksPostgresApache IcebergS3 / GCS

Movement

DebeziumKafkaAirbyteFivetranAirflowDagster

Modelling

dbtSQLMeshMetricFlowCubeDuckDBTrino

Governance and ops

Great ExpectationsOpenLineageDataHubOpenMetadataTerraformGrafana

The calls we make, and why

Should we go lakehouse, or is a warehouse enough?

Warehouse, unless something specific forces the lakehouse.

For mostly relational data under a few hundred terabytes, a managed warehouse is cheaper once you count engineering time, and faster to run. Open table formats buy portability you may never spend, at the cost of more moving parts.

We’d choose otherwise whenyou have heavy semi-structured or ML workloads, or several engines need the same tables.

Do we need a semantic layer, or can AI just write SQL against our tables?

Semantic layer, whenever answers are trusted without review.

Query generation against raw schemas is good now, and still wrong in the ways that hurt: silent fan-out on a join, the wrong grain, a filter that quietly drops refunds. A semantic layer moves those decisions into reviewed, version-controlled config.

We’d choose otherwise whenthe work is exploratory, on a sandbox, and a human reads every number before acting.

Should we build this batch or streaming?

Batch, until a decision actually changes on minutes.

Streaming adds a whole operational surface — ordering, replay, late events, idempotent writes — and most of the dashboards it feeds get read once a morning. Batch with tight scheduling covers analytical reporting at a fraction of the operational cost.

We’d choose otherwise whenthe consumer is operational — fraud checks, inventory, live pricing, an agent acting mid-session.

Do we migrate the old transformation logic or rewrite it?

Rewrite the models, port the business rules.

Mechanical translation of stored procedures carries forward every workaround nobody remembers the reason for, and that is where migrations lose their schedule. We read legacy SQL as documentation, extract the rules that still matter, and rebuild them as tested models.

We’d choose otherwise whena procedure is well understood, well tested, and genuinely load-bearing — then lifting it is cheaper.

This fits if

  • Your dashboards disagree and nobody can say which number is right
  • Analytics runs on a read replica that is now slowing production
  • You want agents querying company data and need the answers right
  • Warehouse spend is climbing and nobody can attribute it to anything
  • A previous migration stalled halfway and you are running two platforms

Look elsewhere if

  • Your data fits in Postgres and a warehouse is pure overhead
  • Nobody internally has the authority to settle what a metric means
  • You want a dashboard refresh, not the pipelines and definitions underneath
EngagementFixed-scope build
Typical length8–16 weeks
How it startsA paid one-week audit of your query logs, pipelines, and the reports people argue about.

Questions we get asked

How much does this cost, and what drives the number?

Scope is fixed before we start, so the number comes from the audit rather than a rate card. What moves it: how many source systems, how much undocumented transformation logic exists in stored procedures and spreadsheets, and how many downstream consumers must be migrated. Source count is usually a smaller cost than the number of reports needing reconciliation.

What happens when the new numbers do not match the old ones?

We expect them not to match, and the reconciliation stage exists to find out why. Most gaps trace to a legacy report that was quietly wrong — a filter dropped, a timezone, a join duplicating rows. We document each difference, get a decision on which version is correct, and no report is cut over until that decision is written down.

Who owns the code and the models at the end?

You do, in full — pipelines, models, semantic definitions, infrastructure code, and the CI that runs them all transfer to your accounts and repositories. We do not keep a hosted component you have to rent from us afterwards. The 30-day warranty covers defects in what we shipped; after that, either your team runs it or you take a support retainer.

What do you need from our team while this runs?

One person with the authority to settle metric definitions, and about a day a week from someone who knows the source systems. Everything else we read from query logs and code. The definition owner is the real dependency — without one, arbitration stalls and every model downstream of it waits on a meeting.

How long before we see anything working?

First demo lands 14 days from kickoff: one domain running end to end on real production data, with its metrics defined and a dashboard reading from the semantic layer. It will be narrow on purpose. Seeing one vertical slice working is the only reliable way to judge whether the modelling matches how your business actually thinks.

Tell us the requirement.

Thirty minutes with the engineers who would build it. You leave with a scope, a timeline and a fixed price — or an honest no, and the reason why.