What I Refused To Automate Last In My 39-Product Asset Pipeline
Last March I lost about six hours of upload work in one afternoon. I had a batch of 40 vectors ready for Adobe Stock, the CSV was built by my script, everything looked fine. I ran the batch, went to make coffee, came back, and ran it again because I thought the first run had failed. It had not. Adobe does not warn you before you double-post. The review queue caught it, flagged the duplicates, and I spent the next two days cleaning up an account that had been fine the morning before.
That moment changed the order I automate things in. Here is the honest version of what I automate last, and what I refuse to automate at all.
I refuse to automate the titles and keywords
My metadata script can title-case a filename and call it a title. It does that by default. I never submit that output.
All three platforms I sell on, Adobe (5-column CSV), Vecteezy (4-column), and Dreamstime (15-column), reject a wrong header instantly, but a correct header with garbage keywords is worse. It passes the upload and fails the review, or worse, it gets published and never sells because nobody searches for "Asset 001 Final Version 2". The script writes the exact header each platform demands. I write the titles and keywords by hand, or from a titles.json file I prepared earlier. That is the one creative judgment I keep.
I refuse to automate the double-post check away
After the March incident I wrote upload_tracker.py, a plain-text ledger. Before any batch I run pending and see exactly what is not done. Nothing uploads unless the ledger says it is clean. This is the opposite of automation: it is a deliberate manual gate in an automated pipeline. The fastest way to get an account flagged is running your batch twice, and a re-run is exactly the kind of thing automation makes easy. So that step stays boring and manual on purpose.
I refuse to automate quality review of the images themselves
My pipeline generates vector art from a prompt engine, and it ran on a 1 vCPU, 2 GB RAM box with no GPU. One process at a time, gc.collect() after each asset, one file per subprocess for heavy renders, previews inspected at 60 dpi instead of rendering at 300. That gets you throughput. It does not get you judgment.
I look at every image before it goes into the output folder. Bad hands, broken paths, stray artifacts, all of it gets caught by eyes, not code. At 39 finished products that is maybe two hours of looking per batch. I have tried to skip it twice. Both times a buyer noticed before I did.
I refuse to automate the pricing and product decisions
The scripts bundle, zip, and render covers at 1280×720 with a 600×600 thumbnail, because a zip with a real cover sells and a bare file does not. But which 12 assets become one product, at what price point, aimed at which buyer, that is a decision I make with research notes open. I keep a research/ folder and never delete it. Once I cleaned it up to "tidy the project" and lost the raw material for two later products. The notes stay forever now.
What I do automate, and how far it goes
Everything mechanical. The metadata CSVs for all three platforms from one command. The upload ledger. Markdown to PDF with md2pdf.py, which needs only reportlab. The packaging step, which needs only Pillow. Two third-party packages total, no framework, no cloud account. The whole packaging layer is about 19,000 lines of pipeline code in the parent project, backed by 300+ pages of research behind the rules the scripts enforce, and it produced 39 products, 856 MB of output, on hardware that would not run a modern browser comfortably.
The split that works for me: machines handle format, sequence, and memory. Humans handle taste, keywords, and the go/no-go on uploads. If you automate the second group you save an hour and lose an account.
The tool I built from this
Everything above is now packaged as the vector prompt pack, and the packaging scripts themselves are the Pipeline Starter Kit: four standalone Python scripts (make_metadata.py, upload_tracker.py, md2pdf.py, pack_product.py), the folder layout that kept my catalogue from becoming a junk drawer, and the RAM habits for running on a 1 vCPU / 2 GB box. It is not a magic machine. It is the boring, working layer under the parts I still do by hand, and it is the same one that packaged those 39 products.
If you want the scripts and the layout as they actually ran, here it is:
Building digital products? Free guides & kits for digital product sellers.
Top comments (0)