Python · Automation · eCommerce

PDP Automation
Pipeline

From label photo to production-ready product copy in 40 minutes. A vision pipeline that replaced 8+ hours of manual work with a single button click.

40 min
Full batch runtime
117
Unique styles output
$4.59
Total API cost
~$0.03
Per description
1 click
To run a full batch
01 — The Problem

Eight hours of manual work, one product at a time

At Shoe Carnival, every product sample that arrives needs a full product description page before it goes live — a Customer Friendly Name, a 2-4 sentence description, feature bullets, and applicable feature tags. This work was done manually, one product at a time.

The process: photograph the label, photograph the product, transfer files, read the label, look up the style on the brand's site, open Claude.ai, upload photos, write a prompt, review the output, then copy-paste each field individually into the production system. Repeat for the next product.

Timed precisely: 3 minutes and 49 seconds per product. A batch of 139 samples would require 8.8 hours of uninterrupted, focused attention. Products with multiple colorways needed separate sessions even though their descriptions are identical.

02 — The Solution

A governed vision pipeline launched from a desktop shortcut

A local Python automation pipeline that processes a folder of iPhone photos and outputs a formatted Excel workbook with extracted label data, embedded product thumbnails, and complete AI-generated PDP copy for every style. Launches from a desktop shortcut — no terminal, no code, no configuration at run time.

01
Smart Photo PairingImages sorted by iOS timestamp. A detection layer reads each photo and swaps the order automatically if the label and product are reversed — handling the natural variation across multi-session shoots.
02
Label Extraction via Vision APIClaude reads each label photo and returns structured JSON: brand code (BGRP), brand name, style name, ecom style number, and ecom color number. Labels downsampled to 1536px before upload, keeping text legible while cutting payload by ~85%.
03
Governed PDP GenerationThe product photo and extracted label data are sent to Claude with the company SKILL.md as the governing system prompt. The model returns a Customer Friendly Name, product description, feature bullets, and applicable feature tags — consistent every run.
04
Style-Level DeduplicationResults grouped by ecom style number after processing. Multiple colorways under the same style collapse into one PDP row with all color numbers listed. 139 pairs became 117 unique descriptions automatically.
05
Excel Output with ThumbnailsTimestamped Excel workbook with all columns populated — Style Name, Ecom numbers, embedded product thumbnail, Customer Friendly Name, Description, Features, Applicable Features, and Status. Error rows highlighted for manual review.
03 — Before vs. After

The same output. The attention freed.

The runtime is comparable. The difference is where your attention goes during those 40 minutes.

Before — Manual
  • 3m 49s per product — ~8.8 hours for 139 styles
  • Full attention required throughout
  • One product at a time, no parallelism
  • Duplicate descriptions for every colorway
  • No log, no audit trail, no error tracking
  • Output quality varies session to session
After — Pipeline
  • 40 minutes for 117 unique styles
  • Zero attention required after clicking Run
  • Full batch runs while you do something else
  • Automatic colorway deduplication
  • Timestamped log file for every run
  • Governed output via SKILL.md — consistent every time
04 — Results

First full batch — May 13, 2026

278
Images processed
139 label + product pairs
117
Unique styles
22 colorways deduplicated
40m 13s
Runtime
Fully unattended
3 rows
Errors flagged
Highlighted for review
76
Auto-corrections
Reversed pairs swapped
19
Style groups merged
2–4 colorways each
$4.59
Total API cost
Claude Sonnet
~$0.03
Per description
vs. $5–15 freelance
Spreadsheet output from first full batch run
Spreadsheet output — first full batch
05 — In the Wild

The pipeline self-correcting in real time

PDP Pipeline desktop app showing a completed 139-pair run
Desktop app — Pair 139/139 complete, 117 unique styles output

Pair 3 from the first run — photo order was reversed. The pipeline detected it, swapped, and continued without stopping.

14:35:40 [INFO] OK: None / None / None 14:35:40 14:35:43 [INFO] OK: ADIDA / STEEL MTL BTL HANDLE / 187479_418929 14:35:43 [INFO] Swapped: 135112349 is the label, 135055172 is the product. 14:35:50 [INFO] Pair 3 -> OK

End-of-run deduplication summary:

[INFO] Style 191391: 4 colors merged into one row (430547, 430549, 430543, 430545) [INFO] Style 191396: 3 colors merged into one row (430550, 430554, 430552) [INFO] After deduplication: 117 unique style(s). [INFO] Complete. 114/117 OK.
06 — Design Decisions

Why it works the way it does

Governed output via SKILL.md

Rather than prompting the model with free-form instructions, all PDP generation is governed by the company SKILL.md — a structured document encoding writing standards, formatting rules, and quality checks. It becomes the system prompt on every run. Output is consistent regardless of batch size or product category.

Image resizing before API upload

iPhone photos are ~4032×3024px and 3-4MB each. Sending full-resolution files was causing each pair to take over 2 minutes. Downsampling labels to 1536px and products to 1024px before upload reduced per-pair time to 15-25 seconds with no loss in output quality.

Smart label detection, not brittle ordering

The pipeline tries label extraction on the first photo. If it returns no style name and no ecom number, it swaps and retries. In the first full run, 76 of 139 pairs required this correction — a naive ordering assumption would have failed more than half the batch.

Built for a non-developer daily user

Custom tkinter GUI with a live log, pair-limit control for test runs, a Stop button, and a cost estimate before any API calls are made. Launches from a Windows desktop shortcut. No terminal, no command line needed after initial setup.

The real value is not time saved — it is attention freed. 45 minutes of repetitive focused work became a single button click and a result waiting when you come back.

07 — Stack

What it's built on

Python 3 Anthropic Claude Sonnet httpx openpyxl Pillow tkinter GUI GitHub iOS timestamp pairing Windows VBS launcher
08 — What's Next

Version 2 is already scoped

Color language prohibition in PDP output so shared descriptions hold across all colorways
Strict mismatch detection — flag label/product conflicts rather than best-guess pairings
Windows Task Scheduler integration for fully unattended overnight runs
Completion notification via email or Teams when a batch finishes
Cross-reference against the Master Sample List to validate ecom numbers before output
Python·Automation·Claude Vision API·eCommerce Ops·openpyxl·Label Extraction·PDP Copywriting·Style Deduplication·SKILL.md Governance·Shoe Carnival·tkinter GUI·iOS Timestamp Pairing· Python·Automation·Claude Vision API·eCommerce Ops·openpyxl·Label Extraction·PDP Copywriting·Style Deduplication·SKILL.md Governance·Shoe Carnival·tkinter GUI·iOS Timestamp Pairing·