Score print-on-demand niches, screen every brand and slogan against the US trademark registry, write copy validated against your platform’s own character limits, and generate print-ready transparent artwork. Supports Amazon Merch on Demand, Etsy, Redbubble and Zazzle.
Pricing
from $320.00 / 1,000 trademark clearance screenings
All notable changes to Print on Demand Listing & Design Generator will be documented in this file.
[2026-08-08]
🎯 "Seed keywords" are now just niches — old field names still work
The input was called keywords and labelled "Seed keywords", while the rest of the Actor — the
niche score, the sub-niche ideas, the niche validator — already said niche. One word now:
Old
New
keywords
niches
keywordsFile
nichesFile
Nothing breaks. Saved tasks, scheduled runs and API calls sending keywords keep working —
the old names are translated automatically. If you send both, the new one wins.
Build 1.0.3 got this wrong: a run sending only keywords was silently given the default niche
cat mom t-shirt instead, and billed for it. The run succeeded, so there was nothing to see.
Fixed in 1.0.4 — if you ran 1.0.3 with the old field name, check the keyword column on your
rows.
The dataset field is still keyword, so anything parsing your rows or the upload CSVs is
unaffected; it just shows as 🎯 Niche in the Console now. One value did change: clearance rows
that used to report phraseOrigin: "keyword" now report "niche".
⚖️ Fixed: trademark screening now checks the words that get printed
When you supplied your own designText for a text-only design, the screen ran against the seed
keyword instead. So a run for "Knead More Coffee" was screened as "cat mom t-shirt" — a search
term that never reaches a garment — and the printed wording was never checked at all.
Now the printed string is what gets screened and what the design is gated on. If it comes back
blocked, no artwork is generated and the row says which phrase was blocked. Clearance rows carry
phraseOrigin: "designText" so you can see it happened.
Related: the seed keyword is no longer screened when it is only a concept label — it still is when
a listing will put it in your marketplace copy. That removes one billed clearance call per
text-only design that was answering a question nobody asked.
🅰️ Text-only designs log like the image path
A text design printed step timings with no header, so the run log never showed the wording, font,
colour, finish or canvas. It now opens with the same block the image path uses and closes with the
rendered lines, size, DPI, file size, transparency and a link to the print file. Failures name the
stage and confirm nothing was charged.
🔑 Text-only runs no longer require image credentials
artOutput: "textOnly" calls no image model and no language model, but the run still demanded the
image-generation and language-model keys before starting — and with transparency: "native" it
demanded a third. Those checks now apply only to the path that spends them.
[2026-08-07]
📄 Ready-to-import upload spreadsheets
Every run that produces artwork now writes two CSVs you can download straight from the run:
File
Use it for
upload-lazymerch-mba.csv
LazyMerch, in its own documented MBA column order
upload-generic.csv
Any other uploader, or your own spreadsheet workflow
The image link goes in the sheet, so there is nothing to download first and no local file paths
to paste. LazyMerch's own specification allows a direct, unauthenticated link to the image in place
of a path, and the artwork this Actor writes is exactly that.
Columns only you can answer — the product-settings template name, fit type, placement arguments —
are left blank rather than guessed. A wrong template name silently falls back to your default
and a guessed fit type merchandises on your behalf, so blank is the honest value.
The generic sheet carries the trademark verdict in the same row as the copy it applies to. A
bulk uploader will publish a caution phrase without comment; keeping the verdict beside the
listing is what puts it in front of you first.
Only designs with a validated print file are included — a row pointing at failed artwork would
import as a listing with no image. Quoting is RFC 4180, with a UTF-8 BOM and CRLF so Excel opens it
cleanly; listing copy routinely contains commas and quotes, and a shifted column would upload the
brand into the title field without anything looking wrong.
📐 Three Amazon Merch canvases withdrawn — they were never sourced
An audit of every artwork dimension against its publisher found that the Merch presets for
Pullover Hoodie, PopSockets Grip and Tote Bag matched no published source at all. They have been
removed rather than adjusted, because there is no figure to adjust them to: Amazon publishes its
template sizes behind a seller login, and the public numbers contradict one another.
Preset
We shipped
Source A
Source B
PopSockets
1000 × 1000
1876 × 1876
485 × 485
Tote Bag
4500 × 5400
4500 × 4500
2925 × 2925
Pullover Hoodie
4500 × 5400
4500 × 5400 (back)
4500 × 4050 (front)
Merch matches uploaded pixel dimensions exactly — a 4500 × 5399 file is rejected — so a canvas
we could not confirm meant a rejected upload the customer had already paid for. That is precisely
the failure this Actor exists to prevent, so an unsourced number is worse here than a missing
option. The hoodie is the clearest case: our figure is right for the back and wrong for the front,
and one "Pullover Hoodie" option cannot express both.
Amazon Merch now offers standard and premium t-shirt, both 4500 × 5400 — the only Merch canvas
every independent source agrees on and which is proven by real accepted listings. An API caller
passing a withdrawn type falls back to that canvas rather than erroring, and the row's
canvasPreset states which was used.
Redbubble was re-verified against its live published table and is unchanged — all nine product
canvases, the 300 MB / 13500 px ceilings and the DPI disclaimer still match verbatim. Redbubble
documents everything publicly, which is why it keeps nine canvases where Merch keeps one.
Every shipped canvas now carries a source and a verification date, pinned by a test.
🗑️ The preview tier is gone
artOutput: "preview" and the design-preview-generated event have been removed. The cheap
preview ran on a fast image model that renders misspelled words in-image — and print-on-demand is
overwhelmingly typographic, so a design whose lettering is wrong is unusable at any price. A tier
that reliably produces unusable output should not exist, let alone bill for itself.
Because the preview was charged before the print stage, a print-ready run always paid for it too.
Removing it takes that charge off every artwork run: the art tier now bills exactly once, after
the finished file has passed its dimension, transparency and file-size assertion.
artOutput is now none or printReady.
Artwork is paid-plan only in full. A free account gets niche scoring, trademark clearance and
listing copy — the three stages with no per-image cost — and never reaches an image model.
A design that fails anywhere in the chain now reports error rather than partial, because
there is no half-deliverable left to justify partial. Nothing is charged for it.
previewImageUrl has been removed from the dataset schema and the upload manifest.
None of this reached a live pricing record — the event was removed before the Actor's first pricing
publish, so no existing run or invoice is affected.
🎨 Native transparency moves to gpt-image-1.5
The premium transparency: "native" path now generates with gpt-image-1.5. Measured live on the
same prompt and request parameters as the model it replaces:
$/image
time
semi-transparent edge
gpt-image-1 (was)
$0.2496
51s
15.07%
gpt-image-1.5 (now)
$0.2111
43s
10.13%
Cheaper, faster and a cleaner edge at the same time — the semi-transparent band is what prints as a
faint halo on a coloured garment. gpt-image-2 was tested and rejected: it refuses transparent
backgrounds outright, so the newest model is not usable on this path at all.
Price is unchanged. The saving is ours to absorb, not a reason to re-open a pricing record.
🐛 Fixed: the native path asked for two contradictory backgrounds
The prompt sent to the native generator ended with "on a plain flat white background" and then
"fully transparent background" — the keyed path's instruction and the native one, in the same
sentence. Each path now gets only its own. Measured honestly: this did not move the halo
(8.83% → 8.86%, i.e. no effect), because the halo is glow the model draws into the artwork rather
than a background fill. Glow, neon and bloom are now banned in the design brief alongside gradients
and soft shadows, which is where that problem actually lives.
[2026-08-06]
💰 Repriced to a revenue target
Every event price has increased substantially. The Actor now prices against what its output is
worth to a seller rather than against what it costs to produce, and the ladder is set so that a
complete listing — one niche, one clearance, one listing pack and one print-ready file — clears a
fixed revenue floor even on the smallest possible run.
Event
Was
Now (base rate)
Actor start
$0.005
$0.005
Niche demand & competition analysis
$0.030
$0.65
Trademark clearance screening
$0.020
$0.35
Platform-compliant listing pack
$0.025
$1.85
Design preview
$0.035
$0.75
Print-ready artwork
$0.120
$5.00
Print-ready artwork, native transparency
$0.550
$6.75
A minimum complete listing moves from $0.20 to $7.86 at the base rate; a typical single-keyword
run, which screens about four phrases, from $0.26 to $8.91. That is a 34–39× increase
depending on run shape, and it is a repositioning rather than an adjustment: the Actor leaves the
cheap-utility band it launched in and becomes a premium tool for sellers who intend to publish what
comes out of it. Higher-volume accounts pay less than the base rate — see the volume ladder below.
Nothing about the product changed — no tier was added, removed or degraded, and every quality
decision behind the print tier stands. What you are charged for also has not changed: billing is
still per validated artifact, a failed print file still costs you nothing, and the run modes still
let you buy only the stage you need. research remains the cheap front door at one charged event
per keyword.
The old pricing doctrine exception on the print tier is retired. It existed because $0.120
exceeded the internal $0.025–$0.05 band and had to be justified on cost grounds — the event would
have lost money inside the band. At $5.00 that argument no longer applies and it would be dishonest
to keep making it. The prices are a deliberate value-based repositioning, not a cost-recovery
exception. Full reasoning in .actor/pricing-rationale.md.
📉 Volume discount — the base rate was raised to make room for it
Higher-volume plans now pay less per event. Every metered event steps down from the base rate as
your Apify plan tier goes up:
Plan tier
You pay
BRONZE (base)
100%
SILVER
95%
GOLD
90%
PLATINUM
85%
DIAMOND
80%
So a print-ready file is $5.00 at the base rate and $4.00 on DIAMOND; a clearance screen is
$0.35 and $0.28. The per-run Actor-start fee stays at $0.005 on every paid tier — it is a fixed
fee, not a metered unit.
This discount is the reason the base rate went up. An earlier revision of this pricing set the
same price on every paid tier, because the base cleared the revenue floor by under 0.1% and any
discount at all would have pushed high-volume accounts under it. Rather than ship a ladder with no
ladder in it, the base rate was raised so that the deepest discount still clears the floor: on
DIAMOND, the smallest complete listing grosses $6.29 and stays above the target. Customers on the
larger plans end up paying roughly what the old flat rate would have charged them, and get a real
volume incentive for the first time.
🌐 One Actor, several print-on-demand platforms
Previously this Actor only knew Amazon Merch on Demand's rules. Amazon Merch is now the default
platform rather than the whole product, and a new platform input selects whose rules your copy is
written and validated against.
Supported platforms — Amazon Merch on Demand, Etsy, Redbubble and Zazzle.
Every limit comes from the platform's own documentation. Where a platform publishes no limit
for a field, none is enforced and limitsApplied on the row says so. A guessed limit produces
listings rejected at upload, which is the exact failure this Actor exists to prevent, so we
support four platforms correctly rather than eight approximately.
Platform-specific copy rules stay where they belong. Amazon Merch's no-repeated-title-words
rule, its "title ends on the main keyword" convention and its banned-term list are applied to
Merch listings only, not bolted onto platforms that never had them.
Field shapes differ, and the output follows. Redbubble has no brand or feature fields; Etsy
has no brand field. Rows carry only the fields the selected platform actually has.
🎨 A better image model on the print tier
The print image model was re-selected by a live bake-off across five real typographic prompts, not
by reputation. The previous model was disqualified for two failures that no automated check catches:
it returned a photo of a t-shirt on a hanger instead of a design, and it misspelled in-image
text. The replacement renders clean standalone graphics with correct spelling, at half the latency
of its own higher-tier sibling.
📐 Honest print geometry
The image model and the print canvas have different aspect ratios, so artwork is now fitted inside
the canvas with transparent padding and never stretched — distorting the lettering is not a trade
worth making on a typographic design. Every print row carries a printGeometry object with the
placed pixel size, the printed size in inches, the padding, and the native sampling density behind
the declared 300 DPI.
🎯 Native transparency as a paid option
New transparency input. keyed (the default) generates and then cuts the background out.
native generates with real alpha from the start, so there is no cutting step and nothing can be
removed wrongly — the cleanest possible edges on a garment. It is billed as its own
design-print-ready-native-alpha event rather than sharing the standard print event.
🎯 Sharper trademark screening
A live registered mark whose name is canonically identical to the phrase being screened now
blocks at every risk threshold. Previously the screen counted live marks, which treated
"FELINE FINE" and "FELINE FINE CATTERY SUPPLIES" as the same signal — they are not. Names are
canonicalised (case, punctuation and spacing normalised) before comparison, apparel marks decide
the verdict when several match, and the whole check degrades to a clean neutral result if the
registry is unreachable. It reuses the mark data already fetched, so it costs nothing extra.
permissive still exists to let you proceed past a live mark in an unrelated class. It does not
let you print someone else's registered mark verbatim.
🚦 A deterministic niche gate
Amazon Merch niches now carry a computed pass/fail alongside the scores: more than 10 reviews as
proof somebody actually buys in the niche, then under 1000 competing results, leaders under 100
reviews, and a $16–25 price. It is arithmetic on the live rows, not a model's opinion — the model
only explains the verdict. Gated to Amazon Merch, because the price band is an Amazon Merch t-shirt
price and borrowing it for a Redbubble scarf would reject good niches for no reason.
💵 Verified trademark cost basis
The trademark-phrase-cleared cost basis is no longer an estimate. It is $0.0054 per registry
call, so a default screen — the availability lookup plus the active-mark search — costs $0.0108.
That closes the unverified-cost flag raised at launch.
🔤 Renamed
merchLimits is now platformLimits. backendKeywords is now tags — the field print-on-demand
platforms actually have. The key-value store manifest is now upload-manifest.json.
[2026-08-04]
🎉 Print on Demand Listing & Design Generator — Launch!
Mandatory Trademark Clearance — every brand name, listing title and slogan the Actor generates is screened against the US trademark register before anything is built on it. There is no input flag that disables it.
Three-State Risk Verdicts — clear, caution or blocked instead of a bare availability yes/no, because a registry can report a phrase "available" while a live pending mark sits against it.
Blocking Marks Returned By Default — owner name, serial number, status, Nice classes and a link to the official record, so you can see exactly what stands in your way.
Niche Demand & Competition Scoring — demand, competition and opportunity scored from live competitor listings, with sub-niche angles worth testing instead of synonyms of your seed term.
Character-Validated Listing Copy — brand, title, bullet points, description and backend keywords, measured against your selected platform’s published limits in code and repaired if they overrun. Every row reports its own character counts.
Print-Ready Transparent Artwork — 4500 × 5400 PNG at 300 DPI with genuine alpha, verified for dimensions, transparency and file size before you are billed for it.
Five Run Modes — research, clearance, listing, design or full, so you pay only for the stage you need.
Seller Upload Manifest — one file joining artwork, copy and the trademark verdict per design, every row flagged for human review.
Clearance Audit Log — a timestamped record of every screening, because trademark status changes over time.
💎 User Benefits
Catch a name collision before you spend on a design, not after an account strike.
Stop hand-counting characters — listing copy that fails the limit is repaired, never shipped.
Skip the manual background-removal step: artwork arrives transparent and print-sized.
Pay per validated result. A design that fails late costs you nothing.
🎯 Use Cases
A print-on-demand seller scoring five niches before committing a design budget.
A designer screening twenty slogans for apparel-class trademark conflicts in one run.
An agency keeping a dated, defensible record of the clearance checks it ran for a client.
🗄️ Launch pricing notes — superseded
The launch entry carried two pricing notes: a doctrine exception for design-print-ready at
$0.120, and an unverified-cost flag on trademark-phrase-cleared at $0.020. Both are obsolete.
The registry cost was verified at $0.0054/call, and every price was subsequently reset to a revenue
target — see "Repriced to a revenue target" under [Unreleased] for the current ladder. The
launch-era figures are not repeated here so they cannot be mistaken for live prices.
Two build decisions from that entry still stand and are restated so nobody "optimizes" them back:
The print tier uses a premium image model on purpose. It is the only verified option that
renders lettering reliably, and print-on-demand designs are overwhelmingly typographic. This was
confirmed empirically during the build: the cheaper model produced "COFFIEE" when asked for
"COFFEE", and "Felline fiine" when asked for "Feline Fine". Misspelled words are unusable on a
physical garment, so this is a correctness requirement, not a quality upgrade.
Listing copy deliberately does not use a frontier language model. Compliance is enforced by a
deterministic word-boundary validator plus one targeted repair pass. A smarter writer does not
make a character limit hold; measuring the output does.
Failure absorption: if generation succeeds but the file fails its dimension, transparency or
size assertion, the customer is charged nothing even though the vendor cost was already incurred.
Charging for an unusable file would be the wrong behaviour.
📋 Known limitations at launch
Trademark screening is US-only. A run against a non-US marketplace still screens against the
US register and emits a warning row saying the result does not reflect local rights.
Design previews use the fast image model and can misspell text inside a design. Previews are
for judging composition and concept; review every file before use, and expect the print tier's
lettering to be the reliable one.
This Actor does not upload to any print-on-demand platform and has no account integration.
Output is candidates for human review, never upload-ready inventory.