A Home Brand's Blog, Rebuilt Into an Engine That Ships Sixteen Posts
Built a multi-agent content engine for a Shopify home furnishings brand and ran it. Sixteen blog posts shipped as drafts, every one written in the brand voice, anchored to a real product, illustrated, and SEO-ready. No outside copywriter. No stock photos. No agency content retainer.
01 The numbers
- 16 On-brand posts shipped
- 0 Outside copywriters hired
- Every one Posts anchored to a real product
- 0 Competitor brands named in the copy
02 The breakdown
The Setup
A premium home furnishings brand on Shopify. Reclaimed-wood case goods and English-style leather seating in the $1,300 to $7,500 range. A real catalog, a clear aesthetic, and a blog that did nothing.
The two normal paths to fixing that are both bad. Hire a content agency and pay a flat retainer for four generic posts a quarter that read like every other home brand’s blog and link to nothing. Or write it in-house, which means the founder loses a week a month to a chat window. The brief I took was different: treat content like a system. Build an engine that produces brand-voiced, product-anchored posts on demand, and run it.
What I Built
A multi-agent content engine. Each post moves through the same pipeline, and each step does a job a chat window skips.
Keyword and intent research. Free-source pulls from Google Suggest, People Also Ask, and Reddit, clustered into topics a real buyer searches. No paid SEO tool.
Catalog-anchored outlining. Every post is outlined to lead with a specific product the brand stocks. If a topic could not point at something in the catalog, it did not get written. That single rule is the difference between content that compounds into revenue and content that just fills a blog.
A brand-voice writer. A writer agent drafts from a voice canon authored from the brand’s own copy. Not house-style AI. The way the brand actually talks.
An automated voice linter. Every draft runs through a check that fails closed on the tells of machine writing: decorative triplets, “not just X but Y” constructions, em-dash overuse, empty intensifiers. A draft that trips the linter gets rewritten before a human ever sees it.
Image generation. A hero image plus in-body detail shots, generated to the brand look and spliced into the post. No photographer. No stock library.
Shipped to Shopify as drafts. Each finished post lands in the store as an unpublished draft, with SEO title, meta description, and schema already filled in. The brand reads it and publishes it. Nothing goes live without a human approving it.
The Part Worth Being Honest About
The engine was not right on the first run. It produced posts that named competitors, posts that read like an antique appraiser instead of a furniture retailer, and posts that taught a topic well but never pointed at a product. Each of those was a tuning problem, and each got fixed: a rule against naming competitors, a positioning correction that made every post anchor to a piece the brand sells new, a hard gate that blocks any post with no product link.
That is the case for an operator running the engine instead of a tool running loose. The engine is leverage. The judgment about what the brand should and should not publish is the work. A subscription tool gives you the first and skips the second.
The Result
Sixteen posts live in the catalog blog as drafts, ready for the brand to publish on its own schedule. Every one is written in the brand voice and passed the linter before shipping. Every one anchors to a real product and links to a live collection. Every one carries a generated hero image and in-body detail shots. Every one ships with SEO metadata and schema already in place. Zero name a competitor.
The brand did not hire a copywriter, brief a freelancer, or sign a content retainer. The engine is built and tuned to the catalog now, which means the marginal cost of the next sixteen posts is close to the time it takes to read and approve them.
That is the model. Content stops being a recurring invoice for generic output and becomes an asset the brand owns. The engine gets built once. After that it runs.
03 More work
Other accounts, same approach.
1, from 2 competing ga4 installs on one property
A high-ticket furniture store had a sophisticated server-side tracking stack on paper and a GA4 property that filed its revenue under Unassigned. The diagnosis found three separate failures stacked on top of each other. The fix was one checkbox, two surgical cuts, and one lowercase letter.
Read the breakdown→
gcs=G1-- (denied) consent state on beacons, before
A WooCommerce brand's visitors were accepting the cookie banner, and the Google beacons still fired with consent denied. The free tier of the consent platform never told Google about the yes. The ad account had been bidding on modeled data for users who had opted in. The fix was a small PHP snippet at the right priority.
Read the breakdown→Ready to talk
Want this kind of breakdown on your account?
Thirty minutes on the phone. One clear set of next steps. Same person on the call as on the work.