<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhamad Revanza Rafif Hamdani</title>
    <description>The latest articles on DEV Community by Muhamad Revanza Rafif Hamdani (@revanzart).</description>
    <link>https://dev.to/revanzart</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4151595%2F31b958fc-6e04-437c-bc2b-8d265f1dd23b.jpg</url>
      <title>DEV Community: Muhamad Revanza Rafif Hamdani</title>
      <link>https://dev.to/revanzart</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/revanzart"/>
    <language>en</language>
    <item>
      <title>I Made 39 Digital Products and Sold Almost Nothing. The Product Was Never the Problem.</title>
      <dc:creator>Muhamad Revanza Rafif Hamdani</dc:creator>
      <pubDate>Thu, 01 Oct 2026 13:03:38 +0000</pubDate>
      <link>https://dev.to/revanzart/i-made-39-digital-products-and-sold-almost-nothing-the-product-was-never-the-problem-16j3</link>
      <guid>https://dev.to/revanzart/i-made-39-digital-products-and-sold-almost-nothing-the-product-was-never-the-problem-16j3</guid>
      <description>&lt;p&gt;I still remember refreshing the dashboard at 2am, hoping the number would change.&lt;/p&gt;

&lt;p&gt;It did not. Thirty-nine products in the store, a clean landing page, decent covers, and almost no sales. I had done the thing every guide tells you to do. Make a good product. Make more of them. Ship.&lt;/p&gt;

&lt;p&gt;The problem was that I had optimised the wrong half of the business.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trap of building
&lt;/h2&gt;

&lt;p&gt;Building feels like progress. You can see it. You generate the files, you write the description, you hit publish, and something new exists in the world that did not exist an hour ago. It is deeply satisfying, and that satisfaction hides a very simple fact.&lt;/p&gt;

&lt;p&gt;A product nobody can find is a product nobody can buy.&lt;/p&gt;

&lt;p&gt;I had confused &lt;em&gt;having something to sell&lt;/em&gt; with &lt;em&gt;having a business&lt;/em&gt;. Those are different problems. The first one I could solve alone, at night, with code. The second one required something I had not built at all: a way for strangers to arrive.&lt;/p&gt;

&lt;h2&gt;
  
  
  The number that changed how I think
&lt;/h2&gt;

&lt;p&gt;When I dug into how people actually reach a store like mine, one statistic stopped me cold. On Gumroad, roughly 40% of visits are people typing the URL directly. They already knew the creator. They came on purpose.&lt;/p&gt;

&lt;p&gt;That is the whole game. Discover pages, search, and social all amplify a store that already has an audience. They do not create one from nothing. The platform is a cash register, not a traffic engine. It will happily take money from people who already decided to buy. It will not introduce you to them.&lt;/p&gt;

&lt;p&gt;The second number was worse. Around 44% of products on the platform earn zero. Not a little. Zero. And it is almost never because the product is bad. It is because nobody ever saw it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did instead
&lt;/h2&gt;

&lt;p&gt;So I stopped building and started distributing. I made a simple rule: every product needs a page that can be found by someone who has never heard of me.&lt;/p&gt;

&lt;p&gt;That meant writing pages around the exact words a real buyer types. Not "sticker pack". Something like "cute dinosaur stickers PNG for Cricut". Long, specific, low-competition, and written for a person who is already looking to solve a small problem.&lt;/p&gt;

&lt;p&gt;I built 76 of those pages on a host Google can index, plus 42 more on an anonymous paste site that also gets crawled. Every page points back to a free sampler. The sampler points to the paid packs. That is the funnel, and it only works because each entry point answers a real search.&lt;/p&gt;

&lt;p&gt;It is not glamorous. Writing 118 pages is not fun the way shipping a product is fun. But it is the half of the business that was missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable lesson
&lt;/h2&gt;

&lt;p&gt;If your product is not selling, the default assumption is that the product is not good enough. Sometimes that is true. More often, the product is fine and invisible.&lt;/p&gt;

