Skip to content

Media buying

Media buying software we built to spend our own money.

It manages Meta campaigns and it generates the ad creative. It runs inside Threadverse — the agent suite behind Threadheads, an apparel ecommerce business doing about $25 million a year. Ace owns that business. The module was buying there before it was offered to anybody.

What follows is the mechanics: what it connects to, what it does on a schedule, what it generates, and what a person still signs off. There are no performance figures on this page. The section on why not is near the bottom, and so is the price.

What it does

The mechanics, rather than the outcome.

Software in this category is usually sold on a result — a number somebody else got, in an account you cannot inspect. We do not have a number we would stand behind yet, so this is the other thing: exactly what the module is wired to and what it does with it. If the mechanics do not sound like your account, the result would not have saved us either.

Everything the module touches
Connected toWhat it is used for
Meta Marketing APIReads performance and writes campaign, ad set and ad changes into your own ad account
Gemini image model (Google)Generates single-image ad creative from your product photography and a written brief
Your product photographyThe source images. We generate the ad around your product, not the product

It works inside your ad account

The module authenticates against your Meta ad account through the Marketing API. Campaigns, ad sets and ads are created and changed there, under your Business Manager, on your billing. That means every action it takes is legible in Meta’s own interface rather than in a dashboard we control, and you can pull the connection from there at any time without asking us. It is a deliberately boring architecture, and it is the reason you can leave.

It runs on a schedule

The checks happen at a fixed cadence instead of when somebody remembers. That is most of the value, and it is the least impressive sentence on this page. An ad account does not usually fail because nobody knew what to do — it fails because Thursday got away from everyone and the thing that needed doing on Tuesday is still sitting there.

The rules are yours, and they are written down

What it may change, what it may spend, what counts as working and what it must never touch are configured for your account during setup. They are stated in language you can read and argue with, not buried in a model nobody can inspect. Most of the useful work in the first fortnight is not technical at all — it is the argument about what your rules actually are, which is a conversation most accounts have never had out loud.

New creative arrives without a design request

The other reason accounts stall is that the buying is ready and the images are not. Generation runs off the same schedule, so there is a queue of new single-image creative waiting for approval rather than a request sitting in somebody’s inbox. The next section is how that part works, including what it is bad at.

Asset pending
1224 × 688px (16:9), PNG or WebP — Screenshot of the module's campaign view — the live account, the scheduled checks and the actions taken, with account names and spend figures redacted. Real interface only.

Creative

Single images, made from your own product photography.

The image model is Google’s Gemini — the one people have been calling nano banana. It is not chosen because it is the model of the month. It is chosen because it is good at the narrow job this needs: taking a product you have already photographed, putting it in a scene you describe, and keeping the product looking like the product. A model that invents a beautiful garment you do not sell is worse than useless in an ad account.

You supply the photography and the brief. What comes back is single-image ad creative, sized for where it is going to run, in enough variants that the account has something to test rather than one option somebody has to approve out of politeness. A person picks. Nothing is published because it was generated.

What it is bad at

Type set inside a generated image is the least reliable output of any image model, and Gemini is no exception. Treat what comes back as the picture, not the layout: anything carrying a price, a claim or a legal line should be laid over the top where you control it. It also does not make video, it does not do motion, and it will not produce a considered brand campaign. It produces volume of a specific kind, which is what a Meta account eats.

The model underneath will change

It will change more often than anything else here. New versions arrive, old ones are deprecated, and the same prompt starts returning something slightly different. Following that — moving to the current model, re-tuning the prompts when the output shifts — is not a feature. It is the ongoing work, and it is most of the argument two sections down.

Source photograph, then two generated variants

Asset pending
Source
Asset pending
Variant 1
Asset pending
Variant 2

1080 × 1080px each — the unedited source photograph, then two generated variants of the same product from a real run. Real output only. Do not mock this up.


Approval

What a person still does.

Every automated system is really a question about where the approval sits. Here is where it sits, stated up front, so nobody finds out during a bad week.

Signs off the creative

Generated images are candidates. Somebody who knows what the brand looks like says yes before anything runs. That step is cheap because the work has already been done — approving is a different job to briefing, and it takes minutes rather than a week.

Sets the ceiling

Budgets, limits and the campaigns it is not allowed near are yours. The interesting failure mode in automated buying is not a bad decision, it is a small bad decision repeated on a schedule with nothing to stop it. The ceiling is what stops it.

Owns the offer

Pricing, promotions and what is actually in stock stay with you. Software buying traffic to a product that is about to run out is software spending money badly and confidently, and no amount of optimisation fixes it.

Decides when to stop

You can pause it from Meta, not from us, and you do not need to give a reason or wait for anyone to pick up the phone. That is a design decision rather than a courtesy. Anything you cannot stop yourself at 11pm is not automation, it is a dependency.

The honest objection

Why wouldn’t you just build this yourself?

You probably could. That is not false modesty and it is not a setup for a reason you could not. The Meta API is documented, the image model is a few lines away, and coding tools have got good enough that a capable person could have a working version of this running by Sunday night. Some of you will read this page and go and do exactly that, and it will work.

Building it once is the easy half.

Meta ships new Marketing API versions and retires the old ones on a published schedule. Image models are deprecated and replaced, and the replacement answers the same prompt differently. Creative specifications move. Ad policy changes. None of that is announced to you personally, and almost none of it breaks loudly — the usual symptom is that something quietly stops running, and nobody notices for a fortnight because the account still looks busy.

So the thing you built in a weekend breaks in a quarter. And then it is your Tuesday. Not once — every time one of those four things moves, at an interval nobody controls, forever, landing on whoever built it. Which is you, in the middle of the week you had planned to spend on something else.

