Teardown No. 74 · Social

60 → 5 Min: How João Queirós sends every new Etsy listing to Pinterest with Claude Sonnet

João Queirós runs a print-on-demand Etsy shop and built a local FastAPI app that moves each new listing to Pinterest. It imports listings from the Etsy API or a CSV, smart-crops images to 2:3 with Pillow and skips near-duplicates through perceptual hashing. Claude Sonnet detects the product niche and writes the pin title, description, alt text, keywords and board suggestion as structured JSON. He approves, edits or rejects each pin in a review queue. APScheduler then times the posts through a Make.com webhook or the Pinterest API v5, and he says his daily Pinterest time went from 60 minutes to 5 minutes.

The problem

He writes that every new listing “needs to appear on Pinterest within a day or two, because Pinterest is how print-on-demand products get discovered.” For months he did this by hand: download the image, resize it, open Pinterest, write a title, write a description with keywords, pick a board, schedule, repeat. “It took 30 to 60 minutes a day. Some days I skipped it. Sales dipped when I did.”

He names three bottlenecks. Etsy images are landscape or square, and Pinterest wants 2:3 vertical with the product kept in frame. Every pin needs a title, a description, alt text and a board, and he says writing this for 5 to 10 listings a week is tedious. A single Etsy listing can have 10 images, so without tracking you pin the same or near-identical images twice.

He used Tailwind for six months before building this. He says Tailwind handles timing well, but “it is a scheduler, not a content generator,” and it does not know what niche a product belongs to.

The blueprint (as he describes it)

  1. Run it as one local app. The system is a FastAPI web application with a Jinja2 frontend, and everything runs locally. SQLite holds 5 tables: listings, images, pins, schedules and post logs. The database tracks each listing’s state: imported, images processed, SEO generated, reviewed, scheduled, posted.
  2. Import listings. Listings come in from the Etsy API or a CSV. Each stage is independent. If the Etsy API is down he imports via CSV, and he can regenerate SEO content without re-importing or re-processing the image.
  3. Crop to 2:3. Pillow smart-crops each image to 2:3 (1000x1500px). He says it is not a blind centre-crop. It uses edge detection to find the region of interest and crops around it. For listings with video, FFmpeg extracts a thumbnail frame.
  4. Deduplicate with perceptual hashes. Every image is hashed on import with the imagehash library. Before generating SEO content, the system checks for a matching or near-matching hash among images already pinned. If it finds one, the listing is flagged and skipped.
  5. Detect the niche and write the pin with Claude Sonnet. One prompt detects the niche, then writes content with niche-specific rules. Niche detection covers 10+ categories, including watercolour, minimalist, vintage, boho, kids, wedding, holiday, abstract, botanical, geometric and retro. The niche decides keywords, vocabulary, board suggestions and tone.
  6. Encode Pinterest SEO rules in the prompt. Titles stay under 100 characters with the primary keyword in the first 40. Descriptions aim for 220 to 232 characters, with the primary keyword in the first 80. The keyword set avoids generic terms like “design” or “art” and uses specific long-tail phrases.
  7. Return and validate JSON. The output is title, description, alt text, 8 to 12 keywords, a board suggestion and a niche classification. Character counts, keyword placement and duplicate keywords are validated before anything enters the review queue.
  8. Review by hand. A review screen lets him approve, edit or reject each generated pin. It shows the image preview, title, description, alt text, keywords and board suggestion side by side.
  9. Schedule with APScheduler. Each approved pin gets a post time based on the scheduling preset, the number of pins already queued that day, and whether it is video or static. Pins are spaced through the day to avoid clusters that trigger spam detection. A calendar view allows drag-and-drop reordering and timing changes.
  10. Post through two channels. The primary channel is a Make.com webhook. It sends the image URL, title, description and board ID to a Make.com scenario that makes the Pinterest API call. The fallback is direct posting through the Pinterest API v5.
  11. Log and retry. Every posted pin is logged with its Pinterest URL, post timestamp and HTTP status. A failed pin stays in the queue and is retried on the next scheduling cycle.
  12. Control it from a dashboard. There are 7 main screens: pipeline overview, import, listings, SEO generation, review queue, schedule and post log.

Stated results

  • Daily Pinterest time: “60 → 5 min” in the stat block. In the text: “from 60 minutes to 5 minutes a day.” He attributes this to “eliminating the content generation step.”
  • His earlier manual estimate was 30 to 60 minutes a day, so the 60-minute starting point is the top of his own range.
  • Sales, traffic, impressions, saves, clicks or pin counts after the build: None stated.
  • The only sales remark covers the manual period: on days he skipped posting, “Sales dipped when I did.”

Caveats

  • This is a case study on his own studio site. The same page sells his AI Content Systems service and offers a free 30-minute consultation.
  • He writes that “The system is currently in active development at my studio.” The linked interactive demo uses sample data.
  • Unverified He says Pinterest “currently weights at roughly 3x the reach” for video pins compared with static pins. He gives no source.
  • He says the scheduling presets are “based on published Pinterest engagement data” but does not cite that data. His statements about Pinterest throttling generic or duplicate pins are his own claims with no data given.
  • Claude Sonnet is one step in a fixed pipeline, and a human approves every pin. This is not an autonomous agent.
  • Handles: LinkedIn linkedin.com/in/joaojbqueiros (verified: linked from his site footer). X @joaojbqueiros (verified: linked from his site footer). Others not found.

FAQ

What does Claude Sonnet do in João Queirós’s pipeline?

It detects each product’s niche from 10+ categories. It then writes the pin title, description, alt text, 8 to 12 keywords and a board suggestion as structured JSON, following Pinterest SEO rules written into the prompt.

How much time does the pipeline save him?

He reports going from 60 minutes to 5 minutes of Pinterest work a day. His earlier estimate for the manual job was 30 to 60 minutes a day.

Did the pipeline increase his Etsy sales or Pinterest traffic?

The source does not say. He gives no sales, traffic or pin metrics for the pipeline. His only sales remark is that sales dipped on days he skipped manual posting.

Does anything post without his review?

Generated pins go into a review queue where he approves, edits or rejects them. Only approved pins are scheduled and posted.

Sources


Want agents like these working your distribution? Get It Built. Get new teardowns weekly: subscribe (double opt-in).

Get one teardown a week.

Same format, a new operator every issue. Double opt-in.