&lt;p&gt;Before you build product number forty, count how many doors you have built that lead to product number one. If the answer is zero, you already know what the next month is for.&lt;/p&gt;

&lt;p&gt;If you are building something similar and want to see what the output looks like, I keep a free pack of cute kawaii stickers (transparent PNG, commercial use) here, no email needed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://revanzart.gumroad.com/l/free-cute-sticker-sampler" rel="noopener noreferrer"&gt;Free cute sticker sampler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full catalogue is browsable at &lt;a href="https://revanzart.gumroad.com" rel="noopener noreferrer"&gt;revanzart.gumroad.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>sideprojects</category>
      <category>indiehackers</category>
      <category>gumroad</category>
    </item>
    <item>
      <title>How I Run a Full Content Pipeline on a $7 VPS With 2GB of RAM (And the 3am Crash That Taught Me Why)</title>
      <dc:creator>Muhamad Revanza Rafif Hamdani</dc:creator>
      <pubDate>Thu, 01 Oct 2026 05:50:56 +0000</pubDate>
      <link>https://dev.to/revanzart/how-i-run-a-full-content-pipeline-on-a-7-vps-with-2gb-of-ram-and-the-3am-crash-that-taught-me-why-4cho</link>
      <guid>https://dev.to/revanzart/how-i-run-a-full-content-pipeline-on-a-7-vps-with-2gb-of-ram-and-the-3am-crash-that-taught-me-why-4cho</guid>
      <description>&lt;p&gt;The cron job ran at 3am and the server went dark.&lt;/p&gt;

&lt;p&gt;I woke up to a dead SSH session, a swap file that had been chewed through, and a pipeline that had produced nothing. The task was simple on paper: generate a batch of images, vectorise them, package them, upload them. On my laptop it took a few minutes. On a 1 vCPU box with 2GB of RAM it killed the machine.&lt;/p&gt;

&lt;p&gt;I had written code that worked. I had not written code that fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why small servers die
&lt;/h2&gt;

&lt;p&gt;The mistake was concurrency. I processed everything at once, because that is the default when you write a loop. Ten images in flight means ten copies of the model, ten decoded bitmaps, ten sets of intermediate buffers. On a big machine that is a rounding error. On 2GB it is the entire budget, and the kernel reaches for swap, and swap on a cheap VPS is a slow death.&lt;/p&gt;

&lt;p&gt;The fix was not a bigger server. It was a smaller pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rules I now follow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;One process at a time.&lt;/strong&gt; The pipeline runs a single job, finishes it, frees the memory, and starts the next. It is slower in wall-clock terms and dramatically more reliable. For a background job nobody is watching, reliability is the only metric that matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measure peak, not average.&lt;/strong&gt; Average memory usage lies. A step that idles at 40MB and spikes to 900MB for two seconds will still kill you. I now log peak RSS per step, so I know exactly which stage is the dangerous one before it runs at 3am.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cap the inputs.&lt;/strong&gt; Most pipelines do not need to load a full-resolution source to produce a small output. I resize before the expensive step, not after. The model sees what it needs and nothing more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Garbage collect on purpose.&lt;/strong&gt; In Python, the reference counting is not always fast enough for big binary objects. Calling &lt;code&gt;gc.collect()&lt;/code&gt; between heavy steps costs milliseconds and gives back hundreds of megabytes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers looked like
&lt;/h2&gt;

&lt;p&gt;After the rewrite, generating a full batch of images peaked at 29MB of RSS. Twenty-nine. The crash was never about the work being too big. It was about doing too much of it at the same time.&lt;/p&gt;

&lt;p&gt;That batch now runs unattended. It has run dozens of times without me touching it, on the same cheap box, because it respects the ceiling it is running under.&lt;/p&gt;

&lt;h2&gt;
  
  
  The broader point
&lt;/h2&gt;

