AI-Generated Sales Assets in Your CRM
Automatically generate personalized images, videos, and voice content when deals progress through your pipeline. Perfect for twenty, Salesforce, HubSpot, and any CRM with webhook support.
Supported CRM Platforms
twenty
Open-source Salesforce alternative (42K+ GitHub stars)
Salesforce
Industry-leading CRM with Flow automation
HubSpot
Inbound marketing and sales platform
Pipedrive
Sales-focused CRM with pipeline management
Integration Points
Deal Stage Triggers
Generate sales assets when deals move to Proposal, Demo, or Closed Won stages
Lead Conversion
Create personalized welcome content when leads become customers
Campaign Automation
Generate marketing visuals for email campaigns and outreach sequences
Account-Based Marketing
Create custom visuals for each target account automatically
Customer Onboarding
Generate welcome videos and onboarding guides for new customers
Sales Enablement
Auto-generate proposal covers, case study visuals, and demo materials
Generated Asset Types
Proposal Images
Custom branded proposal covers and hero images
~$0.24 per imageDemo Videos
Product demo clips personalized per prospect
~$0.50 per videoVoice Intros
Personalized voice messages for outreach
~$0.57 per clipWelcome Content
Onboarding materials for new customers
~$0.24 per assetQuick Start
// TypeScript β Full CRM Integration Class
// Works with twenty, Salesforce, HubSpot, or any CRM with webhooks
import OpenAI from 'openai';
import { WebhookPayload } from './types';
const creativeai = new OpenAI({
apiKey: process.env.CREATIVEAI_API_KEY,
baseURL: 'https://api.creativeai.run/v1',
});
interface Deal {
id: string;
company_name: string;
contact_name: string;
industry: string;
product: string;
stage: 'Lead' | 'Qualified' | 'Proposal Sent' | 'Demo' | 'Negotiation' | 'Closed Won' | 'Closed Lost';
deal_value: number;
}
export class CrmAssetGenerator {
// Generate assets based on deal stage
async handleDealStageChange(deal: Deal): Promise<void> {
switch (deal.stage) {
case 'Proposal Sent':
await this.generateProposalAssets(deal);
break;
case 'Demo':
await this.generateDemoAssets(deal);
break;
case 'Closed Won':
await this.generateOnboardingAssets(deal);
break;
}
}
private async generateProposalAssets(deal: Deal): Promise<void> {
// Custom proposal cover image
const image = await creativeai.images.generate({
model: 'gpt-image-1',
prompt: `Professional proposal cover for ${deal.company_name}, ${deal.industry} industry, executive presentation style`,
size: '1536x1024',
n: 1,
});
// Personalized voice introduction
const voice = await fetch('https://api.creativeai.run/api/generate/voice', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CREATIVEAI_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
text: `Hi ${deal.contact_name}, thank you for considering our proposal. Here's a quick overview tailored for ${deal.company_name}.`,
voice: 'nova',
model: 'tts-1-hd',
}),
});
await this.updateCrm(deal.id, {
proposal_image_url: image.data[0].url,
proposal_voiceover_url: (await voice.json()).output_url,
});
}
private async generateDemoAssets(deal: Deal): Promise<void> {
// Submit async demo video
const video = await fetch('https://api.creativeai.run/v1/video/generations', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.CREATIVEAI_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'auto',
prompt: `Product demo video for ${deal.product}, highlight ROI and key features for ${deal.industry} industry`,
duration: 5,
aspect_ratio: '16:9',
webhook_url: `${process.env.WEBHOOK_BASE}/crm/video/${deal.id}`,
}),
});
await this.updateCrm(deal.id, {
demo_video_job_id: (await video.json()).id,
});
}
private async generateOnboardingAssets(deal: Deal): Promise<void> {
// Welcome video for new customer
const welcome = await creativeai.images.generate({
model: 'gpt-image-1',
prompt: `Welcome banner for new customer ${deal.company_name}, congratulations message, professional celebration design`,
size: '1536x1024',
});
// Onboarding guide cover
const guide = await creativeai.images.generate({
model: 'gpt-image-1',
prompt: `Customer onboarding guide cover for ${deal.company_name}, clean modern design, step-by-step visual`,
size: '1024x1024',
});
await this.updateCrm(deal.id, {
welcome_banner_url: welcome.data[0].url,
onboarding_guide_url: guide.data[0].url,
});
}
private async updateCrm(dealId: string, assets: Record<string, string>): Promise<void> {
// Implementation depends on your CRM's API
console.log(`Updating deal ${dealId} with assets:`, assets);
}
}Webhook Flow
CRM Trigger
Deal stage change
CreativeAI API
Generate assets
Asset URLs
Return to CRM
Webhook Delivery Guarantee
Async video jobs deliver via webhook with 3 attempts (0s, 5s, 30s) and HMAC-SHA256 signatures. If delivery fails, results are available via the status API.
twenty CRM Integration
twenty is an open-source Salesforce alternative with 42K+ GitHub stars. Its API-first architecture makes it perfect for AI asset generation workflows.
Setup Steps:
- Configure webhook in twenty Settings β Integrations β Webhooks
- Set trigger:
deal.stage.updated - Point webhook to your n8n, Make, or custom endpoint
- Endpoint calls CreativeAI API with deal context
- Update deal record with generated asset URLs
Cost Example
Per-Deal Asset Pack
- 1 Proposal Image~$0.24
- 1 Demo Video~$0.50
- 1 Voice Intro~$0.57
- Total per deal~$1.31
Monthly Volume (50 deals)
- 50 proposal images~$12
- 25 demo videos~$12.50
- 50 voice intros~$28.50
- Monthly total~$53
Cost Comparison
- Midjourney sub$30/mo
- Runway sub$76/mo
- Voice AI sub$29/mo
- Traditional stack$135/mo+
Ready to automate your CRM assets?
Start with 50 free credits. Generate proposal images, demo videos, and voice intros from CRM triggers.