10 November 2026 · 6 min read
Running a print on demand shop from my own desk
How the e-commerce tool in OScar makes wall art for my shop House of RIEN: original designs, mockups drawn in code, Etsy drafts and Gelato printing.

I sell wall art. The shop is called House of RIEN, "a design house for graphic wall art", and it lives on Etsy. Behind it sits a tool I built for myself inside OScar, my personal life OS. This post is a tour of how that print on demand shop is run from my desk: how designs are made, how mockups are drawn, and how a listing reaches Etsy. It is my own tool, not something I sell.
Print on demand means I never touch a poster. When someone orders, a print partner prints and ships it. My job is the art, the photos and the listing. The tool's job is to make that fast without cutting corners.
How the print on demand shop is organised
Everything starts with a project, which holds the shop's settings and connections. Inside it live the listings: title, description, pictures, tags, price and the print file.
A listing is deliberately shop-neutral. Pushing it to Etsy records the Etsy copy separately and never reshapes the listing itself. Today Etsy is the only connected shop, but the door to others stays open.
And the big rule: a push to Etsy creates a draft. Always. A half-finished listing must never go on sale by accident. I open it on Etsy, give it a final look and publish it there myself.
The studio: from idea to print
The print on demand studio runs in four steps: plan, generate, mockups, listing.
- Plan. An agent writes design concepts from the shop's art brief and the collection I pick: Ink, Bauhaus and geometric, Painterly figures, or Bar and kitchen.
- Generate. An image model paints each concept at print resolution, big enough for a large poster.
- Mockups. The art is placed into framed scenes, more on that below.
- Listing. A writer drafts the title, description, tags and picture descriptions.
Designs then wait in a review queue. Approving one creates a draft listing in OScar, and still nothing goes to Etsy. Pushing is a separate button. Rejected designs are deleted along with their files.
Generated image sets cost money, so a submitted set is never paid for twice. If anything stalls, the tool resumes collecting the set it already bought instead of ordering a fresh one.
Original work, always
Sometimes I see a poster style that sells and want to explore that lane. For that there is "the basket": I drop in reference pictures, a vision step describes them in words, and the studio makes an original design in the same market lane. Other sellers' images never reach the image model at all.
I once asked for near-copies "with slight differences". The tool's answer, and my own on reflection, was no. That is derivative work. The original-in-the-same-lane version is what got built, and it works better anyway.
Code rules beat prompt lines
Image models have habits. Ask for a "woodblock print" and you may get the art inset on a paper sheet with a mottled border. Ask for an ink painting and a little red seal appears in the corner. Telling the model "no border" or "no seal" makes it worse. Naming a thing summons it.
So I fix these in code. The method is always the same:
- find a property that is true of the defect and false of real artwork,
- measure it across every stored print,
- set the threshold in the gap between the two groups,
- and prove nothing innocent gets touched.
The seal remover is my favourite example. A red seal and a crane's red crown are the same size and colour. Two tests together still mistook falling cherry blossom petals for seals. A third test, whether the red forms a rectangular frame, finally told them apart. Across 43 prints: five seals removed, one left alone because the paper was too busy to patch cleanly, and zero artwork touched.
The same thinking covers my signature. One transparent signature is placed in the corner of every print master in code, and turns light on a dark corner. The model is never asked to draw it, because text from image models garbles.
Mockups drawn in code, not painted
This is the part people ask about. The listing photos show the poster framed on a wall, and those mockups are composited deterministically, never generated. The reason is simple: the buyer must receive exactly the art the photo shows. An AI-painted mockup could quietly change the artwork.
My first frames were photographed scenes with an opening detected in them. They were not quite the right shape and did not fit the brand, so I threw them all away. Now the scene is a bare wall, and the frame itself is drawn in code: an exact 5:7 frame, square-on, in black blackened steel.
The code reads the wall around the print to work out where the light comes from. It shades the paper to match, lights one edge of the frame and shadows the other, and casts a soft shadow onto the wall. Getting black steel to look like black steel took five tuning rounds. The trick was to put roughness in the grain and edges, never in the colour.
The standing set is a close-up first and then the room, with the shop's little "H of R" mark mounted on the wall above the frame. The plain artwork itself is never a listing picture, so it cannot be lifted and printed. Only a watermarked version rides along, as the last picture.
The listing writer and its rulebook
The writer drafts titles, descriptions and tags, grounded in what similar listings on Etsy look like. Etsy's rules for title length and tags are enforced in code afterwards, not just requested.
Anything that should be the same on every listing comes from a template: price, sizes, materials, category, attributes. The template wins over whatever the writer suggests, so a creative writer can never invent a new price.
Gelato does the printing
Printing and shipping go through Gelato. There is no way to connect an existing Etsy listing's sizes to Gelato afterwards, so the flow runs the other way round. The listing is created through a Gelato product template, arrives on Etsy as a draft with every size connected and the print file placed, and then OScar adopts it. It sets the category and details, swaps Gelato's stock pictures for my mockups, and puts them in my order.
One thing OScar never edits is Gelato's size options, except their order. Those are the link that tells Gelato what to print when an order comes in.
A click to tell the world
Ready drafts can be posted to social accounts with one click, using the scheduler from my Publishing tool. The caption is a template I wrote, filled with the title, price, link and hashtags, never invented by an agent. Instagram does not accept tall pictures, so the mockup is placed on a blurred version of itself to fit.
And the rule I care most about: nothing that spends money launches without my click. Ads will come one day. When they do, they will wait for me too.
Why build it?
Because a small shop is mostly repetitive work, and repetitive work is what code is for. The creative calls stay mine. The tool just makes sure every poster looks exactly as good in the photo as it will on the wall.
Curious about the rest of the desk? See OScar, or the tools you can use yourself. More workshop tours are on the blog.
Thanks for reading. Go hang something nice on a wall.
- ecommerce
- print on demand
- etsy
- behind the scenes
- maker diary