&lt;p&gt;There is a temptation to treat infrastructure as someone else's problem, to assume that if the code is correct the server will cope. The server does not care about correctness. It cares about memory, and it will tell you exactly where your assumptions were wrong, usually at the worst possible hour.&lt;/p&gt;

&lt;p&gt;If you are building automation on cheap hardware, budget memory the way you budget money. Know your peak. Do one thing at a time. Resize early. Free explicitly.&lt;/p&gt;

&lt;p&gt;The whole system I run, generation, vectorising, packaging, and publishing, fits comfortably inside a tier that costs less than a coffee a week. Not because it is clever, but because it is disciplined about what it holds in memory at once.&lt;/p&gt;

&lt;p&gt;If you want to see what the pipeline produces, there is a free set of kawaii stickers (transparent PNG, commercial use) here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://revanzart.gumroad.com/l/free-cute-sticker-sampler" rel="noopener noreferrer"&gt;Free cute sticker sampler&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>python</category>
      <category>automation</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>The Long-Tail SEO Playbook for Digital Products (118 Pages, One Pattern)</title>
      <dc:creator>Muhamad Revanza Rafif Hamdani</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:03:48 +0000</pubDate>
      <link>https://dev.to/revanzart/the-long-tail-seo-playbook-for-digital-products-118-pages-one-pattern-ei6</link>
      <guid>https://dev.to/revanzart/the-long-tail-seo-playbook-for-digital-products-118-pages-one-pattern-ei6</guid>
      <description>&lt;p&gt;The first page I wrote got zero traffic. So did the second.&lt;/p&gt;

&lt;p&gt;The tenth page got a little. By the time I had written a hundred, the pattern was obvious, and it had nothing to do with writing better. It had to do with writing &lt;em&gt;narrower&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why broad keywords lose
&lt;/h2&gt;

&lt;p&gt;If you sell stickers and you write a page titled "Stickers", you are competing with the entire internet for a word that means everything and nothing. You will lose, and even if you won, the traffic would be useless because the person searching "stickers" has no idea what they want yet.&lt;/p&gt;

&lt;p&gt;Buyers do not search in categories. They search in problems. "Cute dinosaur stickers PNG for Cricut" is not a prettier version of "stickers". It is a completely different request. The person typing it has already decided what they want, which format they want it in, and what tool they are going to use it with. That specificity is the entire opportunity.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern
&lt;/h2&gt;

&lt;p&gt;Every page follows the same skeleton:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One intent per page.&lt;/strong&gt; One product idea, one format, one use case. If a page is trying to catch two searches, it catches neither.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The keyword lives in the title, the first line, and the URL.&lt;/strong&gt; Not stuffed. Placed where a search engine and a human both expect to find it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The first paragraph answers the query immediately.&lt;/strong&gt; If the search was "cute dinosaur stickers PNG for Cricut", the page opens by saying, plainly, that this is a set of cute dinosaur stickers in PNG format that works in Cricut. Answer-first writing is also what gets pulled into AI search results, which now sit above the classic blue links.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A clear next step.&lt;/strong&gt; Not a wall of ads. One honest pointer to the relevant product, and one to a free sample.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why volume matters here
&lt;/h2&gt;

&lt;p&gt;Long-tail pages are small. Each one catches a trickle. The trickle only becomes a stream when there are many of them, each targeting a slightly different buyer. 118 narrow pages beat one broad page, not because any single page is impressive, but because together they cover a hundred different ways a person might describe the same small need.&lt;/p&gt;

&lt;p&gt;The cost is time. Writing them is repetitive, and the results are slow, often 60 to 90 days before search engines trust the content enough to rank it. That is the tax. The upside is that once a page ranks, it keeps working while you sleep, which is the opposite of social media, where a post is dead in a day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest caveat
&lt;/h2&gt;

&lt;p&gt;This is not a growth hack and it does not replace having something worth finding. If the product is bad, a hundred pages will just route a hundred times more people to a disappointment. The pages are a multiplier. The product is the thing being multiplied.&lt;/p&gt;

