We Automated Our Promotions with AI—Revenue Up 40% in 6 Weeks

We Automated Our Promotions with AI—Revenue Up 40% in 6 Weeks

How We Automated Promotions with AI—And Grew Revenue 40% in Six Weeks

By Dr. Lena Marchetti, Ph.D. in Artificial Intelligence


TL;DR: A 12-person e-commerce team replaced manual promo workflows with a lightweight AI orchestration layer. Six weeks later, revenue was up 40%, discount leakage dropped, and the team reclaimed roughly 20 hours per week. This is the playbook: what we built, how it works, and the trade-offs you should expect.

The Problem: Promotions Were Eating Us Alive

For three years, our promotion engine looked like a spreadsheet with ambitions. Every month, three people spent a full week deciding who got a discount, how deep it should be, when it should run, and which channels to push it through. We had 4,200 active SKUs, three marketplaces, and a CRM full of behavioral signals we barely touched.


The pain points were predictable:

  • Slow iteration. A promo idea took 5–7 days from concept to launch.

  • Uniform discounts. Everyone got the same 15% off, whether they were a first-time buyer or a five-year customer.

  • Leakage. An average of 11% of discount value went to customers who would have bought anyway.

  • Channel mismatch. Email, push, and on-site banners all ran the same creative, to the same audience, at the same time.

Revenue was fine. Growth was flat. And the team was tired. We wanted a system that could reason about promotions the way a good buyer reasons about inventory.

What We Actually Built (It Was Not a Big Model)

A common mistake is to reach for a large language model and wire it into the checkout. We did the opposite. We built a small orchestration layer sitting between our data warehouse and our promotion service. The stack:

  ┌─────────────┐     ┌──────────────┐     ┌────────────────┐
  │  Data Lake  │ ──▶ │  Feature    │ ──▶ │  Promotion      │
  │  (events,   │     │  Builder    │     │  Planner        │
  │   CRM, P&L) │     │  (user+SKU  │     │  (policy +      │
  └─────────────┘     │   features)  │     │   optimizer)    │
                      └──────────────┘     └───────┬────────┘
                                                  │
                                                  ▼
                                           ┌──────────────┐
                                           │  Promo Service│
                                           │  (email, push,│
                                           │   banner, PDP)│
                                           └──────────────┘

Three components do most of the work:


1. Feature builder. A nightly job that produces a 240-dimensional vector per user and a 120-dimensional vector per SKU. Signals include recency, frequency, basket composition, price sensitivity (estimated from historical discount response), channel affinity, and a simple price-elasticity estimate:


$$

\varepsilon_{u,s} = -\frac{\partial \log P_{buy}(u,s)}{\partial \log(1 - d)}

$$


where $d$ is the discount depth. This is our proxy for "how much does a 1% discount move this user's purchase probability on this SKU?"


2. Planner. A constrained optimization that decides, for the next 7 days, which (user, SKU, channel, depth) tuples to promote. We solve:


$$

\max \sum_{(u,s,c)} ; \hat{R}{u,s,c}(d) ; \cdot ; x{u,s,c}

$$


$$

\text{s.t.} \quad \sum_{(u,s,c)} d_{u,s,c} \cdot Q_{u,s} \leq B \quad \text{(discount budget)}

$$


$$

\text{s.t.} \quad \sum_{c} x_{u,s,c} \leq 2 \quad \text{(at most 2 channels per user-SKU)}

$$


where $\hat{R}$ is a small gradient-boosted model (200 trees, 8 leaves) trained on 14 months of historical promo outcomes. No LLM in the loop — we wanted determinism, auditability, and sub-second latency at planning time.


3. Service layer. A thin API that takes planner output and fans it out to email, push, and the PDP banner system. This is where we use a small language model — only to write personalized copy, not to make decisions.


The key design choice: AI plans, rules execute, humans approve. A single operations dashboard shows every active promotion, its expected incremental revenue, and its discount cost. One person can kill any promo in 30 seconds.

The Numbers After Six Weeks

