Skip to content

Services/U5/Data engineering

Data engineering

Pipelines in dbt and Airflow or Dagster from your source systems into one warehouse, with systems reconciled and lineage on every figure.

Talk to our team →
Format
Fixed scope build
Best for
Businesses whose AI plans stall on data spread across systems that disagree
Stack
dbt, Airflow, Dagster, Apache Kafka, Spark
Runs on
Your servers, on premises

Agents and reports read data that ties out

Every source is reconciled before anything reads it, and every figure traces back to its row.

  1. 01SourcesERP, CRM, files
  2. 02Raw copyAirflow or Dagster
  3. 03Modelleddbt, tested
  4. 04ReconciledSystems agree, breaks listed✓ ties out
    ✕ break listed
  5. 05ServedAgents and reports read here

Lineage recorded at every step, so any figure traces back to its source row

You leave with one place your agents and reports read from

  1. 01

    One place your agents and reports read from

  2. 02

    Systems reconciled, with breaks listed every day

  3. 03

    Every figure traced to its source record

What it is

AI data engineering is the work of getting data ready for agents, models and reports to use. It covers pipelines (scheduled jobs that copy, test and clean data) from your source systems, and a warehouse or lakehouse to hold the result. It also covers reconciliation between systems, matching of customers and suppliers across systems, and lineage, which is the record of where each figure came from.

An agent that reads a customer balance from the wrong system gives the wrong answer with full confidence. AI projects in banks, insurers and manufacturers stall on this layer more often than on the model.

The problem

A wealth manager holds client records in a CRM, holdings on the platform, fees in the ledger and documents in a file share. A manufacturer holds orders in the ERP, supplier invoices in accounts payable and quality records in spreadsheets. Each system names the same customer or supplier differently, and the systems disagree on totals. An agent that reads from one of them answers from that one view. A month end report built across them needs a person to reconcile it by hand first.

Architecture

Airflow or Dagster schedules each pipeline and runs the steps in order. Where a source system publishes changes as events, Apache Kafka carries them into the warehouse as they happen. Spark loads large histories that are too big for a single database query.

Transformations are dbt models. A dbt model is a SQL query kept in your repository that builds one table from others. dbt tests run at every load and check row counts, totals, unique keys and formats. The pipeline stops when a test fails, and the bad load does not reach a report or an agent.

The data lands in a warehouse or lakehouse in your own environment, such as PostgreSQL. We size the design to how the data is queried. A daily finance report and an agent that answers questions all day need different things.

History is stored as it stood on each date with dbt snapshots. A report for 30 June 2025 run today returns what the business knew on 30 June 2025, with later restatements kept separate.

Entity resolution and reconciliation

Entity resolution matches one customer, supplier or counterparty across systems by name, ABN, address, account number and other identifiers. Matches below a set confidence go to a person. Each entity gets one identifier that every downstream system uses.

Reconciliation compares systems that must agree, such as the subledger and the general ledger, or the platform and the CRM. It lists each break with the records behind it.

Lineage, access and monitoring

dbt records lineage from each table back to its sources, and each row keeps the key of its source record. An auditor can trace a reported figure to the record and the step that produced it. Access is granted by role in the warehouse, and columns that hold personal information are masked for roles that do not need them. Grafana shows freshness and test results for every pipeline and alerts your team when a load is late or fails.

Where agents and reporting fit

The warehouse is the layer that LLM integration and RAG, workflow automation and your reports read from. Document text and embeddings sit in pgvector, the vector search extension for PostgreSQL, and the same pipeline keeps them in sync with the source. AI payables matches an invoice to the purchase order and the receipt. That match needs one supplier entity across the ledger, the purchasing system and the inbox.

For a Sydney builder we made about 10,000 job files, site notes and tenders machine readable on a private server they rent before we built any automation. The estimating automations that followed all read from that layer.

Handover

Your team owns the pipelines at the end. The code sits in your repositories, and the tests, the alerts and the break report run without us. The runbook says what to do when a source system changes its format. Pipelines and storage stay in your own environment, hosted as described under on-prem AI deployment.

ai-data-engineering.stack.yaml
# Tools on this service. Same stack across every Zinto build.
service: Data engineering
runs_on: your servers, on premises
stack:
  - dbt
  - Airflow
  - Dagster
  - Apache Kafka
  - Spark
  - PostgreSQL with pgvector
  - Grafana

Questions

We already have a data warehouse. Do we need this?

The warehouse stays and we build on it if it is sound. The work is usually the parts a reporting warehouse leaves out, such as one customer matched across systems, history kept as it stood on each date, and lineage down to the source record. We will tell you in the audit if what you have is enough.

What is entity resolution?

Entity resolution means finding the records in different systems that refer to the same customer, supplier or counterparty. Acme Pty Ltd in the ledger, ACME in the CRM and an ABN on an invoice become one entity with one identifier. Matches below a set confidence go to a person to confirm.

Why dbt and Airflow or Dagster?

dbt keeps every transformation as SQL in your repository, with tests and lineage that your team can read. Airflow and Dagster are schedulers that run the pipelines in order and retry or stop when a step fails. We use the scheduler you already run, and we pick one of the two when you have none.

Does our data have to move to the cloud?

No. The pipelines and the warehouse run where you choose, in your own cloud account, on your own servers, or across both. Customer and financial data stays inside the environment you control.

Can you work alongside our own data team?

Yes. We build in your repositories and with your tooling, your team reviews each change, and they own the pipelines at handover. Where you have no data team, we train the person who will run it.

Tell us where your hours go.

We map the work, size the hardware and price what is worth automating.

Talk to our team →