Your GTM belongs in gitRegister
Blog

Track the Next Steps Promised on Sales Calls

16 Oct
5min read

To track the next steps promised on sales calls, deploy Cargo’s next-step-tracker cookbook: every weekday morning one agent reads the call log in your go-to-market repo, records each dated commitment either side made, closes it only when the activity log shows it was kept, and posts what is due or overdue to one Slack channel. Its only write is its own ledger model.

What the cookbook deploys, from its code in getcargohq/gtm-skills on 2026-10-16: 9 resources (one agent, one ledger model, two read-only evidence models, three connectors, two folders), a weekday cron at 14:00 UTC, and at most one Slack message a day.

The problem, and the answer #

A promise made on a call (“we’ll send the security doc”, “legal will review by Friday”) lives in the call notes until someone remembers it. The answer is to record each promise once, when it is made, and to close it only on evidence, so the list that reaches Slack is what is actually still owed.

How it works, end to end #

  1. The cron fires at 14:00 UTC, Monday to Friday (0 14 * * 1-5), after the call-capture run at 07:00 UTC. The agent clones the default branch, so it reads call entries that were merged, not ones still in review.
  2. It extracts new commitments from every entry under cadence/log/calls/ dated in the last 30 days. A commitment is a specific thing one side said it would do for the other, in either direction. Unchecked action items count, and so does a promise quoted in the body that the actions missed. Checked items and STALE-CHECK items do not. A vague intention is never recorded.
  3. It records each one once in the commitments model, keyed on the entry path plus a slug of the promise, with the account, its owner, who promised, the promise quoted as written, and a due date. When no date was said on the call, the due date is the call’s date plus 7 days for a promise the team made and plus 14 days for one the customer made.
  4. It closes what was kept, only on a plain match: a meeting, call, email, note or task in gtm_activities on that account after the call, or a later call entry saying it happened. The closed row cites that record. Anything less stays open, because a promise closed by mistake is the failure nobody notices.
  5. It posts what is due. Open commitments due today or earlier, not already flagged today, go out as one message grouped by owner, overdue first, each line saying who promised, when, how many days overdue, and what would close it. With nothing due, it posts nothing.
  6. It marks them flagged only after the post succeeds, so a failed post is retried by the next run.

“Today” is computed in TRACKER_TIMEZONE, America/Los_Angeles by default; change it together with the cron.

What it needs and what it costs #

  • A call log under cadence/log/calls/, written by the call-capture cookbook or by hand in the same shape.
  • GitHub, Slack and Anthropic connectors. GitHub is only the clone path: the agent commits nothing. Slack is postMessage with the channel locked, because a flag quotes what a customer said on a call.
  • Activity evidence in the native gtm_activities and gtm_accounts models, filled by whatever already logs your team’s activity. A team on HubSpot, Salesforce or Attio swaps them for connector-backed models of the same names, and the prompt does not change.
  • @cargo-ai/cdk 1.0.92 or later.

The evidence reads are SQL over workspace models and bill nothing, and Slack postMessage carries no credit price in Cargo’s action catalog. The recurring cost is the agent run each weekday, billed as language model tokens through your Anthropic connector. It grows with the number of call entries in the 30-day window and open commitments to check, not with the size of the activity log.

What it will not do #

  • Contact a customer.
  • Write to any model but its own commitments ledger. The evidence models are read-only, so it cannot close its own commitments by logging an activity.
  • Edit, commit or push anything in the repository, or open a pull request.
  • Post anywhere but the locked channel, or more than once a day.
  • Turn a customer’s promise into a task for the rep. It is flagged as a follow-up.

Deploy it #

shellscript
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com
cargo-ai project add cookbook/next-step-tracker
cargo-ai project plan
cargo-ai project deploy

Signing up from the CLI needs no browser and no card, and comes with 100 free credits. Set channelId in infra/next-step-tracker/agents/tracker.ts before you plan. The next-step-tracker cookbook page lists every resource and placeholder.

Promises that go quiet often mean a deal that went quiet: nudge stalled deals every week with a drafted follow-up.

Frequently asked questions #

AurelienOct 16, 2026

Give your agents a runtime

Bring the agents you have.Start free, deploy in one command.