AI Automation · E-Commerce

Atelier
Voss.

A luxury home furnishings brand had 2,000 SKUs and no product descriptions. Their copywriter was spending 45 minutes per product. We built a factory: image in, publish-ready copy out — 2,000 products processed in 48 hours.

Client
Atelier Voss
Year
2025
Type
AI Automation
Stack
n8n · GPT-4o Vision · Claude 3.5 · Perplexity · Shopify
Timeline
4 weeks
01 — The Problem

2,000 Products.
Zero Descriptions.

Atelier Voss sells premium home furnishings — handwoven rugs, ceramic lighting, upholstered furniture, and hand-finished accessories. Their Shopify catalog had over 2,000 SKUs. Most product pages had a title, a price, and a photograph. No description, no SEO metadata, no materials copy.

Their in-house copywriter was producing twenty to thirty descriptions a week — quality work, but at 45 minutes per product, the catalog would take two years to fill. New collections kept arriving. The backlog was growing faster than it could be cleared.

45 min per product

Manual research, attribute extraction from images, drafting, and SEO optimisation — all before a single word was written.

2,000+ blank SKUs

Two years of backlog at current pace, while new collections added 80–120 products per quarter.

No attribute database

Product attributes lived in supplier PDFs and the copywriter's notes — no structured data to feed a template or a model.

Copywriter tied to descriptions

60% of their time was spent on descriptions. Campaign creative, lookbook copy, and email sequences were consistently deprioritised.

Core insight

The bottleneck wasn't writing — it was attribute extraction. The copywriter spent most of their time looking at product images, supplier sheets, and competitor listings to build a mental model of what the product was before writing a word. That part is exactly what a vision model does in seconds.

02 — The Approach

Four Principles
That Shaped the Build.

01

Two models, two jobs

GPT-4o Vision is better at image analysis. Claude 3.5 Sonnet is better at brand-consistent persuasive copy. Using one model for both produced worse output than splitting the task. Each model does what it's best at.

→ Tested against using GPT-4o for both steps. Claude's copy consistently scored higher on brand-voice consistency in blind review by the editorial team.
02

Verify before writing

A model inferring that a rug is "hand-knotted in Nepal" from a product image is a guess. Perplexity cross-references the product and brand against live sources before copy is written — grounding the output in facts rather than confident approximations.

→ Caught 34 incorrect material claims in the first batch run. All were corrected before reaching the editorial review step.
03

Human review on exceptions, not on everything

Requiring editorial sign-off on every generated description would defeat the purpose. The workflow flags only low-confidence outputs and products with missing attributes — roughly 5% of the total. Everything else publishes automatically once approved in the sheet.

→ The editorial team went from reviewing 100% of copy to reviewing under 5%. The saved time went to campaign creative.
04

Structured output enforcement

Unstructured generation produces inconsistent fields — sometimes a meta description is missing, sometimes the SEO title is too long. JSON schema enforcement on every model call means every product gets every field, within every constraint, or the run retries.

→ Zero partial publishes across 2,000 products. Either all four copy fields were present and within spec, or nothing was written to Shopify.
03 — How It Works

Inside the
Factory.

01

Product discovery

An n8n cron job runs nightly and paginates through the Shopify product catalog via the Admin API, using link-header pagination to handle collections of any size. Products missing a description, or flagged for refresh, are queued for processing. Google Sheets acts as the orchestration layer and audit trail.

Shopify Admin APIn8nGoogle Sheets
02

Image analysis — GPT-4o Vision

Each product's primary image is passed to GPT-4o Vision with a structured extraction prompt. The model identifies visible attributes: material composition, colour names, texture, apparent dimensions, and notable design details. Output is enforced as JSON schema — if a field can't be determined from the image, it's null rather than guessed.

OpenAI GPT-4o Visionn8nJSON schema enforcement
03

Brand context research — Perplexity

Extracted attributes are cross-referenced against live web sources via Perplexity. This step verifies material claims, retrieves correct care instructions for fabric types, and surfaces any brand-specific product context. It acts as a fact-check layer before copy is written — preventing confident hallucinations about certifications or origin claims.

Perplexity APIn8n
04

Copy generation — Claude 3.5 Sonnet

Verified attributes and brand context are passed to Claude 3.5 Sonnet with Atelier Voss's house style guide embedded in the system prompt. Claude generates four outputs per product: SEO title, meta description, H1, and body copy. Structured output is enforced — every field must be populated or the run fails and retries.

Anthropic Claude 3.5 Sonnetn8nStructured output
05

Editorial staging

Generated copy is written to Google Sheets alongside the source product ID, confidence flags, and the Perplexity fact-check summary. The editorial team reviews flagged rows — typically fewer than 5% of the total — before anything goes live. Approved rows are marked in the sheet; rejected rows are re-queued with a note.

Google Sheetsn8n
06

Shopify publish

Approved copy is pushed to Shopify via the Admin API using a bulk update mutation. Descriptions, SEO title, and meta description fields are updated atomically. A daily analytics enrichment step then joins Shopify sales data to each product's description version in the Sheet — so the team can see whether AI-generated copy converts better than their originals.

Shopify Admin APIn8nGoogle Sheets
04 — Results

Numbers Worth
Shipping For.

2,000+
SKUs processed in first run
90s
Per product (was 45 minutes)
+12%
Add-to-cart on AI copy vs. originals
100%
Copywriter time freed for campaigns
05 — Key Decisions

Calls Worth
Explaining.

Claude 3.5 Sonnet for copy
over GPT-4o
benefitClaude consistently produced more brand-appropriate tone for luxury goods. GPT-4o defaults to a generic e-commerce register ("elevate your space", "timeless elegance"). Claude's copy was restrained, specific, and closer to editorial.
tradeoffAdditional vendor relationship and API key to manage. For a client already using OpenAI, adding Anthropic adds complexity. The copy quality difference justified it here.
Google Sheets
over Shopify metafields as staging
benefitGoogle Sheets gives the editorial team a familiar, filterable view of all generated copy before it goes to Shopify. They can sort by confidence score, filter by collection, and leave inline comments — none of which is possible in Shopify's admin.
tradeoffTwo-step process: generate to Sheets, then publish to Shopify. A direct metafield staging approach would reduce steps but remove the editorial review layer the team specifically asked for.
Perplexity for research
over web search scraping
benefitPerplexity returns synthesised, sourced answers rather than raw HTML. It's faster to integrate, more reliable at extracting factual context, and includes citations that the editorial team can follow up on for high-value products.
tradeoffAdds per-query cost. For products where the brand context is already well-covered in Shopify metadata, this step could be skipped. A future optimisation is to gate Perplexity on products with low attribute confidence scores only.