Module 4: The Data Platform
You don't need to be a data engineer to work at Wasteology, but you will run
into this stack — in conversation, in lat.md, or in a repo you're asked to
touch. This module is a conceptual orientation: what each piece is for
and how they fit together. It is deliberately not a how-to-deploy guide;
that lives in each project's own documentation and in specialist tooling.
The three pieces, and what each one is for
| Tool | Role | Plain-language summary |
|---|---|---|
| Prefect | Orchestration | Schedules and runs data workflows ("flows"), tracks whether each run succeeded, and retries or alerts on failure |
| dbt | Transformation | Turns raw loaded data into modeled, tested tables in the warehouse using SQL — the "T" in ETL/ELT |
| Sling | Movement | Moves data between systems (e.g. SQL Server to PostgreSQL, or querying a schema directly) without hand-written extract/load code |
Each does one job. Prefect doesn't know SQL modeling; dbt doesn't move data between databases; Sling doesn't schedule or retry anything on its own. The platform composes them rather than building one tool that tries to do everything.
How the pieces run
Prefect flows here don't run on a server that sits idle waiting for work. Wasteology runs Prefect Cloud with Azure Container Instances (ACI) as the execution backend, using what's called a push-pool model: when a flow needs to run, Prefect Cloud provisions a fresh, ephemeral container directly via the Azure API, the flow runs to completion inside it, and the container goes away. There's no persistent worker process to keep alive or patch. This is why you'll hear people refer to "ACI push-pool ETL" as shorthand for "how our scheduled data jobs actually execute."
dbt, by contrast, runs via the dbt Cloud CLI rather than a self-hosted server — the transform logic (SQL models, tests) lives in a git-tracked project, and dbt Cloud executes it.
Sling connections are defined once, centrally, and then reused by name (rather than each project reinventing its own connection config) — which is part of why you'll see the same connection names referenced across multiple unrelated pipelines.
Wastey says
You'll sometimes see a data view inside the orchestration CLI's dashboard
that surfaces dbt freshness, Sling tables and row counts, and database
schemas side by side, read-only. That's a monitoring convenience — the
actual dbt run, dbt test, and ad hoc sling query work stays a CLI
operation, not something you click a button for.
Why this composition, not one tool
It would be simpler, on paper, to have one tool do orchestration, transformation, and movement. Wasteology doesn't, because each of these tools is genuinely best-in-class at its one job, and composing focused tools means a change to how you move data doesn't require touching how you model it, or vice versa. If you're troubleshooting a data problem, the composition also tells you where to look first: is data not arriving at all (a Sling / source problem), not being scheduled or retried (a Prefect problem), or arriving but wrong/stale after transform (a dbt problem)?
Hands-on lab
This lab is about recognizing the pieces, not operating them — you likely won't have write access to production data flows yet, and that's fine.
- Find a project's
lat.md/that documents its data pipeline (ask your onboarding buddy which project is a good example, or look for one with a Prefect flow). - Skim the section describing its flow(s). Identify: what triggers the flow (a schedule, or something else), what it moves or transforms, and where the output lands.
- If the project has a
dbtmodel directory, open one model file and read its SQL — you're not expected to understand every line, just to see that it's SQL, not custom code, doing the transformation. - Write one sentence describing which of Prefect, dbt, or Sling you'd suspect first if you were told "yesterday's numbers on a dashboard look stale" — and why.
Explore the data stack
Click each piece to see what it's responsible for.

Click any step to see what happens and who's responsible.
Knowledge check
Next up: Module 5 — Cloud and Access.