&lt;p&gt;If you want a fast way to see the quality of what I make, there is a free sampler of cute kawaii stickers (transparent PNG, commercial use) here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://revanzart.gumroad.com/l/free-cute-sticker-sampler" rel="noopener noreferrer"&gt;Free cute sticker sampler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full set of themes is at &lt;a href="https://revanzart.gumroad.com" rel="noopener noreferrer"&gt;revanzart.gumroad.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>marketing</category>
      <category>indiehackers</category>
      <category>content</category>
    </item>
    <item>
      <title>Nobody Warns You About the Boring Parts of Selling Digital Products</title>
      <dc:creator>Muhamad Revanza Rafif Hamdani</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:03:07 +0000</pubDate>
      <link>https://dev.to/revanzart/nobody-warns-you-about-the-boring-parts-of-selling-digital-products-1p0d</link>
      <guid>https://dev.to/revanzart/nobody-warns-you-about-the-boring-parts-of-selling-digital-products-1p0d</guid>
      <description>&lt;p&gt;Nobody makes a video about the boring parts.&lt;/p&gt;

&lt;p&gt;The videos are about the idea, the launch, the first sale, the graph that goes up and to the right. What they leave out is the month of writing product descriptions, resizing covers, tagging keywords, and answering the same support email four times. That part does not trend, and it is the part that decides whether any of it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The work that does not feel like progress
&lt;/h2&gt;

&lt;p&gt;When I started, I assumed the creative work was the job. Design the thing, ship the thing, done. What I found instead was that the creative work is maybe a fifth of it. The rest is plumbing.&lt;/p&gt;

&lt;p&gt;Writing a description that a real person can read without wincing. Making sure the file opens in the tool the buyer actually uses. Setting the licence so a print-on-demand seller is not exposed. Naming the file something a human can find in a folder of forty downloads. None of it is clever. All of it is the difference between a purchase and a refund.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why people quit here
&lt;/h2&gt;

&lt;p&gt;The boring parts arrive right after the exciting part ends. You have shipped. You feel good. Then you look at the list of small, unglamorous tasks between you and a sale, and it is long and grey. Most people stop there and start a new product instead, because a new product feels like progress again.&lt;/p&gt;

&lt;p&gt;That is the loop. A shelf of half-finished things, each abandoned exactly where the boring work began.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix is automation, applied to the boring parts specifically
&lt;/h2&gt;

&lt;p&gt;The insight that saved me was simple: the boring parts are boring because they are repetitive, and repetitive work is exactly what a script is for. So I automated them, one at a time.&lt;/p&gt;

&lt;p&gt;Generating the cover. Writing the description from a template plus real details. Setting the category and keywords. Uploading, publishing, and remembering what had already been done so nothing gets posted twice. Each piece is small. Together they removed almost all of the grey work and left me the creative part, which is the part I actually enjoy.&lt;/p&gt;

&lt;p&gt;The rule I follow now: if I do a task three times by hand, it becomes a script the fourth time. Not because I love automation, but because manual repetition is the thing that makes me quit.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real lesson
&lt;/h2&gt;

&lt;p&gt;Selling digital products is not a creativity problem. It is a consistency problem. The winners are rarely the most talented. They are the ones who did not walk away when the work stopped being fun, and who built systems so that the un-fun work took care of itself.&lt;/p&gt;

&lt;p&gt;Find the boring part. Automate it. Then do it again, forever, and let it compound.&lt;/p&gt;

&lt;p&gt;If you want to see the result of that compounding, there is a free pack of cute kawaii stickers (transparent PNG, commercial use) here, no email required:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://revanzart.gumroad.com/l/free-cute-sticker-sampler" rel="noopener noreferrer"&gt;Free cute sticker sampler&lt;/a&gt;&lt;/p&gt;

