INTERACTIVE DEMO — SYNTHETIC DATA

Seasonal Catalog Media Pipeline

Eight command-line tools that move a season's swatches and colourway photos onto a wholesale catalogue. This is the shell, simulated — and the matching, which is not.

Every record on this page is fabricated. No production system, customer, employee or credential is involved.

The production system behind this demo was engineered by Prada Dipa — LinkedIn profile, opens in a new tab and Luthfi Aditya — LinkedIn profile, opens in a new tab. I managed and directed it — requirements, technical review, QA and rollout.

READ THE CASE STUDY

PICK A TOOL

Map exported swatch filenames onto the loader's convention. Anything it cannot place is left alone.

FLAGS
$ python rename_swatches.py ./M27

PICK A TOOL, CHOOSE FLAGS, PRESS RUN

THE EIGHT TOOLS, AND WHICH OF THEM CAN WRITE

The blast radius is the architecture. One tool that did all of this would have to be trusted all at once; eight of them can be trusted separately, and three of them cannot do damage at all.

  • rename_swatches.py · DRY-RUN BY DEFAULT

    renames exported swatch files to the loader's convention

  • photos_sync.py · DRY-RUN BY DEFAULT

    matches colourway photos, uploads only what is missing

  • ws_link.py · DRY-RUN BY DEFAULT

    assigns swatches to colourways and PATCHes the ACF fields

  • find_missing.py · READ-ONLY BY CONSTRUCTION

    which sw-* files never made it into the media library

  • photo_audit.py · READ-ONLY BY CONSTRUCTION

    colourways with no photo, photos with no colourway

  • inspect_media.py · READ-ONLY BY CONSTRUCTION

    duplicate -1 / -2 slugs from an accidental double upload

  • media_refresh.py · DRY-RUN BY DEFAULT

    delete-then-upload, one file at a time

  • probe_upload.py · WRITES ITS OWN TESTS, THEN DELETES THEM

    finds the host's real upload ceiling, then removes every test it made