Skip to content

CRO — Chief Revenue Officer

The Chief Revenue Officer (CRO) runs on the Sonnet (workhorse) model tier at 5 credits per call. The CRO is the revenue engine: it constructs the Ideal Customer Profile, discovers prospects across six channels, enriches profiles, executes personalized outreach (email, SMS, LinkedIn DM, voice) using the Founder DNA voice, runs adaptive follow-up sequences, manages pipeline, reactivates dormant customers, and reports revenue with ROI attribution.

Day in the life

The CRO operates on a continuous loop driven by trigger events and pipeline state. When the morning cadence fires, the CRO discovers prospects matching the configured ICP, then enriches the highest-priority profiles with website analysis, social presence, recent news, and review signals (Professional+ feature). The Adaptive Channel Orchestrator scores each prospect across email, SMS, LinkedIn DM, and voice — picking the channel with the highest expected response rate while honoring opt-out flags and the 48-hour contact-spacing gate.

Outreach generation runs the Founder DNA voice match (NEVER generic sales copy), injects the live trigger event when one is present (funding round, job change, hiring spike, champion departure), and references any open commitments the agent made in prior touches. The Subject Line Scorer rates the generated subject and one-shot regenerates if the score is too low — penalizing red-flag words (“free”, “guaranteed”), rewarding numerics, first-name personalization, 6-10 word length, and curiosity CTAs. AI disclosure is appended automatically; the Quality Gate validates the final content before send.

For voice outreach the CRO routes through RetellCallService, which enforces TCPA quiet-hours per the recipient’s IANA timezone, the autonomy check, and AI disclosure inside the call script — all before Retell ever dials.

Throughout the day the CRO runs adaptive follow-up sequences that adjust to engagement signals, tracks pipeline and flags stale deals, identifies dormant customers for win-back campaigns with tailored offers, and delivers a revenue report with ROI calculation, pipeline velocity, conversion rates, and revenue attribution. The CRO also exposes call-performance metrics that pair the raw resolution rate with an emotion-adjusted resolution rate (deflated by mean peak frustration) so headline numbers stay honest.

Tools

Tools are registered via register_sales_tools in src/agents/sales/tools.py. The CRO additionally calls platform helpers shared across all agents.

  • AdaptiveChannelOrchestrator.score_channels — Picks email, SMS, LinkedIn DM, or voice based on prospect signals and enforces opt-out blocks.
  • SubjectLineScorer.score + one-shot regeneration — Optimizes subject lines before the Quality Gate runs, with bonuses for numerics, first-name personalization, length, and curiosity CTAs.
  • ContactTimelineService.check_spacing / record_touch — 48-hour contact-spacing gate; records every outbound touch for downstream cooldown enforcement.
  • CommitmentExtractor.list_open — Pulls open commitments the CRO made in prior touches so the next-touch message acknowledges or updates them.
  • RetellCallService.create_phone_call — Voice outreach with TCPA quiet-hours, autonomy check, and AI disclosure baked in.
  • KGQueryService.get_context_for_topic — Enriches outreach with knowledge graph context on competitors and customer segments.
  • quality_gate — Validates outreach content before send.
  • delegate_to(to_role, ...) — A2A delegation; e.g. requests CFO financial-position context for the morning brief.

Decision patterns

These are the entries in _TASK_DISPATCH (also exposed as CROAgent.TASK_HANDLERS) inside src/agents/sales/agent.py.

  • icp_construction — Triggered at onboarding and whenever business data changes materially; produces the Ideal Customer Profile that drives every later prospecting decision.
  • prospect_discovery — Triggered by the daily cadence and whenever pipeline drops below the configured min_active_prospects threshold.
  • prospect_enrichment — Triggered after discovery; advanced enrichment (website analysis, social, news) requires the REVENUE_ENGINE_FULL feature gate (Professional+).
  • outreach_execution — Triggered after enrichment; runs cooldown, channel-orchestrator scoring, trigger injection, commitment lookup, Founder DNA generation, subject-line scoring, AI disclosure, and the Quality Gate before recording the touch.
  • outreach_call — Voice outreach via Retell; loads voice_config from the tenant; enforces TCPA quiet-hours and autonomy check inside the service.
  • follow_up_automation — Triggered by engagement signals (open, click, reply silence); adapts the next touch to the signal.
  • pipeline_tracking — Triggered by the daily cadence; bulk-outreach automation requires REVENUE_ENGINE_FULL.
  • customer_reactivation — Triggered by dormancy windows; produces tailored win-back offers per segment.
  • revenue_reporting — Triggered weekly; includes ROI, pipeline velocity, conversion rates, and revenue attribution.

Escalation criteria

  • Prospect is within the 48-hour contact cooldown — outreach is deferred, not blocked, and recorded as such.
  • The Adaptive Channel Orchestrator returns channel=None because the prospect is opted out — outreach is blocked outright.
  • The tenant plan lacks REVENUE_ENGINE_FULL for advanced enrichment, bulk outreach, or pipeline automation — the CRO returns feature_gated.
  • TCPA quiet-hours apply for the recipient’s timezone — voice and SMS blocked inside RetellCallService/Twilio compliance pipeline.
  • voice_config is incomplete (retell_agent_id, retell_voice_id, from_number) — voice call refused before dial.
  • Action would exceed the CRO’s daily budget cap.
  • Action affects more than escalation_blast_radius_threshold in a single call (e.g. bulk segment beyond approved size).
  • Confidence below 0.6 on the channel-orchestrator decision OR the Quality Gate flagged the output and auto-revise failed.

Example outputs

Subject: Quick thought on your 12 new SDR hires
Hi {first_name},
Noticed Acme Co is growing fast — 12 new SDR roles in the last 30 days.
That kind of ramp is exactly when ICP drift starts costing you reply
rates, and the fix usually isn't more reps; it's tighter signal scoring.
I help mid-market RevOps teams cut SDR ramp time by ~40% with a 15-minute
ICP audit and a one-week pilot on your top 3 segments. Worth a look?
— Sent on behalf of {founder_name} by their UltimateTeam.ai CRO agent.
{
"channel_selected": "email",
"channel_confidence": 0.81,
"subject_line_score": 9,
"subject_line_regenerated": true,
"ai_disclosure_included": true,
"open_commitments_count": 1,
"trigger_type": "hiring_spike",
"summary": "Outreach sent to lead-3491@acme.co via email"
}
[Pipeline status — 2026-04-25]
Stage | Count | $ Total | Velocity (d) | Stale ≥7d
--------------|-------|----------|--------------|----------
Qualified | 42 | $128,400 | 4.1 | 3
Demo booked | 18 | $94,200 | 6.7 | 2
Proposal sent | 11 | $74,800 | 9.3 | 4 ⚠
Closed won (Q)| 7 | $58,400 | — | —
Action: Three proposals stalled >7d. Re-engage with case study + revised
mutual close plan today.

Sourced from src/agents/sales/agent.py and src/agents/sales/capabilities.py. Last reviewed: 2026-04-25.