I open my laptop most mornings to a folder dated today with three finished carousels in it. Twenty one slides, a caption for each set, three hook variants per carousel, and a background image that already fits the brand. Nothing on my calendar says content. Nothing in my head is holding a list of post ideas. The work is done and it was done while I was asleep.
That is the agent I want to describe here, because it fixes the thing that actually kills organic content for DTC brands. It is not the ideas. Every founder I work with has more angles than they will ever publish. It is the week where three fires break out and content is the first thing dropped, then the fortnight of silence, then the guilty catch-up post that performs badly because the account went cold.
Consistency is not a discipline problem. It is a capacity problem. And capacity is the one thing you can genuinely hand to a machine.
What this used to cost
My old process was a Sunday batching session. Four hours, sometimes five. Pull up the notes app, find the ideas I had captured during the week, work out which ones were actually posts, write the slides, fight with a template, write captions, schedule. It produced maybe a week of content if the session went well, and roughly two posts if it did not.
The real cost was never the four hours. It was that the four hours only existed on quiet weeks. Growing accounts average around four posts a week and larger brands push up to seventeen, and the gap between those two numbers is almost entirely about who has removed the human bottleneck. When content depends on a founder finding a clear Sunday, the account posts in bursts and the algorithm reads the gaps.
Handing it to a freelancer solves the calendar problem and creates a worse one. The output stops sounding like the operator. Nobody buys from a brand whose founder content reads like it was written by someone who has never run the business.
What the agent actually does
It runs on a schedule overnight. No prompt from me, no trigger, no session to open. The whole thing takes about twenty minutes end to end and produces a dated folder with one subfolder per carousel.
Step one, topic selection with repeat avoidance. Before it writes a word, it reads its own archive. Every batch it has ever produced lives in a dated folder with the topic slug in the path, so the publishing history is a queryable file structure rather than a spreadsheet somebody forgot to update. It pulls the recent history, rules out anything close to what has already run, and picks three fresh angles from the open pool. Yesterday it chose cold outreach into global retail, why partnership content skips the offer, and how the post-purchase flow drives repeat rate.
Step two, the copy. For each topic it writes seven slides and a caption, then three separate hook options for slide one, because the hook is the only slide most people read. The copy is written against a voice specification, not a generic tone instruction, and it draws on real operator material rather than invented advice.
Step three, the imagery. It generates a background photograph per carousel with a fixed identity and composition brief, so the subject, framing and distance stay consistent across the whole account rather than swinging between aesthetics day to day. Composition matters more than beauty here: an image that looks good on its own is useless if the text overlay lands on someone's face.
Step four, the QC gates. Generated slides get checked before they are written out. Text rendering failures, overflowing copy, and compositions that fight the overlay get regenerated rather than shipped. Anything that fails twice is flagged rather than quietly published.
Step five, the handoff. Everything lands in the folder and a message tells me it is there. I approve or I redirect. That takes minutes, not hours, and it is the only part of the process still on my plate.
The memory layer is what makes it feel like an employee
A tool produces content when you ask it to. An employee knows what you already said last Tuesday, which claims you are allowed to make, which stories are yours to tell, and which phrase you would never use. The difference between those two things is entirely a memory problem, and it is where almost every DIY version of this falls apart.
The agent reads a persistent context layer every run: who the operator is, what the business actually does, the documented results it is allowed to reference, the banned phrases, the voice rules, and the running log of what has already shipped. When I correct something, the correction goes into that layer rather than into a chat window that closes. Nine months of corrections is why the output today needs a light edit rather than a rewrite. That accumulated context is the real asset, not the pipeline.
What the output actually looks like
A single day's folder contains three topic subfolders. Inside each one: a background image, seven finished slide files numbered in order, a captions file with the post copy, and a hooks file with three alternative openings. Ready to review, ready to schedule, no assembly required.
The thing that surprised me was not the volume. It was what happens to the rest of the operation once organic runs itself. The same agent output feeds the blog, the clips, and the email list, so one topic decision made at four in the morning turns into a carousel, a script and a section of a newsletter without another decision from me. That compounding is where the leverage actually lives.
Where it still falls over
Text rendered inside generated images fails more often than anything else, which is why the QC gate exists and why slide text is composited rather than trusted to the model. Composition drifts over time and needs correcting every few weeks, which is exactly what I have been doing this week. And left completely alone the topic selection gets safe, circling the same three themes from slightly different directions, so a human still has to throw a harder angle into the pool now and then.
None of that makes it less useful. It makes it a system that needs an operator, which is the honest description of every agent worth running.
Inside the system
How we build this for brands
For a brand, the content agent is never built in isolation. It sits on the same voice-of-customer engine that mines reviews and support messages for the language customers actually use, so the angles it publishes are drawn from real objections rather than invented. The same source feeds the paid creative and the lifecycle flows we deploy in Klaviyo, which is why the organic content, the ads and the welcome sequence stop contradicting each other.
The build is mostly context work: the brand memory, the voice specification, the approved claims, the visual system, then a fortnight of running it daily and correcting until the reject rate collapses. Part of this runs live for portfolio brands today; the full system is what we deploy when we take a brand on.
Build Your Agent Team
Get your own AI agent team working on your brand
Caner can help you build your own AI agent teams and unlock growth for your brand. This is not a template or a SaaS tool. It is a custom system designed around your data, your workflows, and your growth targets.
Book A DemoFrequently asked questions
Can I build a content batch agent like this myself?
You can build a version of it. Generating a carousel from a prompt is the easy 20%. The parts that make it usable every day are the boring parts: a memory layer that knows what you already published so it stops repeating itself, a voice file specific enough that the copy sounds like you rather than like a caption generator, an image pipeline that produces a consistent look rather than a different aesthetic every morning, and quality gates that reject work before you see it. Most people build the generator, run it for nine days, and quietly stop using it because the output drifts.
How long does it take to set up an AI content agent for a brand?
The pipeline itself takes a few days. Getting the output to a standard you would actually publish takes two to three weeks, and almost all of that is context work rather than engineering. Building the brand memory, loading real customer language from reviews and support threads, defining the visual system, then running the agent daily and correcting it until the reject rate drops. Every correction is permanent, so week three is dramatically better than week one.
Does AI-generated social content actually perform?
It performs when the ideas come from real customer language rather than from the model's imagination. The format helps too. Carousels currently lead Instagram engagement at around 0.55%, ahead of Reels at 0.50%, with single images down 17% year on year to 0.35%. What kills organic for most DTC brands is not weak creative, it is publishing four times one week and nothing for the next three. Consistency is the variable an agent fixes permanently.
How does the agent avoid publishing the same topic twice?
It reads its own archive before it writes anything. Every batch is written to a dated folder with the topic slug in the path, so the full publishing history is queryable as a file structure. The agent pulls the recent history, excludes anything close to what has already run, and only then selects the day's topics from the open pool. It is a crude mechanism and it works better than any prompt instruction to be original.
Do you still review the content before it goes out?
Yes, and that is deliberate. The agent produces and stages, a human approves. Review takes a few minutes because the work is already done and formatted, and the failure modes are consistent enough to spot fast: text rendering errors on a slide, a claim that overstates a result, an image whose composition fights the text overlay. Removing the review gate is where most automated content programmes start embarrassing the brand.
About the author
Caner Veli built Liquiproof to global distribution across 3,000+ retailers, then exited. He now runs Purposeful Profits using a combination of operator strategy and AI-powered systems he has built and uses daily, having 10x'd monthly revenue in his own business in the last 90 days.
