Building a Product Catalogue That Looks Like One Brand, Not a Junk Drawer
Description and use
An automated packaging pipeline unified product covers, naming, metadata, and upload tracking, producing a cohesive brand catalogue and preventing duplicate uploads.
Problem
Inconsistent product packaging and metadata caused a disjointed catalogue that looked like a junk drawer, undermining brand trust and risking account flags on stock platforms.
Outcome
Unified packaging pipeline produced a cohesive catalogue, reduced memory usage, prevented duplicate uploads, and enabled consistent branding across platforms.
Workflow
- Define a single cover template and thumbnail size (1280x720 and 600x600).
- Create pack_product.py to generate zip, cover, and thumb from product name, subtitle, and file count.
- Establish a fixed project folder layout (assets/, output/, packs/, research/, scripts/).
- Use filenames as titles via metadata script; keep research/ for raw data.
- Write make_metadata.py to generate platform‑specific CSV headers (Adobe, Vecteezy, Dreamstime).
- Implement upload_tracker.py to log posted assets and prevent duplicate uploads.
- Convert Markdown guides to branded PDFs with md2pdf.py using reportlab.
- Run pipeline sequentially on a single core, using gc.collect() and resource.getrusage() to manage memory.
- Validate final catalogue with 39 products and 856 MB output on the small server.
Evidence
I picked one template for covers and never touched it again. My pack_product.py renders every cover at 1280x720 and every thumbnail at 600x600 from the same Pillow code path, same font, same layout, only the title and subtitle change.
I wrote make_metadata.py so it writes exactly the header each platform demands and nothing else.
Now upload_tracker.py is a plain ledger that remembers what has been posted.
Half my catalogue is not art files, it is documents: guides, checklists, prompt playbooks. A raw Markdown file is not a product. md2pdf.py takes one Markdown file and renders a clean PDF with styled headings, tables, lists, and links.
- Record date: 2026-10-17T19:56:28.534Z