Astro
customer-call-followup

customer-call-followup

zoomzendesknotionsalescustomer-successopenaifollow-up
Details
Visibility
public
Deploys
0
Build Number
c2ba17ec
Updated
Jun 23, 2026
Contributors
Repository
Integrations
OpenAIZoomZendeskNotionSlack (via built-in adapter)
Capabilities
Accept a meeting ID via webhook POST, chat, or Slack — extracts it from natural language automatical
Fetch a Zoom meeting transcript via OAuth2
Extract action items from the call, prepended with the account name
Create Zendesk support tickets for issues identified in the call
More blueprints
AGENT.md

Customer Call Follow-Up Agent

Your call just ended and the action items are still in your head. Customer Call Follow-Up Agent reads the Zoom transcript, pulls out every commitment and next step, raises Zendesk tickets for any issues that came up, and drops a clean summary into Notion — then posts the formatted action list wherever you're working.

Usage

Chat or Slack

Send a message containing the Zoom meeting ID — it can be a plain ID or natural language:

"87654321098" "Can you process my call with Acme from this morning — meeting 876 5432 1098"

The agent extracts and validates the meeting ID (9–11 digit number) from your message automatically.

Webhook

Trigger the agent programmatically by posting the meeting ID explicitly (e.g. from a Zoom recording-ready automation):

curl -X POST https://<agent-url> \
  -H "Content-Type: application/json" \
  -d '{"meetingId": "87654321098"}'

If WEBHOOK_SECRET is set, include the bearer token:

curl -X POST https://<agent-url> \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-secret>" \
  -d '{"meetingId": "87654321098"}'

If the transcript is still processing, the agent will respond with a clear message to try again in a few minutes.

What the response includes

  • Action items — numbered list, each prepended with the account name
  • Zendesk tickets — ID and link for any support issue raised during the call
  • Notion page — link to the newly created call summary page

Tools

ToolDescription
extract_meeting_idExtracts and validates a Zoom meeting ID (9–11 digit number) from free-form text
get_zoom_transcriptRefreshes OAuth token and downloads the VTT transcript for the meeting
create_zendesk_ticketCreates a support ticket for issues found in the call
update_notion_pageCreates a Notion child page with the call summary and action items

Environment variables

VariableDescription
OPENAI_API_KEYAuto-injected by Astropods
ZOOM_CLIENT_IDZoom marketplace app client ID
ZOOM_CLIENT_SECRETZoom marketplace app client secret
ZOOM_REFRESH_TOKENOAuth2 refresh token — obtained by completing Zoom OAuth authorization
ZENDESK_SUBDOMAINZendesk subdomain (the {subdomain} in https://{subdomain}.zendesk.com)
ZENDESK_AGENT_EMAILZendesk agent email for API auth
ZENDESK_API_KEYZendesk API token
NOTION_API_KEYNotion internal integration secret — from notion.so/my-integrations
NOTION_PARENT_PAGE_IDID of the Notion page that holds all call summary pages
WEBHOOK_SECRETBearer token to authenticate incoming webhook requests — required; all requests without a valid Authorization: Bearer <token> header are rejected with 401

Limitations

  • Meeting IDs must be 9–11 digit numbers (standard Zoom format). Vanity meeting URLs are not supported.
  • Fetches cloud recordings only; local Zoom recordings are not supported.
  • Requires a completed transcript (status: completed) — processing recordings return a friendly error; retry once Zoom finishes processing.
  • Zendesk tickets are created with the agent email as requester; the sales rep is not automatically assigned unless configured in Zendesk automation rules.
  • Notion output is plain text paragraphs; rich formatting (tables, checkboxes) is not used.