Prerequisites
- Slack connected (the agent posts the impact report via
post_slack_message). - Bolt runs producing dbt™ artifacts, which power the dbt Discovery tools the agent uses for lineage, exposures, node details, and model health.
- An account API key with the DinoAI agent API capability, and admin access to your dbt™ repo on GitHub to add Actions secrets.
- Familiarity with programmable agents.
Steps
1
Create the agent
In the Agent app, open Agents, select New agent, and choose Start from scratch. Fill in the builder fields below, leave Model on Auto. See Build an agent in the UI for a tour of the builder.Name: Goal:Backstory:Allowed tools (everything else is refused, see the Tools Reference):
impact-assessorRole:get_lineage,get_exposures,get_node_details,get_model_healthread_file,search_files_and_directories,ripgrep_searchrun_sql_querypost_slack_message
#analytics-eng).The agent is entirely read-only: it has no write or terminal tools, so it can never change the repo. The four dbt Discovery tools give it the real metadata from your Bolt runs’ artifacts:
get_lineage and get_exposures for the dependency graph, get_node_details for each consumer’s columns, and get_model_health for run and test status. Reading the downstream SQL on top of that catches explicit column selections that graph-level lineage alone would miss.2
Deploy the agent
Select Deploy and choose where the agent lives: Just here saves it to the workspace and makes it live immediately, Open a pull request commits it to your repo as
.dinoai/agents/impact-assessor.yml so it is governed as code. Either way, the agent is triggerable by name from the API. See Creating Agents in the App.3
Store Paradime credentials as GitHub secrets
Generate an account API key with the DinoAI agent API capability. Copy the API Endpoint shown when the key is generated, the key itself (it starts with
prdm_cmp_), and the workspace_token of the workspace the agent lives in (see Company & workspace token).In your dbt™ repo on GitHub, go to Settings → Secrets and variables → Actions and add three repository secrets:If you already set these up for the end-to-end PR reviewer in the same repo, skip this step: the same secrets work for both workflows.
4
Add the GitHub Actions workflow
Create Then add the trigger script as
.github/workflows/dinoai-impact-assessor.yml in your dbt™ repo. The workflow runs on every PR, and also on direct pushes to main that touch a model (where the report goes to Slack only, since there is no PR to comment on):.github/workflows/dinoai-impact-assessor.yml
scripts/pr_impact.py. It works out which models changed, triggers the agent with a structured task, waits for the run to finish, and posts the report as a PR comment on pull request events:scripts/pr_impact.py
Authentication uses an account API key (
api_secret starting with prdm_cmp_ plus workspace_uid), which requires paradime-io 6.0.0 or later. See Install and authenticate the Paradime Python SDK.5
Read the report
Open a PR that changes a model. The workflow triggers the agent, and when the run completes the report lands as a comment on the PR under CHANGED MODELS / DOWNSTREAM IMPACT / RISK ASSESSMENT / RECOMMENDATIONS, and in your Slack channel. On a direct push to
main, the report goes to Slack only.You can also run the same agent ad hoc: hover the agent card, select Chat, and ask:On a PR that changes a model, the DinoAI impact assessor check runs and the report appears as a PR comment and in your Slack channel, with exposures first (each dashboard or sync consuming the model), then every downstream model with the exact columns it selects and a risk flag for removals and type changes. A model with no downstream consumers gets a short all-clear instead. A PR that touches no model files skips the assessment (the Actions log prints “No model changes detected”). If the agent reports no lineage data, the workspace has no Bolt runs with dbt™ artifacts yet; run your production schedule once first.
How it works
The workflow’s trigger script diffs the PR (or the push tomain) to find the changed models and passes them to the agent in a structured task. Graph-level lineage then tells you that fct_revenue depends on fct_orders; it does not tell you whether it selects the column you are about to drop. The agent layers the metadata and the code: get_lineage and get_exposures enumerate the consumers from your Bolt artifacts, get_node_details and get_model_health add each consumer’s columns and current run and test status, then it reads each direct consumer’s SQL to determine which columns are explicitly referenced. Exposures always lead the report because a broken dashboard is noticed by stakeholders before a broken model is noticed by dbt™. When the run completes, the script posts the full report back to the PR as a comment.
Pair it with the end-to-end PR reviewer: the reviewer’s IMPACT section gives a verdict-level summary, while this agent produces the full standalone report when a change needs deeper scrutiny.
Next steps
End-to-end PR reviewer
Impact as one dimension of a full PR verdict.
dbt™ documentation backfiller
Keep the YAML docs accurate on the same PRs.
dbt Discovery tools
The lineage and exposure tools this agent uses.
Programmable Agents reference
The agent schema, tools, and API.