Run autonomous outbound campaigns that discover leads, generate personalized emails, classify replies, and sync hot leads to your CRM.
The AI CMO is an autopilot for enterprise outbound. It handles the full campaign lifecycle — lead discovery, AI scoring, personalized email generation, reply classification, follow-up sequencing, and CRM sync — so you can launch targeted outreach without manual effort.You manage campaigns from the Growth section of the console or through the platform API. Once a campaign is activated, the AI CMO orchestrator runs continuously, processing leads and sending emails within the safety limits you configure.
The AI CMO processes each active campaign through a repeating loop:
Discover leads. When a campaign has fewer than ten pending leads, the orchestrator automatically discovers new prospects matching your ICP through integrated enrichment providers.
Score leads. Each lead receives an AI-generated qualification score (0–100) with a fit level of high, medium, or low.
Generate emails. Personalized outbound emails are composed by the AI writing model based on the campaign strategy, lead profile, and product knowledge.
Send within safety limits. Every send passes through a seven-layer safety check before delivery. Daily caps, per-minute caps, bounce thresholds, and complaint thresholds are enforced automatically. Emails are also held until the lead’s local business hours (9 am–6 pm, weekdays).
Classify replies. Inbound replies are classified by sentiment — positive, negative, neutral, out-of-office, auto-reply, request for more information, or not interested.
Sync hot leads. Leads that reply positively or request more information are automatically pushed to your CRM with full context, including sentiment score and reply text.
Learn and adjust. After each campaign completes, the system synthesizes what worked — effective personas, messaging angles, subject lines — and applies those learnings to future campaigns. Active campaigns also receive mid-flight strategy adjustments based on bounce and reply rates.
Navigate to Growth in the console. The dashboard shows an overview of active campaigns, emails sent today, average bounce rate, and total replies.
2
Choose a campaign approach
You can start outreach in two ways:
Use a template. Ten pre-built campaign templates target specific industry verticals with complete AI strategies. See campaign templates for the full list.
Create from scratch. Define your own ICP, messaging strategy, and safety limits via the API.
3
Import or discover leads
Add leads to your campaign manually, via bulk import, or let the orchestrator discover them automatically when the campaign is active.To import leads via the API:
The country and timezone fields are optional. If provided, they enable timezone-aware outreach so emails arrive during the lead’s local business hours.
4
Activate the campaign
Activate from the console or via the API:
curl -X POST https://api.truthlocks.com/v1/platform/growth/campaigns/{id}/activate \ -H "X-API-Key: tl_live_your_api_key"
The orchestrator begins processing leads and generating emails immediately.
5
Monitor from the dashboard
Track campaign performance in real time from the Growth dashboard. Click into any campaign to open the detail view with six tabs:
Overview — campaign strategy, status, and configuration
Leads — all leads associated with the campaign, their status, and follow-up count
Emails — every email generated by the AI, with delivery status and content hash
Pending Approval — emails awaiting your review (when approval mode is enabled)
Analytics — sent, bounced, and replied counts at a glance
Learnings — AI-synthesized insights on effective personas, industries, and messaging
The Growth section of the console opens to a dashboard that gives you an at-a-glance view of your outbound program. The dashboard displays four key metrics:
Metric
Description
Active campaigns
Number of campaigns currently in the active state
Emails today
Total emails sent across all campaigns in the current day
Avg bounce rate
Weighted average bounce rate across active campaigns
Total replies
Sum of all replies received across active campaigns
Below the metrics, the dashboard shows two panels:
Recent campaigns — a list of your most recent campaigns with their status, emails sent count, and reply rate. Click any campaign to open its detail view.
Recent activity — an audit log of the last ten events across all campaigns, showing what happened and when. Use this to spot issues like bounces or auto-pauses without clicking into individual campaigns.
The dashboard refreshes in real time. The bounce rate card turns red when the average exceeds 3%, signaling that one or more campaigns may need attention.
The knowledge base stores product information that the AI CMO uses to personalize outreach emails. Knowledge entries are injected into every AI prompt, giving the writing model context about your product, ideal customers, and competitive positioning.Entries carry forward across campaigns — when you add or update a knowledge entry, every future campaign benefits from it automatically.
Open Growth > Knowledge Base in the console. From this page you can:
Add entries — click New Entry, choose a category, and provide a title, content, and priority (0–100).
Edit entries — click any entry to update its title, content, category, or priority.
Toggle active/inactive — each entry has an active switch that controls whether it is injected into AI prompts. Deactivate an entry to temporarily exclude it from AI-generated emails without deleting it.
Delete entries — permanently remove entries you no longer want the AI to reference.
Filter by category — use the category tabs to narrow the list.
Higher-priority entries (70+) are weighted more heavily in AI prompts. Use priority to control which product angles the AI emphasizes most.
Use the active toggle to A/B test messaging angles. Deactivate a differentiator or objection handler, run a campaign, and compare reply rates against a campaign where the entry was active.
curl -X POST https://api.truthlocks.com/v1/platform/growth/knowledge \ -H "X-API-Key: tl_live_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "category": "differentiator", "title": "Cryptographic proof vs. watermarking", "content": "Unlike digital watermarks that can be stripped, Truthlocks uses cryptographic attestations anchored to immutable ledgers. This provides tamper-evident proof that survives format conversion, re-encoding, and redistribution.", "priority": 80 }'
You can update any combination of title, content, category, priority, and active in a single request. Toggle active to false to temporarily exclude an entry from AI prompts:
After a campaign completes, the AI synthesizes what worked into campaign learnings. These learnings capture effective personas, industries, messaging angles, subject lines, and reply rates. You can view learnings in the Learnings tab of any campaign detail view, or retrieve them via the API.To list recent learnings across all campaigns:
curl -X GET https://api.truthlocks.com/v1/platform/growth/knowledge/learnings \ -H "X-API-Key: tl_live_your_api_key"
Each learning includes:
Field
Type
Description
id
string
Unique learning identifier
campaign_id
string
Campaign that generated the learning
summary
string
AI-generated summary of what worked
effective_personas
array
Buyer personas that responded well
effective_industries
array
Industry verticals with the highest engagement
ineffective_angles
array
Messaging approaches that underperformed
best_subject_lines
array
Subject lines with the highest open or reply rates
reply_rate_pct
number
Overall reply rate for the campaign
bounce_rate_pct
number
Overall bounce rate for the campaign
emails_analyzed
integer
Number of emails included in the analysis
Review learnings regularly to refine your knowledge base. If the AI identifies a persona or industry that performs well, consider adding a dedicated knowledge entry to reinforce that angle in future campaigns.
All leads have been processed and at least one email has been sent
A campaign only auto-completes when all leads have been exhausted and at least one email has been sent. This prevents newly activated campaigns from completing instantly before lead discovery has had a chance to run. If a campaign has zero sends, the orchestrator keeps it active until leads are discovered and processed.Campaigns auto-pause when the bounce rate or complaint rate exceeds the configured threshold.
The AI CMO only sends emails during local business hours — 9 am to 6 pm, Monday through Friday — in each lead’s timezone. Emails are never sent on weekends. If a lead’s send window is closed, the email is automatically deferred to 9 am on the next weekday in the lead’s local time. The deferred send is stored on the lead record and picked up by the orchestrator when the window opens — no manual intervention is needed.Timezone-aware sending is always active for every campaign. There is nothing to enable or configure.
Explicit timezone — if you set a timezone value (IANA format, e.g. America/New_York) when importing the lead, that value is used.
Country lookup — if no timezone is set but a country is present (ISO 3166-1 alpha-2, e.g. US, GB), the timezone is inferred automatically from the supported country list.
Auto-discovered leads — leads found through enrichment providers have their country and timezone populated automatically during discovery.
Fallback — if neither timezone nor country is available, the system falls back to UTC.
For countries that span multiple timezones, the most common business timezone is used. For example, US maps to America/New_York (Eastern Time) and AU maps to Australia/Sydney.
52 countries are mapped to IANA timezones across five regions.
Americas
Europe
Middle East & Africa
Asia-Pacific
Country code
Timezone
US
America/New_York
CA
America/Toronto
MX
America/Mexico_City
BR
America/Sao_Paulo
AR
America/Argentina/Buenos_Aires
CL
America/Santiago
CO
America/Bogota
PE
America/Lima
VE
America/Caracas
Country code
Timezone
GB
Europe/London
IE
Europe/Dublin
FR
Europe/Paris
DE
Europe/Berlin
NL
Europe/Amsterdam
BE
Europe/Brussels
CH
Europe/Zurich
AT
Europe/Vienna
ES
Europe/Madrid
PT
Europe/Lisbon
IT
Europe/Rome
SE
Europe/Stockholm
NO
Europe/Oslo
DK
Europe/Copenhagen
FI
Europe/Helsinki
PL
Europe/Warsaw
CZ
Europe/Prague
RO
Europe/Bucharest
HU
Europe/Budapest
GR
Europe/Athens
TR
Europe/Istanbul
RU
Europe/Moscow
UA
Europe/Kiev
LU
Europe/Luxembourg
SK
Europe/Bratislava
HR
Europe/Zagreb
Country code
Timezone
AE
Asia/Dubai
SA
Asia/Riyadh
IL
Asia/Jerusalem
EG
Africa/Cairo
ZA
Africa/Johannesburg
NG
Africa/Lagos
KE
Africa/Nairobi
QA
Asia/Qatar
KW
Asia/Kuwait
BH
Asia/Bahrain
Country code
Timezone
IN
Asia/Kolkata
CN
Asia/Shanghai
JP
Asia/Tokyo
KR
Asia/Seoul
SG
Asia/Singapore
HK
Asia/Hong_Kong
TW
Asia/Taipei
AU
Australia/Sydney
NZ
Pacific/Auckland
MY
Asia/Kuala_Lumpur
TH
Asia/Bangkok
ID
Asia/Jakarta
PH
Asia/Manila
VN
Asia/Ho_Chi_Minh
PK
Asia/Karachi
BD
Asia/Dhaka
LK
Asia/Colombo
You can override the inferred timezone for any lead by setting the timezone field explicitly during import. Use this when a lead is based in a different timezone than their country’s default — for example, a US-based lead working from America/Los_Angeles.
When the orchestrator processes a lead and the lead’s local time falls outside the 9 am–6 pm weekday window, the following happens:
The email is not generated or sent.
The lead’s next follow-up time is set to 9 am on the next weekday in their local timezone.
The orchestrator skips the lead until that time arrives.
This means a lead in Asia/Tokyo processed at 11 pm JST on a Friday will not receive their email until 9 am JST on the following Monday.Follow-up emails use a 48-hour interval by default. If the 48-hour mark falls outside business hours, the follow-up is deferred to the next business-hours window automatically.
Every email passes through a seven-layer safety check before sending:
Global kill switch — operator-level emergency stop across all campaigns.
Campaign kill switch — stops a single campaign immediately.
Campaign status — only active campaigns can send.
Daily send cap — maximum emails per day per campaign (default: 50).
Per-minute cap — sliding-window rate limit per campaign (default: 5).
Bounce rate threshold — auto-pauses the campaign if exceeded (default: 5%).
Complaint rate threshold — auto-pauses the campaign if exceeded (default: 0.1%).
When a campaign is auto-paused due to bounce or complaint thresholds, you must investigate the cause before resuming. This protects your sender reputation.
curl -X POST https://api.truthlocks.com/v1/platform/growth/campaigns \ -H "X-API-Key: tl_live_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "name": "Q2 SaaS Engineering Outreach", "description": "Target engineering leaders at B2B SaaS companies", "ai_strategy": { "icp_description": "CTOs and VP Engineering at B2B SaaS companies with 50-500 employees building document workflows", "outbound_strategy": "Lead with document integrity pain points, position Truthlocks as infrastructure", "key_value_props": [ "Cryptographic proof of document authenticity", "Drop-in SDK integration in under an hour", "Compliance-ready audit trail for SOC 2 and ISO 27001" ], "tone_guidelines": "Technical and direct. Avoid marketing jargon. Speak as an engineer to an engineer.", "followup_cadence": "Day 1: Intro email. Day 4: Technical deep-dive. Day 10: Case study. Day 18: Final follow-up.", "subject_line_formulas": [ "Document integrity for {company}", "How {company} can prove file authenticity", "Quick question about document workflows at {company}" ] }, "daily_cap": 40, "per_minute_cap": 5, "max_followups": 3, "simulation_mode": false, "approval_required": false }'
The request accepts these fields:
Field
Type
Required
Description
name
string
yes
Campaign name
description
string
no
Brief description of the campaign’s purpose
audience_description
string
no
Plain-text description of the target audience for AI lead discovery
ai_strategy
object
no
AI strategy configuration (see below)
daily_cap
integer
no
Maximum emails per day (default: 50)
per_minute_cap
integer
no
Sliding-window rate limit per minute (default: 5)
max_followups
integer
no
Maximum follow-up emails per lead (default: 3)
simulation_mode
boolean
no
Run the campaign without sending real emails (default: false)
approval_required
boolean
no
Hold every email for manual review before sending (default: false)
The response returns the full campaign object:
Field
Type
Description
id
string
Unique campaign identifier
name
string
Campaign name
description
string
Campaign description
status
string
Current state — draft, active, paused, completed, or failed
simulation_mode
boolean
Whether the campaign runs in simulation mode
approval_required
boolean
Whether emails require manual approval before sending
ai_strategy
object
The AI strategy including ICP, messaging, and cadence
daily_cap
integer
Daily send limit
per_minute_cap
integer
Per-minute rate limit
max_followups
integer
Maximum follow-ups per lead
bounce_threshold_pct
number
Bounce rate auto-pause threshold (percentage)
complaint_threshold_pct
number
Complaint rate auto-pause threshold (percentage)
kill_switch
boolean
Whether the emergency kill switch is active
activated_at
string or null
ISO 8601 timestamp when the campaign was activated
Simulation mode lets you preview the full orchestrator pipeline — lead discovery, scoring, and email generation — without delivering any emails. When simulation_mode is true on a campaign, every email the AI generates is recorded with a status of simulated instead of being sent through SES. Use simulation mode to validate your ICP, review generated email content, and confirm safety limits before switching to live delivery.Set simulation mode when creating a campaign:
Simulation mode campaigns display a violet SIM badge in the campaign list and a Simulation Mode badge on the detail page. Individual emails show a Simulated indicator so you can distinguish them from real sends.
In the console, the Emails tab provides a tri-state filter to view simulated emails only, real emails only, or both. Via the API, the simulation boolean on each email object indicates whether the email was simulated.
You can set simulation_default to true in the Growth settings so that every new campaign starts in simulation mode by default. Individual campaigns can still override this at creation time by explicitly setting simulation_mode to false.
When approval_required is set to true, every AI-generated email is held with a status of pending_approval instead of being sent automatically. You review and approve each email individually from the Pending Approval tab in the console or via the approve endpoint. Only after approval does the email move to queued and enter the normal send pipeline.This gives you full control over outbound messaging before any email leaves the system. Approval mode is useful when:
You are launching a campaign targeting a sensitive audience and want to review every message.
Compliance requires human review of AI-generated outbound content.
You want to spot-check email quality before allowing autonomous delivery.
Combine simulation mode and approval mode during onboarding. This lets you review AI-generated emails in a safe environment before enabling real delivery — set simulation_mode: true and approval_required: true together.
Once a campaign is created, you can query its leads, emails, pending approvals, stats, and learnings through campaign-scoped endpoints. These are the same endpoints that power the campaign detail tabs in the console.All endpoints below are scoped to a single campaign by ID.
If your campaign uses approval mode, approve a specific email to queue it for sending:
curl -X POST https://api.truthlocks.com/v1/platform/growth/campaigns/{id}/emails/{emailId}/approve \ -H "X-API-Key: tl_live_your_api_key"
Once approved, the email enters the normal send pipeline and is subject to safety controls — daily caps, per-minute limits, and timezone-aware delivery still apply.
Add a lead — click Add Lead and fill in email, name, company, title, and industry.
Import leads from CSV — click Import, upload a CSV file with columns email, first_name, last_name, company, title, and industry, and optionally assign all imported leads to a campaign.
Score a lead with AI — click Score next to any lead to trigger AI-powered qualification scoring. The AI returns a numeric score (0–100) that updates in place.
Add a lead to a campaign — click Add to Campaign next to any lead and select the target campaign from the dropdown.
Lead statuses are color-coded in the table: new, qualified, contacted, replied, converted, unsubscribed, and bounced.
The Growth > Emails page in the console shows a log of all AI-generated emails across every campaign. Use it to monitor delivery status, review email content, and spot problems.
The Growth > Emails > Pending Approval page shows all emails awaiting manual approval across every campaign that has approval mode enabled. This gives you a single queue to review and approve outbound emails without opening each campaign individually.Each entry shows the campaign name, recipient, subject line, and generation timestamp. Click Approve to send the email into the delivery pipeline.
Hot leads are automatically pushed to your connected CRM. Currently supported:
HubSpot — contacts are created with the lead source set to “Truthlocks AI CMO”, and a note is attached with the campaign ID, sentiment score, and reply text.
Configure CRM integration from the Growth Settings page or by setting the CRM provider and API key in your platform configuration.
The knowledge base teaches the AI what to say. Every active entry is injected into the AI prompt when generating outbound emails, so the content you add here directly shapes messaging across all campaigns.Manage entries from the Knowledge page in the Growth section of the console, or through the API.
curl -X POST https://api.truthlocks.com/v1/platform/growth/knowledge \ -H "X-API-Key: tl_live_your_api_key" \ -H "Content-Type: application/json" \ -d '{ "category": "differentiator", "title": "Offline verification", "content": "Truthlocks proof bundles can be verified entirely offline using browser-native cryptography. No API call or internet connection is needed for the first three verification steps. This is unique in the market and critical for air-gapped environments.", "priority": 80, "active": true }'
The Campaign Intelligence section on the knowledge page shows what the AI has learned from completed campaigns. Each row includes:
Field
Description
Campaign
The campaign the learning was synthesized from
Summary
AI-generated summary of what worked
Reply rate
Percentage of emails that received replies
Bounce rate
Percentage of emails that bounced
Emails analyzed
Number of emails included in the analysis
Top personas
Buyer personas that responded well
Top industries
Industry verticals with the highest engagement
Retrieve learnings via the API:
curl -X GET https://api.truthlocks.com/v1/platform/growth/knowledge/learnings \ -H "X-API-Key: tl_live_your_api_key"
The orchestrator applies these learnings automatically to future campaigns targeting similar audiences.
Start with a few high-priority entries in the differentiator and pain_point categories. These have the biggest impact on email quality because they give the AI concrete talking points rather than generic messaging.
The global kill switch immediately stops all active campaigns from sending emails. When activated, no emails are sent across any campaign until you deactivate it.From the console: Open Growth > Settings and toggle Global Kill Switch under the Safety section. A confirmation dialog requires you to confirm before activation to prevent accidental use.From the API:
The global kill switch affects every campaign. Use the campaign-level kill switch at POST /campaigns/{id}/kill if you only need to stop a single campaign.