That is the trade, and it is worth saying plainly because it is the only part of this a better coding tool does not erode. You are not buying the code. You are buying not owning the maintenance.

The corollary is fair too: if you already employ an engineer whose actual job is internal tooling, build it. You have the standing capacity to absorb the Tuesdays, and paying us would be paying twice. We would tell you that on the call, because it is a shorter call than the alternative.

Where this sits in your budget

Brands at this size put a double-digit share of revenue into advertising and something close to a rounding error into the systems that spend it. The figures and their sources are on the home page, including how thin one of them is. Nobody is suggesting you spend less on ads. We are pointing at the smaller number.


Price

Two numbers.

Published, because most people selling software like this will not give you a number until they have had you on two calls. If either figure is wrong for you, you have found that out for free.

Australian dollars, excluding GST
LinePriceBasis
Account setupA$1,000Once, at the start
Media buying moduleA$500 / monthRolling, monthly

Image generation is capped each month, with the cap set during setup against your volume. Over the cap, the model cost is passed through at what it costs us, on its own invoice line.

Setup is charged once, per customer

Not once per thing we build for you. If we ever put a second piece of software into your business, you do not pay it again. That is a real commitment rather than an introductory offer, and we are stating it here so you can hold us to it.

The subscription is the maintenance contract

It is not a licence fee for code that already exists. It is what it costs to have somebody whose job it is when the API version retires, the model is replaced, or the specification moves. That is the whole product, and pricing it as a subscription is the honest way to describe it.

The price will not move on you

It is priced on the work, not on your ad spend — triple the budget and the invoice does not move. Rolling, monthly, thirty days’ notice, no annual lock. You have watched enough ecommerce vendors trigger a revolt through a billing change rather than a bad product. We are not building that into the agreement.

Out of scope

Who this is not for.

This list exists so you can rule us out in ninety seconds rather than on the third call. If you are in it, we would rather say so now than take the setup fee and find out together.

Accounts that are mostly not Meta

This is Meta. Not Google, not TikTok, not Pinterest, not Amazon. If the bulk of your spend sits elsewhere, you would be paying for a module that covers a corner of your problem.

Accounts that live on video

It makes still images. If your best-performing creative is all video and user-generated content, the generation half of this is close to irrelevant to you and you should weigh it at half price in your head.

Spend that is not yet steady

Below a certain volume the machinery costs more attention than it saves. A few hundred dollars a month does not need a system, it needs somebody to look at it properly once a week, and that is a cheaper answer than ours.

Accounts with a strategy problem

If the real issue is who you are selling to, what the offer is, or a margin that does not survive paid traffic, then automating the execution makes the wrong thing happen faster and more cheaply. Fix that first, with or without us.

Categories where every asset needs legal sign-off

Supplements, therapeutics, alcohol, financial products. If each image has to clear a compliance queue, the queue becomes the bottleneck and you are paying for generation you cannot ship.

Brands without usable product photography

It generates the ad around your product. With no clean source images there is nothing to build from, and a photographer is a better first purchase than we are.


Questions

The ones we get asked first.

Does it run in my own Meta ad account?
Yes. It connects to your ad account through the Meta Marketing API, under your Business Manager and against your billing. Every campaign, ad set and ad it touches is visible in Meta's own interface, and you can revoke the connection from there without asking us. Nothing about how your account is being run lives only in our system.
What does the creative generation actually produce?
Single static images, generated from product photography you supply. Not video, not motion, not user-generated content and not a brand campaign. If your ad account lives on video creative, this covers one slice of your work rather than most of it, and we would rather you knew that before the call than during it.
Which image model does it use?
Google's Gemini image model — the one people have been calling nano banana. It is good at the specific job here, which is placing a product you already photographed into a scene you describe while keeping the product looking like the product. Models get replaced faster than anything else in this stack. Pointing the module at whatever the current one is, and re-tuning the prompts when the output changes, is part of what the subscription pays for.
Why wouldn't I just build this myself with an AI coding tool?
You probably could, and we are not going to pretend otherwise. The Meta API is documented and the image model is a few lines away. Building it once is the easy half. Meta retires Marketing API versions on a published schedule, image models get deprecated and replaced, creative specs move and ad policy changes — and none of it breaks loudly. The usual symptom is that something quietly stops running and nobody notices for a fortnight. What you are buying is not the code. It is not owning the maintenance.
What does it cost?
A$1,000 to set up the account, once, and A$500 a month for the module, rolling with thirty days' notice. Image generation is capped each month, with the cap set during setup against your volume; over the cap we pass the model cost through at what it costs us, on its own invoice line. The subscription is priced on the work rather than on your ad spend, so tripling your budget does not move the invoice.
Does this replace my media buyer or my agency?
No. It does the repetitive half — the checks that happen on a schedule and the first draft of the creative. It does not decide who you are selling to, what the offer is, or why last quarter went the way it did. If the account's problem is strategic, automating the execution just makes the wrong thing happen faster.
Can I see performance numbers?
No, and that is deliberate. It has run in one ad account — ours. One account is an anecdote, not evidence, and a ROAS figure lifted out of a single apparel business would tell you nothing about yours. We publish figures with a source and a date attached or we do not publish them. When there is enough to say something honest, it will appear here with the method printed next to it.
Do you do Google, TikTok or the other platforms?
Not today. This is Meta. If the majority of your spend sits somewhere else, most of what is on this page does not apply to you, and we will say so on the call rather than after you have signed.

Next step

Bring the ad account, not a brief.

Thirty minutes. We will walk through what the module does in our own account, and you can decide whether it is worth pointing at yours. If your spend or your creative mix says it is not, that is what we will tell you — a faster call for both of us than the alternative.

Ace takes these calls — not a salesperson, because there isn't one.