Commerce architecture for my own art brand
Palette Town is my personal art brand. I hand-draw vector designs inspired by Pokémon TCG and sell them as prints, canvas, shirts, and phone cases, all fulfilled print-on-demand through a headless Shopify storefront.
It started on Twitch where I'd stream Pokémon card pack openings and wanted giant card designs as posters on the wall behind me. As I searched online, nothing seemed to exist, so I decided to test my illustrator chops (or lack thereof) and make them myself. After a few iterations, I found my own design style and was quite proud of my new art. I hedged a bet that other people may want them too, and since I love building websites and learning how buyers make decisions, I built the entire business myself.
I wanted to test my marketer skills and wear every hat to see how far I could grow a business spending $0 on ads, through organic search and organic socials. Analytics and testing experiments are my idea of fun, so why not see what happens?

THE PROBLEM
The old store was costing me time and sales
The store's first build was a custom WordPress theme I never had time to polish between client projects, so I swapped it for a premade drag-and-drop theme.
Checkout trust leaked
Strangers were asked to type their card into a form they'd never seen. For a small fan-art shop, an unfamiliar checkout costs you the sale.
The site ran slow
Premade themes are bloated and it showed in every page load. For a store that lives on organic search, slow pages cost rankings and sales.
Editing ran slower
Each visual card list post contained 100+ images, and the admin re-rendered slower as a post grew. The content that drove the most traffic took the longest to make and was prone to errors.
Why Shopify
Familiar checkout, faster pages, professional emails
A checkout buyers already trust
I noticed my own behavior as a shopper: I reach for Shop Pay every time it's offered. Moving to Shopify meant meeting buyers inside a purchase flow they've used previously.
A storefront without the bloat
The new storefront is a headless Next.js frontend on Vercel, so every page got faster, and for a store that lives on organic search, speed is sales.
Transactional emails that look right
Shopify's order and shipping templates look professional out of the box. My WooCommerce setup was finicky to style and charged extra to attach tracking info.

THE TRADEOFF
I chose a stack with no CMS
What I gave up
I gave up a CMS entirely, and I miss it. I don't write markdown comfortably.
Why
I wanted to build an AI workflow that generated the content faster than I could manually. Editing component copy is familiar to me, so taking extra time to set up WordPress seemed unnecessary.
What replaced it
Conventions plus AI. I defined blog components with clear rules, and Claude writes the structured markdown against my component system from my description of the post.
BACK OFFICE
A purpose-built admin instead of a general-purpose one
The migration didn't leave me without tools. I built my own panel that does exactly 3 things my shop needs.

Votes become an email segment
Visitors vote for the next poster with their email. Votes land in Firebase and sync to Klaviyo, so every future poster launches with a warm list of the people who asked for it.

Live curation in 30 seconds
I can review incoming votes and user-suggested cards, then deploy ballot candidates to production.
A blog post in minutes, sources tracked
I select related coverage from trusted news sources, then the Claude API drafts an original synthesis with the source tracked per post. I design a thumbnail in Figma, and deploy my new post on submit.
Claude eliminated the gap betweendeciding and shipping features

CONTENT OPS
Visual deck lists arefinally fast and error-free
Working locally with Claude Code, it now renames every image file to an SEO convention, generates titles and alt text across the catalog, and cross-checks posts against the card sets to confirm nothing was missed.
Work that used to be manual and error-prone became fast and, for the first time, error-free.
PRODUCTION
The storefront checklist nobody sees

Launch and fulfillment
DNS cutover to Vercel with the shop's email routing preserved, and Gelato fulfillment integrated and order-tested end to end.

Search and schema
A Merchant Center feed rejection diagnosed and fixed at the configuration level, product JSON-LD maintained against Google's requirements, and SEO packages written for all 23 prints from Search Console data.

Email and CRM
Transactional templates patched to render store metadata correctly, and the Klaviyo pipeline segmenting the audience by the posters they voted for.
IMPACT
196K impressions in 3 months,$0 spent on ads
Blog posts no longer take days to build, faster pages hold their rank, structured data puts products into Google Shopping results, and the voting loop turns visitors into an email audience I own.
| Ad spend, lifetime | $0 |
|---|---|
| Search impressions | 196KMay–Aug 2026 |
| First 83 days | Clicks +32% · impressions +23%Post-migration |
| Ranking queries | 1,100+ · 99% non-branded |
| Search reach | 169 countries |
| Catalog | 23 designs · 5 formats |
Reflection
Being my own client is the fastest feedback loop I've ever had. Having access to every data set is fascinating for my own learnings and gives me the confidence to collaborate with other marketers.
Now that blog posts are streamlined, my new bottleneck is creating products in Shopify/Gelato. I may try to build a Claude pipeline that follows set guidelines for writing the content then creates the listings for me to review.
Next time that I need a portal dedicated to a site, I will separate out the styling layer immediately, so that all aspects of the site use consistent components.
