DATA OPS

dbt source freshness watcher with severity-routed alerts

Checks Snowflake loaded-at timestamps against each dbt source's freshness SLA, then routes warnings to Slack and hard breaches to a PagerDuty incident so stale data never…

CategoryData Ops
Enginesim
Difficultyintermediate
Triggerschedule
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerSchedule every 30 minutes
  • ActionLoad source freshness config from GitLabGitLabGitLab
  • ActionQuery Snowflake for latest loaded-at per sourceSnowflakeSnowflake
  • LogicBucket sources as fresh / warn / error by SLA
  • ActionOpen PagerDuty incident for error-level breachesPagerDutyPagerDuty
  • OutputPost freshness digest to SlackSlack

What it does

Reads the freshness thresholds (`warn_after` / `error_after`) declared on each dbt source, queries Snowflake for the max load timestamp of each source table, and compares the lag against the SLA. Fresh sources are ignored; warn-level lag pings Slack; error-level lag opens a PagerDuty incident so on-call can react before downstream models run on stale inputs.

When to use it

Run it on a tight cadence (every 30-60 min) for pipelines where data staleness causes real harm — finance close, ops dashboards, ML feature tables. Use it when `dbt source freshness` alone isn't loud enough to wake anyone up.

How it works

  1. 1A frequent schedule triggers the check.
  2. 2Pull source freshness config (table, loaded-at column, thresholds) from the dbt project in GitLab.
  3. 3Run a Snowflake query for the latest loaded-at per source table.
  4. 4Compute lag and bucket each source as fresh, warn, or error.
  5. 5Branch: warn sources go to a Slack message; error sources trigger a PagerDuty incident with the table and lag.
  6. 6Emit a combined freshness digest to Slack.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect GitLabRepos, MRs, pipelines, registry.
  2. 2
    Connect SnowflakeWarehouses, queries, shares.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Connect PagerDutyIncidents, on-call, escalations.
  5. 5
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  6. 6
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  7. 7
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.