Batch AI Generation
Generate AI-personalized content for hundreds or thousands of contacts at once. Learn how to use batch generation efficiently and monitor progress.
What is Batch Generation?
Instead of generating AI content for one contact at a time, batch generation processes multiple contacts simultaneously. This is the primary way to scale personalization in WarmOpener.
How to Use Batch Generation
Step 1: Prepare Your Contacts
Ensure your contacts have sufficient data for good personalization:
- Basic fields: first_name, last_name, company, job_title
- Optional: website, industry, recent_news, pain_point
- More data = better AI output quality
Step 2: Select Contacts
On the Contacts page, you have multiple selection options:
- Select All: Checkbox at the top selects all visible contacts
- Individual Selection: Click checkboxes for specific contacts
- Filter First: Use contact lists to narrow down before selecting
Step 3: Open AI Column Generator
- With contacts selected, click Generate AI Column button
- Modal opens with configuration options
Step 4: Configure Generation
Column Name: Name for the generated field (e.g., "Personalized_Opening", "Pain_Point"). Use underscores, no spaces.
Prompt: Describe what you want generated. Example: "Based on the contact's company and role, create a personalized opening sentence that references their industry challenges."
Website Enrichment: Toggle on to fetch company websites and extract deeper insights. Shows: X of Y contacts have website URLs.
Step 5: Review & Generate
Before generating, you'll see:
- Contact count: Number of contacts that will be processed
- Estimated cost: Approximate OpenAI API cost
- Estimated time: How long the batch will take (~5-10 sec per contact)
Click Generate AI Content to start the batch.
Processing Behavior
Sequential Processing
Contacts are processed one at a time to avoid OpenAI rate limits. The modal shows:
- Progress bar: X of Y contacts completed
- Current contact being processed
- Estimated time remaining
Error Handling
If a contact fails (e.g., API error):
- System continues to next contact (doesn't stop entire batch)
- Failed contacts are logged and shown in summary
- You can retry failed contacts separately
Performance & Timing
Without Website Enrichment
- Per contact: ~2-4 seconds
- 10 contacts: ~30 seconds
- 100 contacts: ~5 minutes
- 1,000 contacts: ~50 minutes
With Website Enrichment
- Per contact: ~5-12 seconds (first time)
- Cached: ~2-4 seconds (if website data already fetched)
- 100 contacts: ~10 minutes first time, ~5 minutes if cached
Best Practices
1. Test with Small Batch First
Before processing 1,000 contacts:
- Select 5-10 representative contacts
- Run generation and review output quality
- Adjust prompt if needed
- Then scale to full list
2. Use Clear, Specific Prompts
❌ Vague: "Write something personalized"
✅ Specific: "Create a 1-2 sentence opening that references their company's recent news or product launch, and explains how our solution addresses a specific challenge in their industry."
3. Batch Size Recommendations
- Small batches (10-50): Good for testing and refinement
- Medium batches (100-500): Standard workflow for campaigns
- Large batches (1000+): Run during off-hours, expect 1+ hour processing
4. Re-Generation Strategy
If you need to regenerate for some contacts:
- Old AI-generated data will be overwritten
- Use same column name to replace existing data
- Use different column name to create additional fields
Viewing Generated Data
After generation completes:
- Generated field appears as a new column in Contacts table
- Click contact row to expand and see full generated text
- Use the field in email templates with placeholder syntax:
{{Column_Name}}
⚠️ Keep Browser Tab Open
During batch generation, keep the browser tab open. Closing the tab or navigating away will cancel the in-progress batch. For large batches (500+ contacts), consider running during a time when you won't need to use your computer for other tasks.
💡 Pro Tip
Generate multiple AI columns for different parts of your email. For example: "Personalized_Opening", "Pain_Point", "Value_Prop", "CTA". This gives you modular components you can mix and match in different email templates.