Case Study

Etsy in,
Pinterest out.

Full-stack FastAPI dashboard with Claude Sonnet niche-aware SEO generation, smart image processing, perceptual deduplication, research-backed scheduling, and dual posting via Make.com or Pinterest API v5.

Status Live · Internal
Client JQ Internal
Category Content Automation
Built 2026
At a glance

What is Etsy to Pinterest Pipeline?

The Etsy to Pinterest Pipeline is a full-stack Python web application that imports Etsy listings (via API or CSV), processes images with smart cropping and perceptual deduplication, generates niche-aware Pinterest SEO (titles, descriptions, alt text, keywords, board assignments) using Claude Sonnet, and posts through Make.com webhooks or the Pinterest API v5 on a research-backed schedule. A FastAPI dashboard with 7 screens handles the entire workflow from import to posting.

The Problem

What was broken.

Running a print-on-demand Etsy shop means uploading new designs regularly, and every new design needs to be cross-promoted on Pinterest. Pinterest is where print-on-demand lives or dies: it is the discovery engine, and a listing without pins is a listing that does not sell.

The manual version of this workflow takes 30 to 60 minutes per day. For every new Etsy listing: download the cover image, resize it to Pinterest dimensions, log into Pinterest, pick a board, write a pin title, write a description with the right keywords, add alt text, schedule it. Multiply by 5 to 10 listings per week and you have a daily grind that directly impacts revenue. Skip a week and sales dip.

Generic scheduling tools (Tailwind, Later, Planoly) solve the posting part but not the content part. They do not write descriptions. They do not know what niche a product belongs to. They do not understand that a watercolour clipart set needs different SEO than a minimalist logo template. The result is formulaic pin descriptions ("Beautiful design! Perfect gift! Click to buy!") that Pinterest throttles and users ignore.

The gap was clear: scheduling is solved, but niche-aware content generation for Pinterest SEO is not. That is what this system builds.

The Approach

What was built.

The system is a three-stage pipeline wrapped in a full web dashboard. Stage one handles listing import: either pulling from the Etsy API directly or importing a CSV export. Images are downloaded, smart-cropped to Pinterest's 2:3 ratio using Pillow, and deduplicated with perceptual hashing (imagehash) so the same design never gets pinned twice even if it appears in different listings.

Stage two is the Claude SEO layer. Each listing runs through Claude Sonnet with a prompt that first detects the product niche (watercolour, minimalist, vintage, boho, kids, wedding, and 10+ others), then generates Pinterest-optimised titles, descriptions, alt text, keyword sets, and board assignments using niche-specific vocabulary and SEO rules. The sweet spot for Pinterest descriptions is 220 to 232 characters, with the primary keyword in the first 80 characters. Claude encodes all of this.

Stage three is review, scheduling, and posting. A review queue lets me approve, edit, or reject every pin before it goes live. Approved pins enter a scheduler with research-backed timing presets (video pins weighted 3x for reach). Posting goes through either a Make.com webhook or the Pinterest API v5 directly, with full logging back to the database.

How It Works

Architecture in plain English.

01
Listing import
New listings come in through the Etsy API (automatic sync) or a CSV upload (manual batch). The system stores each listing with its images, tags, price, and metadata in a SQLite database with 5 normalised tables.
02
Image processing
Pillow smart-crops each image to Pinterest's 2:3 ratio, preserving the subject. Perceptual hashing (imagehash) catches near-duplicates across listings. Video thumbnails are extracted with FFmpeg. Cloudinary handles cloud hosting for the final pin images.
03
Claude SEO generation
Claude Sonnet analyses each listing and detects its niche from 10+ categories. It then generates a Pinterest-optimised title (60 chars), description (220-232 chars, keyword-front-loaded), alt text, keyword set, and board assignment, all using niche-specific vocabulary.
04
Board matching
The system maps each product to the right Pinterest board based on niche, style, and content type. Board assignments are suggested by Claude and can be overridden in the review queue.
05
Review queue
Every generated pin lands in a review dashboard. The user approves, edits, or rejects each one. Nothing posts without human sign-off. Most reviews take under 30 seconds per pin.
06
Smart scheduling
Approved pins enter a scheduler with research-backed timing presets. Video pins are weighted 3x for reach. APScheduler handles the queue, spacing pins throughout the day to avoid spam-pattern detection.
07
Posting and logging
Pins post through Make.com webhooks or the Pinterest API v5 directly. Every posted pin is logged with its Pinterest URL, post time, and status. The system tracks what has been posted and what is still in the queue.
Try It

See it in action.

Interactive walkthrough

Walk through the full pipeline: importing Etsy listings, processing images, generating niche-aware SEO with Claude Sonnet, reviewing pins in the dashboard, scheduling, and posting to Pinterest.

Etsy to Pinterest Pipeline dashboard showing pin builder with AI-generated SEO titles, image gallery with excluded items, and 4 generated pin cards
Launch Interactive Demo

Guided walkthrough with sample data. The live system processes real Etsy listings.

Pipeline flow

Etsy listing in, Pinterest pin out. Seven automated steps, one human review.

Etsy Import
Image Processing
Claude SEO
Board Match
Review Queue
Scheduler
Pinterest
Stack

Built with.

Python 3 FastAPI Claude API Claude Sonnet 4.6 Etsy API Pinterest API v5 Pillow imagehash Cloudinary APScheduler SQLite Make.com FFmpeg Jinja2
Outcomes

What changed.

60m → 5m daily Pinterest time
10+ niches auto-detected
220-232 char SEO sweet spot
100% human-reviewed before posting

The biggest lesson from this build is that Pinterest SEO is niche-dependent. A watercolour clipart set and a minimalist logo template need completely different keyword strategies, description styles, and board placements. Generic tools treat them the same. The Claude layer detects the niche first and adjusts everything downstream, which is why the output reads like a designer wrote it, not a bot.

Free Consultation

Want a system
like this one?

Book a free 30-minute call. We map your situation, scope a similar build, and agree on a fixed quote before anything starts.

Book Free 30-min Call