Your GTM belongs in gitRegister
Blog

Prep Every External Meeting Automatically from the Calendar

16 Oct
6min read

To prep every external meeting without anyone asking, deploy Cargo’s meeting-prep cookbook: the moment a meeting with someone outside the company is booked on Google Calendar, one agent posts a Slack card with who is joining, the open deal, the line that mattered last time, one recent public event, and a call tip grounded in your go-to-market positioning. Reschedules and cancellations thread under the card. Nothing runs on a schedule.

What Cargo ships for this job: the Google Calendar integration (read-only, connected with OAuth or domain-wide delegation) shipped on 2026-10-07 and its agent trigger on 2026-10-09. The cookbook in getcargohq/gtm-skills deploys 10 resources on top of it: one agent, three connectors, four native models and two folders.

The problem, and the answer #

A morning prep run misses the meeting booked at 9:55 for 10:00, briefs next week’s meetings alongside today’s, and needs a ledger so it does not post twice. The answer is to let the booking start the research: the calendar trigger fires once per change, and each meeting gets its own conversation with the agent, which is the record of what was posted.

How it works, end to end #

  1. Cargo watches the calendars. With domain-wide delegation, Cargo opens a push channel on every watched user’s primary calendar in your Google Workspace; with OAuth, on one person’s. An hourly job enrolls new users and renews channels, so a new trigger starts receiving within the hour.
  2. A change wakes the agent once. The trigger is set to changes: ["created", "updated", "cancelled"] and externalOnly: true, so internal meetings and meeting rooms never wake it. A meeting on five attendees’ calendars wakes it once, not five times. Meetings that have already ended are dropped before any agent wakes, and a change to a recurring series wakes it once.
  3. One conversation per meeting. Every later change to the same meeting, or to the same series, lands in the same conversation, so the agent sees its own card above each update.
  4. It researches, in order: the account in gtm_accounts whose website matches an attendee’s email domain, each attendee in gtm_contacts by email, the open deal in gtm_opportunities, the newest gtm_activities row on the account, your positioning, ICP, objections and competitors from the workspace context, and at most two web searches for what the models do not hold.
  5. It posts the card to one Slack channel, locked on the action, mentioning the organizer (found by email with Slack listUsers). The last line lists every source used.
  6. It threads what matters later. A moved start or end, an outside attendee joining or leaving, or a new title gets one short reply in the card’s thread. A cancellation gets :x: Cancelled. A description edit, a room change or an RSVP posts nothing.

The invite’s description is written by whoever sent it, often someone outside the company, so it reaches the agent fenced as data and the prompt never takes instructions from it. A LinkedIn URL appears on the card only when a contact row or a search returned it for that exact person; otherwise the card says “no profile on file”.

What it needs and what it costs #

  • Google Calendar, connected one of two ways. For the whole team, a Google Workspace super admin authorizes Cargo’s client id once in the Admin console for calendar.readonly and admin.directory.user.readonly, then signs in with Google on the connector form. For one person, OAuth. Delegation is connected in the Cargo app, not in code.
  • A Slack connector, with channelId set to the channel the cards may land in. Locking it keeps a card that quotes a deal amount out of a customer shared channel.
  • An Anthropic connector for the model.
  • No CRM. Accounts, contacts, deals and activity are the shared gtm_ native models. A team on HubSpot, Salesforce or Attio swaps them for connector-backed models and maps the column names in the prompt. With empty models, the card is a web-only brief without the deal and last-time lines.
  • @cargo-ai/cdk 1.0.92 or later.

Each booking, material change or cancellation is one agent run, capped at 25 steps. The Google Calendar and Slack actions it uses carry no credit price in Cargo’s action catalog. Web search is priced in code at 0.4 credits per search plus 0.02 credits per 1,000 tokens, and a card uses at most two. The model’s tokens are billed through your Anthropic connector.

What it will not do #

  • Write to the calendar or to the gtm_ models. Both are read-only.
  • Email or message a prospect, or post anywhere but the locked channel.
  • Edit the workspace context.
  • Brief internal-only meetings, unless you set externalOnly: false and tell the prompt which internal meetings count.
  • Post about a meeting that has already ended, or post a second card for the same meeting.
  • Research one company on demand in a chat. That is the research-account skill.

Deploy it #

shellscript
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com
cargo-ai project add cookbook/meeting-prep
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. Connect Google Calendar in the app first, set channelId and userScope in infra/meeting-prep/agents/briefer.ts, then plan. The meeting-prep cookbook page lists every resource and placeholder.

The card’s “last time” line is as good as what is logged: capture every sales call into your go-to-market repo so the call tip has something to lean on.

Frequently asked questions #

AurelienOct 16, 2026

Give your agents a runtime

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