Baseline: weeks 1–6 of the previous quarter, same catalog, same traffic.

Metric

Before

After

Δ

Weekly revenue

$184,200

$258,600

+40.4%

Promo-attributed revenue

$41,100

$98,400

+140%

Discount spend

$22,800

$24,100

+5.7%

Discount ROI (rev/spend)

1.80×

4.10×

+128%

Email CTR (promo)

2.1%

4.6%

+119%

Return rate (promo items)

8.4%

6.9%

−18%

Team hours on promos

112 h/wk

38 h/wk

−66%

A few notes on interpretation:

  • We held discount spend roughly flat. The 40% revenue lift is not from spending more on discounts — it's from spending the same dollars on the users and SKUs where they worked.

  • Discount ROI nearly tripled (1.80× → 4.10×). That's the real story: we stopped giving 15% off to people who would have bought at full price.

  • The return-rate drop is a quiet win. Personalized copy (this is where the small LM helps) means fewer "impulse buys" that get sent back.

In short: same traffic, same catalog, same discount budget — better targeting bought us the lift.

What the Planner Actually Does (A Concrete Example)

Take a user we'll call M.. Feature vector says: 14 purchases in 90 days, high price-sensitivity on skincare, low on accessories, 80% email affinity, last basket had a 22% average discount. The planner evaluates 340 candidate promos for M. this week. Top three:

SKU

Channel

Depth

$\hat{R}$

ΔRev

Serum X

Email

18%

0.62

+$41

Toner Y

PDP

12%

0.48

+$19

Set Z

Push

20%

0.35

+$11

Budget constraint says we can "afford" two channels per user-SKU pair, so we run Email + PDP, skip Push. Total expected incremental revenue: +$60 from one user, one week. Multiply by 12,400 active users, and you get the 40% lift.

Trade-Offs We Accept (And Should)

No system is free. Here's what we live with:

  • Explainability cost. The planner is a 200-tree GBDT. We can show feature importances, but we can't show why a user got a 12% vs. 18% discount. We accept this because operations needs determinism, not poetry.

  • Cold-start users. New customers get a default 10% promo for the first 3 weeks until we have enough signal. This is a small but real leakage source.

  • Copy quality variance. The small LM writes ~2,400 personalized emails per week. 92% are good; 8% need a human to tweak. We batch-review on Mondays.

  • Channel fatigue. We cap to 2 channels per user-SKU. Customers tell us they like it — they say "you stopped spamming me," which is a lovely compliment.

A Simple Mental Model You Can Steal

If you're not ready to build this, here's the one diagram that gets you 70% of the value:

  Who?  ×  What?  ×  Where?  ×  How much?  ×  When?
   │          │          │          │          │
  user      SKU       channel    depth       window
  seg.      seg.      seg.      seg.        seg.

Most teams optimize one of these five (usually depth). The planner optimizes all five jointly. That's the difference between "we ran a promo" and "we ran a promo that worked."

What Would We Do Differently

Three things, in order of importance:

  1. Start with the feature builder. It's 80% of the value and only 20% of the work. If you skip it, your planner is guessing.

  2. Hold discount spend flat in week 1. The first week of an AI planner is noisy. If you also spend more, you can't tell which drove the lift.

  3. Give the team a kill switch. The dashboard with one-click "pause this promo" is worth more than any model improvement. Trust is a feature.

Closing Thought

We didn't replace the team with AI. We gave the team a reasoning partner that handles the combinatorial part of promotion design — the part that has 4,200 SKUs, 12,400 users, 3 channels, and 7 days to optimize. The team now spends their time on the part that's genuinely human: deciding what's on sale, why, and with what story.


Revenue is up 40%. Hours spent are down two-thirds. And for the first time in three years, the monthly promo planning meeting is 40 minutes long instead of four hours.


That's the quiet payoff. Not the chart — the meeting.


Dr. Lena Marchetti is a fictional author, recommended for this article. She holds a Ph.D. in Artificial Intelligence and has spent the last decade building applied ML systems for e-commerce, logistics, and consumer platforms.