APOSTLE
arrow_back AI for E-commerce
Module 04 Scaling Across Your Catalog

Batch Workflows and Automation

Learn how to scale AI visual production across your entire catalog using template systems, API batch processing, SKU prioritization, and ROI measurement.

schedule 12 min
signal_cellular_alt Advanced
menu_book Lesson 04 of 4

Learning Objectives

By the end of this module, you will be able to:

  • Design template systems that produce consistent imagery across your entire catalog
  • Use the Gemini API for batch product image generation
  • Build a catalog-scale production schedule that's sustainable for a small team
  • Prioritize which SKUs get full 10-image libraries versus minimum viable sets
  • Measure the ROI of AI visual content investment per SKU

The Template Approach to Catalog Scale

Generating bespoke creative direction for every SKU in a 200-product catalog is impractical. The solution is a template system: define a small number of visual templates, then apply each template across your entire catalog.

Defining Your Template Library

Create 4-6 visual templates that cover your content needs:

TEMPLATE 1: "HERO CLEAN"
Surface: White marble
Lighting: Soft studio from upper left
Camera: 45° angle, shallow DOF
Background: Slightly blurred marble texture
Mood: Premium, clean, trustworthy
Use for: Primary listing images, website product pages

TEMPLATE 2: "LIFESTYLE MORNING"
Environment: Bright kitchen/bathroom, morning sunlight
Product placement: Counter surface, left-of-center
Props: Small plant, ceramic mug, linen towel
Mood: Calm, aspirational, everyday luxury
Use for: Social media, secondary listing images

TEMPLATE 3: "FLAT LAY MINIMAL"
Surface: Light linen or pale wood
Layout: Product centered, 4-5 complementary props arranged around it
Camera: Directly overhead
Lighting: Even, soft, no harsh shadows
Use for: Pinterest, Instagram feed, marketing emails

TEMPLATE 4: "DARK DRAMATIC"
Surface: Dark slate or black
Lighting: Dramatic side light from the right
Camera: Low angle, slight hero framing
Background: Deep, moody gradient
Mood: Bold, premium, high-impact
Use for: Hero banners, advertising, landing pages

TEMPLATE 5: "ON-MODEL UGC"
Model: Target demographic character (pre-generated reference)
Setting: Lived-in bedroom or bathroom
Camera: Phone-propped low angle
Style: Authentic, casual, social-native
Use for: TikTok Shop, Instagram Reels, paid social ads

Translating Templates into Reusable Prompts

Each template becomes a prompt template with a [PRODUCT] placeholder:

TEMPLATE 1 PROMPT:
"Premium product photography. Place [PRODUCT — uploaded reference]
centered on a white marble surface. Soft studio lighting from the
upper left, creating a subtle shadow to the lower right. The product
is the sole focus. Shallow depth of field, the marble blurring slightly
in the foreground and background. Maintain exact product colors, labels,
and proportions. Shot on Sony A7RV, 90mm macro, f/4. 4K resolution.
[PRODUCT] should fill approximately 60% of the frame height."

For each SKU, the AI Producer uploads the product photo and pastes the template prompt. The creative decisions are baked into the template — the per-SKU work is just swapping the product photo.


API Batch Processing

For catalogs with 50+ SKUs, manual generation becomes tedious. The Gemini API enables scripted batch processing.

Basic Batch Workflow (Python)

import os
from google import genai
from google.genai import types
from PIL import Image
import time

client = genai.Client(api_key="YOUR_KEY")

# Define your template prompts
TEMPLATES = {
    "hero_clean": (
        "Premium product photography. Place this product centered on "
        "a white marble surface. Soft studio lighting from the upper "
        "left. Shallow depth of field. Maintain exact product colors "
        "and labels. Shot on Sony A7RV, 90mm macro, f/4. 4K resolution."
    ),
    "lifestyle_morning": (
        "Lifestyle product photography. Place this product on a bright "
        "kitchen counter in morning sunlight from a window on the left. "
        "A small potted herb and a ceramic mug nearby. Kinfolk magazine "
        "aesthetic. Maintain exact product appearance."
    ),
    "flat_lay": (
        "Flat lay overhead product photography on light linen surface. "
        "Product centered. Surrounded by 4-5 complementary props "
        "appropriate for this product category. Soft, even lighting. "
        "Maintain exact product colors and labels. Square format."
    )
}

# List of product image files
product_folder = "./product_photos/"
output_folder = "./generated/"
os.makedirs(output_folder, exist_ok=True)

products = [f for f in os.listdir(product_folder) if f.endswith(('.png', '.jpg'))]

