Before You Start
- A DinoAI Background Agent Environment connection so the agent can query your warehouse
- Slack integration connected, with the Paradime bot invited to your metrics channel
- Read the Programmable Agents Quick Start first if you have never created an agent
What You’ll Build
- One DinoAI agent (
weekly-metrics-reporter) that queries your marts, compares the last complete week against the previous one, and posts a digest to Slack - A Bolt schedule that runs it every Monday at 08:00
1
Create the Agent YAML
Commit this file at
.dinoai/agents/weekly-metrics-reporter.yml. Replace the table names and metric list in the goal with your own; three to five metrics is plenty to start..dinoai/agents/weekly-metrics-reporter.yml
Add your warehouse’s metadata tools to the allowlist so the agent can look up table structure instead of guessing, for example
list_all_columns_in_snowflake_table on Snowflake or list_all_columns_in_bigquery_table on BigQuery. See the Tools Reference.2
Run It Once
In the Bolt schedule editor, click Add command, pick Run Paradime DinoAI Agent, choose Save and hit Run now. The agent’s messages stream into the Bolt run logs, and the digest lands in your Slack channel. Use the first couple of runs to tune the metric list and the wording in the
weekly-metrics-reporter, and set the task to:goal until the digest reads the way you want.Knowing the agent is alive. A full run can take a few minutes, so the template makes the agent announce itself: a kickoff line when the run starts and a short progress note if a step runs long, both in the same Slack thread as the final digest. For a closer look while a run is in flight, the Bolt run logs stream every agent message live, and the background agent UI shows per-session traces of each tool call and lets you pause a run that has gone off on a tangent.
3
Schedule It Weekly
Set the schedule’s trigger to a Monday morning cron. If you manage schedules as code:Monday 08:00 gives the weekend’s data time to land and puts the digest at the top of the channel when the week starts. That’s it: the basic loop is done.
Bolt schedules YAML
Extend the Agent
Each of these is an independent upgrade. Add them one at a time, only when the basic digest starts feeling too shallow. Drill down in the Slack thread. This one needs no setup at all. Mention the bot in the digest thread (“does that drop hold if you exclude the US?”) and it resumes the same session with full context, runs the extra queries, and answers in the thread. See Slack Agent. Break metrics down by segment. Add a line to thegoal telling the agent to split any moved metric by market, device OS, or another user attribute, so the digest says “driven by Android” instead of just “moved”.
Move definitions into a spec file. When the metric list outgrows the YAML, put it in a markdown file like .dinoai/specs/weekly-metrics.md (metrics, table locations, significance thresholds, minimum slice sizes) and change step 1 of the goal to “Read the spec file first”. Analysts then evolve definitions with a normal PR, without touching the agent.
Check pipeline health before reporting. Add list_bolt_schedules and get_bolt_run_logs to the allowlist and tell the agent to verify the schedule that builds your marts succeeded for the reporting window. This is what separates “conversion dropped” from “the table didn’t refresh”.
Attach business context. If you keep a table of business events (campaigns, outages, releases), tell the agent to check it for events that overlap a movement and mention them in the digest.
Add a monthly deep dive. Create a second Bolt schedule that triggers the same agent with a different task message, for example “Compare the last complete month against the previous three months”, timed a day before your monthly review.
Related Docs
- Programmable Agents Quick Start: getting started with DinoAI agents
- YAML Configuration: full reference for agent config options
- Tools Reference: all available tools, including per-warehouse metadata tools
- Triggering from Bolt: scheduling agents with cron and other triggers
- Slack Agent: mentioning the bot and resuming sessions in threads