Building An AI Automated Print-On-Demand Business: An Experiment


4 min read


Last month (March) I was sitting with a friend in our "idea factory" one afternoon while he was showing me Midjourney. I was blown away at how good AI art is getting. Both of us have marketing backgrounds, strongly focused on growth hacking. Even though I have a background in marketing, I'm not naturally a creative or artistic person. My little brother got that talent, I got an analytical mind.

But, what if I could use something like Midjourney to create products?

Could I automate everything?

I dove in head first to start exploring my options and figuring things out. As a Rubyist, I naturally created my online store on Shopify. Just kidding, it's the incredible amount of integrations that Shopify has that made this a no-brainer for me.

So, in true soloprenuer fashion, I also had to dive into YouTube to figure out what needs to be done. There are some fantastic channels out there with loads of content! However, I found one thing commonly true across nearly all of the videos out there: they undersell the level of effort required to start a print-on-demand business.

There are a lot of subtle nuanced steps involved and frankly, a hell of a lot of copy+paste happening. As a developer, this is absolutely MADDENING!

Business Model Outline

Let's dive right into the business model outline here. To frame this model, there are two goals that I am working toward:

  1. 100% Automation.

  2. Enough passive income to replace my salary entirely.

My first goal isn't entirely possible. If you're unfamiliar with Midjourney, this is when you learn that the bot you use to interact with to generate images is tied to the specific Discord user who signed up. Pretty smart, but that means I can't write my own bot to interact with it. I'm also not sure I want to program entirely randomized phrases (or full product descriptions) getting turned into images and placed on products for printing that I haven't laid eyes on. There's also some photo editing that has to happen, particularly upscaling the images to maximize the quality of the print.

Here's a nice canvas outline showing, overly simplified, the steps required to create and publish a product:

Step 1 can't really be automated without using techniques that go against Discords TOS. Step 2 has interesting automation aspects. After hours of YouTube videos on how to use Photoshop, I found this YouTube video for bulk-processing image mockups. This guy is using a Javascript automation extension that was created back in the mid-2000s to automate a lot of his mockup process. Cool!

This isn't the kind of automation that I was hoping for, but I'll still take whatever I can get.

For steps 3 and 4 I had to take a closer look at my service providers and determine if there is an API I can use. Shopify has a famous API, but does my print provider?

For this experiment, I decided on using Printful. Of the three most popular, they are the most expensive but they offer the least amount of manual intervention for subtle nuanced customer service tasks. Also, the difference in price doesn't appear to make a meaningful difference until the scale of your store sales is very high. Since my goal is to optimize for automation I think Printful makes the most sense.

Printful appears to have an API that is rather robust. The docs are pretty decent, better than some enterprise API's I've worked on. But, some context from their API is missing. For example, the API documentation shows that I can create a product template by providing the details of the location on a print product and a link to the image. But then how does positioning work? What if I want to use a repeating pattern? ๐Ÿค” After doing some searching I found that no one is writing about this API in public. Probably so they don't give away their secret sauce recipe ๐Ÿ˜

This product template creation is easily one of the most critical and cumbersome steps in this entire print-on-demand business workflow.

In the next part of this series, I'll go through how I architect the solution and structure my code.

Did you find this article valuable?

Support Seth T. by becoming a sponsor. Any amount is appreciated!