for product_file in products:
    product_name = product_file.split('.')[0]
    product_image = Image.open(os.path.join(product_folder, product_file))

    for template_name, template_prompt in TEMPLATES.items():
        print(f"Generating: {product_name} / {template_name}")

        try:
            response = client.models.generate_content(
                model="gemini-3.1-flash-image-preview",  # Flash for cost efficiency
                contents=[template_prompt, product_image],
                config=types.GenerateContentConfig(
                    response_modalities=["TEXT", "IMAGE"],
                    image_config=types.ImageConfig(
                        aspect_ratio="4:5",
                        image_size="2K"
                    )
                )
            )

            # Save generated image
            for part in response.candidates[0].content.parts:
                if part.inline_data is not None:
                    img = part.as_image()
                    filename = f"{product_name}_{template_name}.png"
                    img.save(os.path.join(output_folder, filename))
                    print(f"  ✓ Saved: {filename}")

            time.sleep(2)  # Rate limiting courtesy

        except Exception as e:
            print(f"  ✗ Failed: {e}")
            continue

This script processes every product photo through every template automatically. For 100 products × 3 templates = 300 images, generated in approximately 2-3 hours at a cost of roughly $15-30 (using Nano Banana 2 / Flash pricing).

Cost Optimization for Batch Processing

MODEL SELECTION FOR BATCH:
- Nano Banana 2 (Flash): $0.067/image at 1K — best for volume
- Nano Banana Pro: $0.134/image at 1K — best for hero images
- Strategy: Generate all variants at Flash pricing, then
  re-generate your best-sellers at Pro quality

RESOLUTION STRATEGY:
- Generate batch at 1K ($0.067 each)
- Review for accuracy
- Re-generate approved images at 2K or 4K ($0.101-0.151 each)
- Total cost per SKU: ~$0.40-0.80 for 3 template variants

BATCH PRICING AT SCALE:
50 SKUs × 3 templates × $0.067 = $10.05
100 SKUs × 3 templates × $0.067 = $20.10
500 SKUs × 3 templates × $0.067 = $100.50
+ Re-generation for quality: add ~30% for re-dos and upscaling

The SKU Prioritization Matrix

Not every SKU deserves a full 10-image library. Prioritize based on revenue impact:

TIER A — TOP SELLERS (top 20% of revenue)
Full 10-image library + product video + seasonal variants
Investment: 2-3 hours per SKU
Frequency: Update quarterly with seasonal content

TIER B — STEADY PERFORMERS (middle 60% of revenue)
5-image set: hero, white background, lifestyle, flat lay, detail
Investment: 45-60 minutes per SKU
Frequency: Update annually or at product refresh

TIER C — LONG TAIL (bottom 20% of revenue)
3-image minimum: hero, white background, one lifestyle
Investment: 15-20 minutes per SKU
Frequency: Generate once, update only if product changes

Apply the Pareto principle: your top 20% of SKUs generate 80% of revenue. Give those SKUs the full treatment. Don't spend 3 hours on a product that sells 2 units per month.


A Realistic Production Schedule

For a brand with 200 SKUs and a single AI Producer (part-time, ~10 hours/week on AI content):

WEEK 1-2: Setup
- Define 4-5 visual templates
- Generate model references (if on-model content needed)
- Set up API batch processing script
- Process Tier A products (top 40 SKUs) through hero template

WEEK 3-4: Tier A Completion
- Complete full 10-image libraries for top 40 SKUs
- Generate product video for top 10 sellers
- Quality review and accuracy verification

WEEK 5-8: Tier B Production
- Batch process 120 Tier B SKUs through 3 templates each (360 images)
- Quality review in batches of 30
- Re-generate failures

WEEK 9-10: Tier C Production
- Batch process 40 Tier C SKUs through 2 templates each (80 images)
- Minimal review

WEEK 11-12: Video and Social Content
- Product video for top 20 sellers
- Social-specific variants for seasonal campaign
- UGC-style content for paid social

ONGOING (2-3 hours/week):
- New product launches: full Tier A treatment
- Seasonal updates for Tier A products
- Performance-based upgrades (Tier C product starts selling → upgrade to Tier B)

Total: approximately 200 SKUs fully covered in 12 weeks at 10 hours/week. Traditional photography for 200 SKUs would take 6-12 months and cost $100,000-400,000.


Measuring ROI Per SKU

Track the impact of AI visual content on each product's performance:

METRICS TO TRACK (before vs. after AI content):

Conversion rate:    [before]% → [after]% = [change]%
Click-through rate: [before]% → [after]% = [change]%
Return rate:        [before]% → [after]% = [change]%
Time on page:       [before]s → [after]s = [change]s
Add-to-cart rate:   [before]% → [after]% = [change]%

COST CALCULATION:
AI content cost per SKU:        $___
Revenue increase per SKU/month: $___
Payback period:                 ___ days
Annual ROI:                     ___×

Most brands see measurable conversion improvement within the first 30 days of upgrading product imagery. The payback period for AI visual content is typically under one week for Tier A products.


Practical Exercise

Copied to clipboard