</description>
      <category>indiehackers</category>
      <category>sideprojects</category>
      <category>productivity</category>
      <category>marketing</category>
    </item>
    <item>
      <title>From One Prompt to a Product Catalogue: How I Turned a Single Idea Into a Repeatable System</title>
      <dc:creator>Muhamad Revanza Rafif Hamdani</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:02:32 +0000</pubDate>
      <link>https://dev.to/revanzart/from-one-prompt-to-a-product-catalogue-how-i-turned-a-single-idea-into-a-repeatable-system-3i3c</link>
      <guid>https://dev.to/revanzart/from-one-prompt-to-a-product-catalogue-how-i-turned-a-single-idea-into-a-repeatable-system-3i3c</guid>
      <description>&lt;p&gt;The first sticker pack I made was luck. I had an idea, I spent an evening on it, and it happened to be good.&lt;/p&gt;

&lt;p&gt;The second one was not luck. It was me trying to remember how I did the first one, and failing. Different canvas size. Different line weight. A colour palette that did not match. The two packs looked like they were made by two different people.&lt;/p&gt;

&lt;p&gt;That is when I stopped thinking about the product and started thinking about the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  One idea is a lottery ticket
&lt;/h2&gt;

&lt;p&gt;An idea that works once is fragile. You cannot rely on it, you cannot scale it, and you cannot hand it to anyone. You got lucky, and luck does not repeat on command.&lt;/p&gt;

&lt;p&gt;A system is different. A system takes an input, applies a fixed set of rules, and produces an output you can predict. The output is only as good as the rules, but the rules can be improved, and once they are good, they keep being good for every future input.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the system actually is
&lt;/h2&gt;

&lt;p&gt;Mine has five stages, and the important thing is that each stage is fixed before the next one runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A locked spec.&lt;/strong&gt; Before generating anything, the rules are set: consistent line weight, a fixed canvas size, a defined palette, transparent backgrounds, a hard cap on file size. Every product that comes out of the pipeline inherits these. That is why the whole catalogue looks like one brand instead of a junk drawer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generation.&lt;/strong&gt; The spec goes in, a raw sheet comes out. Consistent, but not yet sellable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vectorising.&lt;/strong&gt; This is the stage most people skip. A PNG is a picture. An SVG is a file you can cut, resize, and recolour forever, and it is what professional buyers and cutting-machine users actually need. Running every sheet through a tracer is the single step that separates a hobby pack from a professional one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Packaging.&lt;/strong&gt; Every product ships the same way: individual transparent PNGs, a sticker sheet, an EPS, an SVG, a preview, and a plain-language commercial licence. The buyer knows exactly what they get because every product is built the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Publishing.&lt;/strong&gt; The upload, the description, the cover, the keywords, and the category are all generated by script. The only thing left for a human is the decision of what to make next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters more than any single product
&lt;/h2&gt;

&lt;p&gt;A catalogue built by a system compounds. Each new product inherits the quality of the ones before it, the brand stays consistent, and the marginal cost of the next product drops toward zero. A catalogue built by hand resets every time, which means every product is a fresh gamble.&lt;/p&gt;

&lt;p&gt;The system is the asset. The products are just what it produces this week.&lt;/p&gt;

