• email
  • E-Commerce & SaaS

Email Marketing AI Assistant: Breaking a 500K-Subscriber Open-Rate Plateau

Lifted open rates from 15% to 47% and CTR to 12.3% for a 500K-subscriber e-commerce list using GPT-4 personalization and send-time optimization.

  • AI & Machine Learning
  • Backend Engineering
  • Email Infrastructure

At a glance

Sector
E-Commerce & SaaS
Type
email
Services
AI & Machine Learning · Backend Engineering · Email Infrastructure

The problem

The Challenge: A 500K-Subscriber List Stuck at a 15% Plateau

A mid-sized e-commerce brand had grown their email list to 500,000 subscribers through years of paid acquisition and content marketing. They used a major ESP (Klaviyo) with best-practice segmentation and had run over 200 subject line A/B tests in the past year — but their open rate was flat at 15% and click-through rate was at 1.8%. Revenue per email had been declining quarter-over-quarter for 18 months, even as list size grew. The marketing team suspected they had hit an engagement ceiling, but they didn't know how to break through it.

In 2026, email remains one of the highest-ROI marketing channels — but only if you can get subscribers to open and click. Generic 'batch-and-blast' campaigns, even with segmentation, are fundamentally limited because they send the same content to people with very different preferences, browsing history, and purchase intent. True one-to-one personalization at 500K subscribers was technically impossible with off-the-shelf ESP tools.

What we built

Our Solution: Per-Subscriber AI Personalization Engine

We built a personalization layer that sits between the product catalog and the ESP. For every send, the system pulls subscriber-level behavioral data (browsing history, past purchases, open patterns, device type, timezone), then uses GPT-4 to generate a unique subject line, preview text, and product recommendation block tailored to that individual subscriber. FastAPI handles the personalization requests, Celery distributes the workload, and the output is pushed to Klaviyo via API for final delivery.

The key insight: rather than replace Klaviyo (which handles deliverability, list management, and compliance well), we augmented it. Marketers still write campaign briefs in Klaviyo — but our system generates 500,000 unique variations at send time instead of 1 generic version. Every subscriber gets subject lines that reference things they actually care about, sent at the time they're most likely to be checking email.

Calls we would still defend

  • Per-Subscriber Generation at Send TimeInstead of creating 10-20 segment variations, we generate a unique subject line and preview text for each of the 500K subscribers — GPT-4 is fast and cheap enough at scale to make this economically viable.

  • Send-Time OptimizationA per-subscriber model predicts the optimal send time based on historical open behavior — accounting for timezone, day of week, and typical email-checking patterns. Result: a 40% open rate lift from timing alone before personalization.

  • Deliverability GuardrailsBuilt an automated content safety layer that filters out AI-generated copy containing spam trigger words, ALL-CAPS, excessive emojis, or phrases that historically correlate with poor inbox placement — protecting the sender reputation.

Built with

  • GPT-4 / GPT-4o

    Generates unique subject lines, preview text, and personalized product recommendations per subscriber at scale — the quality difference over smaller models was worth the cost.

  • FastAPI

    High-performance async Python backend handling the personalization API with sub-200ms p99 latency per subscriber lookup.

  • Celery + Redis

    Distributed task queue processing 500K personalization jobs per campaign in parallel batches — completes full list generation in under 4 minutes.

  • AWS SES + Klaviyo

    Hybrid delivery: Klaviyo for list management and compliance, SES as a backup sender for high-volume transactional with per-cent cost advantages.

  • PostgreSQL

    Stores subscriber behavioral profiles, historical send data, and generated content cache for auditing and retroactive analysis.

  • Send-Time Optimization Model

    Custom XGBoost model predicting optimal per-subscriber send time — delivered 40% open rate lift independent of content personalization.

Where it landed

What the build changed

47%

Open rate

up from a 15% baseline, with per-subscriber subject lines on a 500K list

12.3%

Click-through rate

on the same list after send-time optimisation

210%

Revenue per email

increase, from generating each message at send time rather than per segment

FAQ

The questions this build raises

What was actually built, the constraints it had to meet, and how it holds up in use.

  • At send time, the system pulls each subscriber's behavioral profile (browsing history, past purchases, engagement patterns) and uses GPT-4 to generate a unique subject line, preview text, and content block tailored to them — not a segment. This means 500,000 subscribers get 500,000 unique email experiences, compared to traditional segmentation which might produce only 5-10 variants.

  • Clients typically see open rates 2-3x their baseline within 60 days. Our client went from 15% to 47% — but real improvement depends on your starting point. Lists with lots of behavioral data to personalize from see bigger lifts than cold lists. Expect 30-50% of the improvement to come from send-time optimization alone, even before content personalization.

  • No — we augment your existing ESP, not replace it. Your ESP continues handling list management, compliance, suppression, and delivery. Our personalization layer sits in front of it, generating unique content variations that are then pushed to the ESP's send API. This avoids the pain of migration and keeps your deliverability reputation intact.

  • We built an automated content safety layer that filters out phrases historically correlated with spam filters — trigger words, ALL CAPS abuse, excessive emojis, suspicious link patterns. Every generated variant is scored before sending, and anything below threshold is automatically regenerated or falls back to a safe default. This has kept our clients' inbox placement above 98%.

  • Minimum viable data is: email address, signup source, past 90 days of email engagement (opens, clicks), and any on-site behavior you can capture (page views, product interest). The more purchase history and browsing data you provide, the better the personalization — but the system produces meaningful lift even with just engagement data alone.

Keep looking

Want to start a project?