The Problem
On Monday you tested the 3 prompts in ChatGPT. You saw how extract → optimize → variations works for one product. But here's the reality: your copywriter can write maybe 15 quality descriptions per day. That's $400/day in labor costs ($50/hour × 8 hours). For a catalog of 5,000 products, you're looking at 333 days and $133,000 just to write descriptions once. Then there's updates, seasonal changes, and new product launches. Plus the SEO inconsistencies when different writers use different keyword strategies.
See It Work
Watch the 3 prompts chain together automatically. This is what you'll build.
Watch It Work
See the AI automation in action
The Code
Three levels: start simple, add reliability, then scale to production. Pick where you are.
When to Level Up
Simple API Calls
0-100 products/day
- Sequential processing
- Basic error handling
- Manual Shopify updates
- No caching
- ~30 seconds per product
Add Reliability Layer
100-1,000 products/day
- Retry logic with backoff
- Structured logging
- Shopify API integration
- Basic caching (Redis)
- ~10 seconds per product
- Error recovery
Framework Orchestration
1,000-5,000 products/day
- Parallel batch processing
- Smart caching (7-day TTL)
- Celery distributed tasks
- Automatic Shopify sync
- ~3 seconds per product
- Monitoring dashboard
Multi-Agent System
5,000+ products/day
- Specialized extraction agents
- SEO optimization agents
- Variation generation agents
- Load balancing across regions
- ~1 second per product
- A/B testing for descriptions
- Multi-language support
E-commerce Gotchas
Real challenges we've seen in production. Here's how to handle them.
Duplicate Content Penalties
Add variation parameters to prompts. Track keyword density across catalog. Use different templates for similar products.
# Add uniqueness to each variation
def generate_unique_description(product, catalog_history):
# Check similar products
similar = find_similar_products(product, catalog_history)
# Extract used phrases
used_phrases = extract_key_phrases(similar)
SEO Keyword Stuffing
Set strict keyword density limits. Use semantic variations. Monitor readability scores.
# Validate keyword density
def validate_seo(description, target_keywords):
words = description.lower().split()
total_words = len(words)
for keyword in target_keywords:
count = description.lower().count(keyword.lower())
density = count / total_wordsPrice/Inventory Sync Issues
Never hardcode prices/inventory in descriptions. Use Shopify liquid variables. Validate before publishing.
# Use Shopify liquid variables
template = '''
<div class="product-description">
{{ product.description }}
<p class="price">{{ product.price | money }}</p>
{% if product.available %}
<p class="availability">In stock</p>
{% else %}Multi-Language Consistency
Don't just translate - localize. Use native speakers for validation. Test cultural appropriateness.
# Localize, don't just translate
def generate_localized_description(product, language, locale):
base_description = generate_description(product, 'en')
localization_prompt = f'''Adapt this product description for {locale}:
Original (English): {base_description}
Shopify Rate Limits
Batch updates. Use GraphQL bulk operations. Implement smart queuing with rate limit awareness.
# Smart rate-limited updates
import time
from collections import deque
class ShopifyRateLimiter:
def __init__(self, requests_per_second=2):
self.rate = requests_per_second
self.requests = deque()Adjust Your Numbers
❌ Manual Process
✅ AI-Automated
You Save
2026 Randeep Bhatia. All Rights Reserved.
No part of this content may be reproduced, distributed, or transmitted in any form without prior written permission.