&lt;p&gt;If you want to see what a system-built catalogue looks like, there is a free pack of cute kawaii stickers (transparent PNG, commercial use) here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://revanzart.gumroad.com/l/free-cute-sticker-sampler" rel="noopener noreferrer"&gt;Free cute sticker sampler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full range is browsable at &lt;a href="https://revanzart.gumroad.com" rel="noopener noreferrer"&gt;revanzart.gumroad.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>sideprojects</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built an AI Pipeline That Turns One Idea Into 39 Sticker Packs (Here's the Whole System)</title>
      <dc:creator>Muhamad Revanza Rafif Hamdani</dc:creator>
      <pubDate>Wed, 30 Sep 2026 17:58:12 +0000</pubDate>
      <link>https://dev.to/revanzart/i-built-an-ai-pipeline-that-turns-one-idea-into-39-sticker-packs-heres-the-whole-system-3gen</link>
      <guid>https://dev.to/revanzart/i-built-an-ai-pipeline-that-turns-one-idea-into-39-sticker-packs-heres-the-whole-system-3gen</guid>
      <description>&lt;h1&gt;
  
  
  I Built an AI Pipeline That Turns One Idea Into 39 Sticker Packs (Here's the Whole System)
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;How I went from one prompt to 39 commercially-licensed sticker sets, a Gumroad store,&lt;br&gt;
and 118 indexable pages — without a GPU, on a $7/month VPS.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Last month I had a problem most creators will recognise: I could design &lt;strong&gt;one&lt;/strong&gt; good sticker&lt;br&gt;
pack, but scaling to a full catalogue meant weeks of manual work I didn't have time for.&lt;/p&gt;

&lt;p&gt;So I did the boring, engineer-brained thing. I stopped designing stickers and started designing&lt;br&gt;
a &lt;strong&gt;pipeline&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today that pipeline has produced 39 sticker themes and 118 pieces of&lt;br&gt;
indexable content. Everything runs on a single 1-vCPU VPS with no GPU. Here's exactly how it&lt;br&gt;
works, including the parts that went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack (nothing exotic)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A tiny Linux VPS (1 vCPU, 2 GB RAM — the cheap tier)&lt;/li&gt;
&lt;li&gt;Python for orchestration&lt;/li&gt;
&lt;li&gt;A text-to-image model for the raw art&lt;/li&gt;
&lt;li&gt;A vector tracer to convert raster art into clean EPS/SVG&lt;/li&gt;
&lt;li&gt;The Gumroad API for the storefront&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No fine-tuning. No custom model. No GPU. The whole thing costs less than a coffee per week to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Generate, but with a strict spec
&lt;/h2&gt;

&lt;p&gt;The temptation is to prompt "cute stickers" and hope. That produces garbage you can't sell.&lt;/p&gt;

&lt;p&gt;Instead I locked the spec &lt;strong&gt;before&lt;/strong&gt; generating anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One consistent art style across every icon (same line weight, same palette)&lt;/li&gt;
&lt;li&gt;Fixed canvas sizes so every file is print-ready&lt;/li&gt;
&lt;li&gt;Transparent backgrounds, always&lt;/li&gt;
&lt;li&gt;A hard cap on file size so nothing gets rejected on upload&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The output is a raster sheet: six icons on one transparent canvas. Consistent, but not yet sellable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Vectorise (this is the part people skip)
&lt;/h2&gt;

&lt;p&gt;Marketplaces and Cricut users want &lt;strong&gt;vectors&lt;/strong&gt;. A PNG is a picture; an SVG is a file you can cut,&lt;br&gt;
resize and recolour forever.&lt;/p&gt;

&lt;p&gt;I run every sheet through a vector tracer, which converts the raster art into paths. The result is&lt;br&gt;
a real EPS + SVG that opens cleanly in Illustrator, Inkscape, Cricut Design Space and Silhouette&lt;br&gt;
Studio.&lt;/p&gt;

&lt;p&gt;This one step is the difference between "another PNG pack" and "a professional vector pack".&lt;br&gt;
Buyers notice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Package it so it's usable in 30 seconds
&lt;/h2&gt;

&lt;p&gt;Here's a rule I stole from software: &lt;strong&gt;the first 30 seconds decide whether someone uses your product.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So every pack ships as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Individual transparent PNGs (drag straight into GoodNotes)&lt;/li&gt;
&lt;li&gt;A single PNG sticker sheet&lt;/li&gt;
&lt;li&gt;An EPS vector (Illustrator 10 compatible)&lt;/li&gt;
&lt;li&gt;An SVG (Cricut / Silhouette)&lt;/li&gt;
&lt;li&gt;A preview image&lt;/li&gt;
&lt;li&gt;A plain-language commercial-use license&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No zip full of mystery files. No README that assumes you're a designer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Automate the boring 90%
&lt;/h2&gt;

&lt;p&gt;Uploading, writing descriptions, generating covers, setting categories — this is where creators&lt;br&gt;
burn out. All of it is API calls.&lt;/p&gt;

&lt;p&gt;I wrote a small uploader that uploads the file, sets a clean permalink, generates a cover and&lt;br&gt;
thumbnail, writes an SEO-aware description, and publishes the product.&lt;/p&gt;

&lt;p&gt;Then I hit one wall that surprised me: &lt;strong&gt;Gumroad only lets you create 10 new products per day.&lt;/strong&gt;&lt;br&gt;
Not a bug — a deliberate anti-spam limit.&lt;/p&gt;

&lt;p&gt;The fix was a scheduled script that uploads 10 per day, remembers what it has already done (so it&lt;br&gt;
never double-posts) and goes quiet when there's nothing left to do. Zero babysitting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: The traffic problem (the real one)
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable truth: &lt;strong&gt;Gumroad is a cash register, not a traffic engine.&lt;/strong&gt; You can have&lt;br&gt;
the best product on the platform and sell nothing if nobody finds you.&lt;/p&gt;

&lt;p&gt;So I built a free, automated distribution layer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;76 SEO pages&lt;/strong&gt; on a Google-indexable free host, each targeting a long-tail buyer keyword
("cute dinosaur stickers PNG for Cricut")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;42 promo pages&lt;/strong&gt; on an anonymous, indexable paste site&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nostr posts&lt;/strong&gt; to an open, account-free social protocol&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;hub page&lt;/strong&gt; that internally links the whole catalogue together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every page points back to a free sampler, which points to the paid packs. That's the funnel:&lt;br&gt;
attention → trust → sale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually went wrong
&lt;/h2&gt;

&lt;p&gt;I'll save you the pain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Empty covers killed conversions.&lt;/strong&gt; Every product launched without a cover image. Covers are the
single biggest conversion factor on a marketplace. Fixed by automating cover generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The API lies by omission.&lt;/strong&gt; The product &lt;em&gt;list&lt;/em&gt; endpoint hides files and covers, so it looked like
nothing was attached. The &lt;em&gt;detail&lt;/em&gt; endpoint showed everything was fine. Never trust a summary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free ≠ free to sell.&lt;/strong&gt; Plenty of "free" clipart is personal-use only. If you sell print-on-demand
goods with it, you're exposed. Everything in my packs is explicitly commercial-use licensed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scaling breaks cheap servers.&lt;/strong&gt; Running the whole pipeline at once on 2 GB of RAM is how you get a
crash at 3am. I now measure peak memory per step and cap concurrency to one process.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;The creators winning in 2026 aren't the ones with the best single product. They're the ones who built&lt;br&gt;
a &lt;strong&gt;repeatable system&lt;/strong&gt; — generate, vectorise, package, publish, distribute — and let it run.&lt;/p&gt;

&lt;p&gt;You don't need a GPU, a team or a big budget. You need a spec, a pipeline and patience with the boring&lt;br&gt;
parts.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want to see the output?&lt;/strong&gt; I put a free pack of cute kawaii stickers (transparent PNG, commercial-use)&lt;br&gt;
here — no email required: &lt;strong&gt;&lt;a href="https://revanzart.gumroad.com/l/free-cute-sticker-sampler" rel="noopener noreferrer"&gt;Free cute sticker sampler&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want the full collection, the mega bundle has every theme in EPS + SVG + PNG:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://revanzart.gumroad.com/l/cute-sticker-mega-bundle" rel="noopener noreferrer"&gt;Cute sticker mega bundle&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And if you're building something similar, the whole catalogue is browsable here: &lt;strong&gt;&lt;a href="https://revanzart.gumroad.com" rel="noopener noreferrer"&gt;https://revanzart.gumroad.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sideprojects</category>
      <category>indiehackers</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
