Before You Start
- A DinoAI Background Agent Environment connection so the agent can query your warehouse
- HubSpot connected on the DinoAI agent card under Settings → Integrations, so the workspace agent can read your CRM and write notes
- Read the Programmable Agents Quick Start first if you have never created an agent
What You’ll Build
- One DinoAI agent (
renewal-prep-reporter) that finds companies with a renewal in the next 30 days, queries their usage from your marts, and adds a summary note to each HubSpot company - A Bolt schedule that runs it every Monday at 07:00
1
Create the Agent
In the Agent app, open Agents, select New agent, and start from Start from scratch. Fill in the builder fields below, replacing the table names and the renewal property with your own. See Build an agent in the UI for a tour of the builder.Name: Goal:Backstory:Model: leave Auto selected.Allowed tools:
renewal-prep-reporterRole:read_file, run_sql_query, search_hubspot_objects, get_hubspot_object, list_hubspot_properties, add_hubspot_note.Output: leave empty. This agent writes its result to HubSpot directly rather than to a channel.Then select Deploy: choose Just here to make the agent live in the workspace immediately (ideal while you tune it), or Open a pull request to commit it as .dinoai/agents/renewal-prep-reporter.yml and govern it as code. See Creating Agents in the App.Start read-only if you want to review first. Leave
add_hubspot_note off the allowlist for the first few runs so the agent drafts each summary in the run logs without writing anything. Add it back once the notes read the way you want. For the full list of HubSpot actions and how their approvals work, see the HubSpot tool reference.Add your warehouse’s metadata tools to the allowlist so the agent looks 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 notes land on the matching HubSpot companies. Use the first couple of runs to tune the metric list and the note wording in the
renewal-prep-reporter, and set the task to:goal until the summary reads the way a CSM would want it.Watching a run. A full run can take a few minutes across several accounts. 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
In the same schedule, open the trigger settings, choose the Cron trigger, and set it to run every Monday at 07:00 in your timezone. Save and deploy the schedule.Monday 07:00 puts a fresh note on every renewing account before the account team plans its week. That’s it: the basic loop is done.
Extend the Agent
Each of these is an independent upgrade. Add them one at a time, only when the basic note starts feeling too shallow. Post a run summary to Slack. Add the Slack integration andpost_slack_message to the allowlist, and tell the agent to post one line at the end listing the accounts it prepped, so the CS team sees the run happened without opening HubSpot.
Score the renewal risk. Add a line to the goal telling the agent to label each account green, amber, or red based on the usage trend and idle features, and put the label in the header line so a glance down the accounts shows where to focus.
Break usage down by segment. Tell the agent to split a moved metric by market, product area, or seat type, so the note says “driven by the analyst seats” instead of just “down”.
Move the definitions into a spec file. When the metric list and thresholds outgrow the Goal field, put them in a markdown file like .dinoai/specs/renewal-prep.md (metrics, table locations, what counts as a risk) and change step 1 of the goal to “Read the spec file first”. CS ops then evolves the definition with a normal PR, without touching the agent.
Check pipeline health before reporting. Add get_all_sources and get_model_health (the dbt Discovery tools) to the allowlist and tell the agent to confirm the usage marts are fresh before it writes anything. This is what separates “usage dropped” from “the table did not refresh”.
Update a deal property, not just a note. Add update_hubspot_object to the allowlist and have the agent set a custom “usage health” property on the renewal deal, so the signal shows up in your pipeline views and reports, not only on the record.
Related Docs
- HubSpot Tool: the full list of CRM actions and how approvals work
- 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