Agent Templates
Revenue forecast commentary

Forecast commentary agents that act on-behalf-of your RevOps team

Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.

Revenue forecast commentary
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
What does this week's forecast look like?
J
Fetching open pipeline
Open opportunities
salesforce_soql_execute
Open deals by stage
hubspot_deals_search
Snapshot log
googlesheets_append_values
Forecast - 2026-W31 - 3.5x coverage
Posted to #revenue-ops
ON TRACK -- $350k open pipeline vs $100k quota
Snapshot rows appended to the Forecast Log tab
At-risk flags
Negotiation: only 1 deal in a late stage
2 open deals have a close date in the past
Message Claude...
Trusted by teams shipping agents to production
Revenue forecast commentary
Sample Agent for Acme
May 22 · 10:00 AM ·
47s
What does this week's forecast look like?
J
Fetching open pipeline
Open opportunities
salesforce_soql_execute
Open deals by stage
hubspot_deals_search
Snapshot log
googlesheets_append_values
Forecast - 2026-W31 - 3.5x coverage
Posted to #revenue-ops
ON TRACK -- $350k open pipeline vs $100k quota
Snapshot rows appended to the Forecast Log tab
At-risk flags
Negotiation: only 1 deal in a late stage
2 open deals have a close date in the past
Message Claude...

How agent builders go from zero to user-authorized in six steps

A real working agent you can deploy

This repo labels each cycle under a single ANALYST_EMAIL with per-connector *_USER identities from .env. In production, pass each analyst's real ID as the identifier on every Scalekit call, and send them an authorization link whenever their connector status is not ACTIVE.

01
Authorize Salesforce, HubSpot, Slack, and Google Sheets
run_flow.py
Verify each analyst's four connections are ACTIVE before pulling pipeline. Locally the identity comes from .env; in production, pass your analyst's real user ID as identifier and surface auth links from your app.
run_flow.py
logger.info("Step 0: Checking connector auth")
for connector_name, identifier in cfg.get_connector_users().items():
    conn = Connector(actions, connector_name, identifier)
    conn.check_auth()

# connectors.py -- check_auth()
resp = self.actions.get_or_create_connected_account(
    connection_name=self.connector_name,
    identifier=self.identifier,
)
if resp.connected_account.status != "ACTIVE":
    link = self.actions.get_authorization_link(
        connection_name=self.connector_name,
        identifier=self.identifier,
    ).link
    logger.warning(f"Authorize here: {link}")
02
Fetch open pipeline from Salesforce and HubSpot
connectors.py
03
Calculate coverage and flag at-risk stages
aggregator.py
04
Gate Slack on a real pipeline change
state.py
05
Draft commentary and post to Slack
connectors.py
06
Log a snapshot row per stage to Google Sheets
connectors.py

Agents that do real work, without the auth plumbing

Three things you'd otherwise build: OAuth, token storage, refresh. Handled.

1
Install
claude plugin marketplace add scalekit-inc/claude-code-authstack && claude plugin install agent-auth@scalekit-auth-stack
terminal
curl -fsSL https://raw.githubusercontent.com/scalekit-inc/codex-authstack/main/install.sh | bash
terminal
copilot plugin marketplace add scalekit-inc/github-copilot-authstack
copilot plugin install agent-auth@scalekit-auth-stack
terminal
curl -fsSL https://raw.githubusercontent.com/scalekit-inc/cursor-authstack/main/install.sh | bash
terminal
npx skills add scalekit-inc/skills --skill integrating-agent-auth
2
Clone github.com/scalekit-developers/workflow-agents-demos/tree/main/revenue-forecast-commentary-agent and adapt it for my RevOps stack.

I am building for: my RevOps team (or: a revenue analytics product)   ← edit this line
Connectors my users need: Salesforce, HubSpot, Slack MCP, Google Sheets   ← edit this line
Trigger: weekly cron (Monday mornings) or POLLING_MODE=true. Deliver: forecast commentary in Slack + an append-only snapshot log in Google Sheets.

Steps:
1. Create Scalekit AgentKit connections for salesforce, hubspot, slackmcp, googlesheets -- copy the exact (auto-suffixed) connection names from the dashboard into .env. HubSpot must be the plain REST connector, not HUBSPOTMCP.
2. Map identifier to each analyst's real user ID (not a shared RevOps bot). Per-connector *_USER overrides exist if identities differ per service.
3. If I swap a connector, mirror an existing class in connectors.py: execute_tool(tool_name, identifier, connection_name, tool_input) → read result.data (MCP envelopes unwrap automatically).
4. Keep the fingerprint gate in state.py: Sheets logs every cycle, Slack only posts when a stage's deal count, value, or at-risk flag actually changed.
5. Set QUOTA_TARGET and COVERAGE_RATIO_TARGET for my team, and point GOOGLE_SHEETS_SPREADSHEET_ID at an existing spreadsheet (the tab auto-creates).
6. Run python run_flow.py for one cycle, then describe how to deploy for many analysts.
Why choose Scalekit

Delegated identity. Not service accounts.

Credentials never touch agent code or LLM context. The agent acts as the user, not as a shared bot.
Delegated OAuth - Agent reads your calendar, your inbox — scoped to the authorizing identity, not org-wide.
Credentials outside agent runtime  -  Tokens never touch agent code or LLM context. Both failure modes covered.
Token lifecycle automatic  -  Refresh, expiry, rotation across all connectors. One SDK call. Zero management code.
200+ prebuilt connectors  -  Google, Slack, HubSpot, GitHub, Jira, Notion, Salesforce — same auth pattern everywhere.
Try other Agent Templates

Prebuilt agents you can ship today

Each one runs on delegated identity, scoped per user.

GTM
Salesforce customer insights agent
Surface Salesforce account activity, NPS signals, and renewal flags into Slack threads for the account team.
GTM
HubSpot to Slack updates agent
Watch HubSpot deal stage changes and post structured updates to the right Slack channel. Reps stop checking the CRM all day.
SALES
Deal intelligence agent
Combine Gong, Attio, and Slack signals to surface deal risks and next-best actions. Updated after every call.
SALES
Outbound prospecting agent
Build targeted prospect lists with Apollo, enrich with firmographic data, and draft personalised outreach. Runs on a schedule.
SALES
Sales call prep agent
Pull Granola notes and Attio contact history to draft a pre-call brief before every sales meeting. Zero rep input.
GTM
CRM AI agent
Log calls, update opportunity stages, and surface stalled deals across HubSpot or Salesforce. No manual data entry.

Build your own
multi-connector agent

Add connectors. Change the LLM. Same delegated auth pattern.