Software that turns one approved campaign into many different Instagram posts
Wavelength needed thousands of Instagram posts, and nobody could check each one by hand. This software gives each post its own plan, checks the words and makes the finished slides. It worked from start to finish in test runs; the paid pilot with real campaigns had not started.
CreditDesigned and built by our founder, as lead developer for a partner agency.
One recorded test run
Which posts passed the checks, and why the others stopped
Every post must pass the checks before its slides are saved. A post that is stopped stays in the record, with the reason.
One theme in two template styles.
Paid work starts only after approval.
- Starting briefs
- 20
- Passed format limits
- 17
- Passed copy checks
- 5
Checks for repeats, banned phrases, weak openings
and claims that are not approved.
Different images and templates
An AI checks every slide.
- Text covered a face or subject
- 8 stopped
- Text did not fit
- 3 stopped
14 posts in storage.
This recorded run cost about $0.89. That includes AI model costs and cloud computing. “In storage” means saved and ready for the client's team to review and choose what to post.
About Wavelength
Wavelength's team runs the social media accounts, and the software prepares the posts.
Wavelength promotes other companies' software on Instagram and TikTok through affiliate campaigns. It needed thousands of different posts, without each one becoming a separate job of writing, design and checking.
- Client
- WavelengthA growth-marketing startup running affiliate campaigns
- Industry
- Affiliate and content marketing
- Output
- 5–9 slides at 1080 × 1350Plus a file describing each post and a record of how it was made.
- Human decision
- A person approves the campaign and chooses what to post
The problem
Making more posts made them repetitive and hard to check
Posts repeated the same idea
An earlier attempt rewrote the same post in new words. By the hundredth post, even the replacement words stopped making sense.
Text covered people's faces
Headlines covered faces or ran past the edge of the slide. More posts meant more chances of a post nobody could read.
Nobody could check every post
A person could not check every post. Before a run started, the team needed clear limits on claims, repeated ideas and spending.
What was built
Each post starts from its own plan and passes the same checks
Build record · Each brief is written on its own. 450 is how many briefs this pack can make; the animation above follows a separate run of 20 briefs.
A different plan for every post
The offer pack is a campaign brief listing audiences, objections and evidence for approved claims. The software combines them with 6 story angles to make hundreds of different post plans, called briefs. Each brief is written on its own, so the posts differ from the start.
Every draft is checked eight times
The checks cover length limits, banned phrases, repeated ideas and claims the advertiser has approved. An AI model from a different company judges the copy, so the writer is not marking its own work.
Text is kept off faces
Image tools find the parts of each photo where text can sit and rule out any area with a face. Text that does not fit stops the post instead of being cut off. An AI then checks each finished slide.
Only approved images are used
Generated images pass an automatic image check and a person's approval before any campaign can use them. Every post takes its images from that approved library.
What did the measured runs cost?
These are recorded test-run costs, not a service price or a forecast.
- Two photo and magazine runs · 24 finished posts
- About 6¢ / post
- Adding a third run in a list style · 25 finished posts total
- About 7¢ / post
- A run with the current slide-checking AI
- About 8¢ / post
The run costs include writing, quality checks, making the slides and the AI slide check. Building the approved image library is a separate step: about $0.08 per generated and approved image in the record.
Control and safety
A person approves each campaign before any paid work starts
Planning a campaign costs nothing. A person with approval rights confirms the launch with an approval code, a cost cap and a spend limit. After that, each post is checked automatically, not approved one by one.
- A spend limit stops further work. Paid steps will not run without approval. If a step is stopped part-way, its estimated cost is still recorded, so the cost record stays complete.
- Claims must come from approved proof. The campaign's proof points are approved first. The checks compare every claim in a post against that approved list.
- Permission for every image is recorded. A photo of a real person needs a model release that covers this use. An AI-generated person needs a record of where it came from and project approval.
- The client decides what to post. The software saves the slides, a file describing each post and a record of how it was made. Wavelength decides what to publish, where, and with which disclosures.
For technical readers
How the system works
An approved campaign becomes many different briefs. Copy that passes the checks is paired with approved images, turned into slides on cloud servers and checked by an AI that reviews images. Slides that pass are saved with their records; stopped posts keep the reason they were stopped.
In more detail
Technology used (10 parts)Each part of the system, and why it was chosen.
| Layer | Technology | Why it was chosen |
|---|---|---|
| Contracts | TypeScript 7 · pnpm · Zod | One set of rules shapes what the AI writes, checks its reply and sets the layout limits. |
| Rendering | Remotion 4 · React · headless Chrome | Slides are built as web pages, so type and spacing can be matched closely. Fixed versions stop slides changing between runs. |
| Hosted jobs | Trigger.dev v4 · 13 tasks | Splits big runs into smaller batches, retries failures, sets time limits and keeps a history of every stage. |
| Storage | Backblaze B2 | Every saved file is checked against its size and SHA-256 checksum, a fingerprint that shows it has not changed. |
| Copy | GPT-class generator · Gemini-class judge · OpenRouter · Vercel AI SDK | The code makes sure the AI that writes and the AI that judges come from different companies. |
| Duplicates | text-embedding-3-small · MinHash · SQLite | Finds repeated opening lines across all runs, not just within one batch. |
| Images | Seedream 4.5 · rembg · OpenCV · face detection | Builds and approves the image library separately, then finds where text can sit safely. |
| Vision review | Claude Opus-class reviewer | Answers yes-or-no questions about each finished slide. Earlier measured runs used a Gemini-class model. |
| Operator app | Next.js 16 · React 19 · Vercel · signed-cookie roles | Where the team plans, approves and reviews. Only an approver can confirm a launch. |
| Checks | Vitest · pytest · Biome · pixelmatch | Tests the copy rules, the cost limits and the reference slides. |
4 engineering decisions that matteredThe problem, what was done, and what it changed.
Plan the differences instead of asking for new words
Combining briefs creates the differences before writing starts. Each accepted opening line is compared with a stored memory of earlier ones, using a tested similarity cut-off of 0.675.
Measure where text goes, then ask an AI to check it
The image-checking AI does not decide where text goes. Placement uses measured areas of the photo and excludes areas where a face is detected. The AI checks for overlap, unreadable text and cut-off text after the slide is made.
Keep the cost of stopped work
A run once hit the platform's default five-minute limit while its cost counter still showed zero. Tasks now have set time limits, batches run in smaller parts, and stopped stages keep their estimated cost.
Stop the run when a comparison breaks
A mismatch in the size of the data being compared once looked like normal duplicate rejection and produced no posts. It now stops the run with a named error before any AI judge is called.
Testing and build recordHow it was tested, and the build by the numbers.
Quality and reliability
- About 1,250 automated tests in 187 files cover the data rules, copy checks, layout, slide making, cost limits, image approval and the team's tools.
- At the recorded check, all 15 reference slides matched exactly. The automatic comparison was written but not yet set up to run.
- Tests confirmed, at no cost, that paid steps refuse to run without approval.
- A variety check limits how many style and angle choices two accounts can share on the same day. A separate recount confirmed it on 24 and 35 compared pairs in two test runs.
By the numbers (build)
- 398 code changes (commits) over 37 days, from 28 July to 3 September.
- 2 days to the first finished carousels; 9 days until the system ran fully on cloud servers, without a developer's laptop.
- 13 cloud tasks and 5 template styles. The bold poster style was not finished.
- 25 finished posts passed every check in the first sample batches, across three styles.
Is it a fit?
Could this work for your team?
- You run many accounts or offers. Agencies and marketing teams can get many different posts without making each one a separate job.
- You need to know a batch's cost first. Affiliate and performance marketing teams can plan spending, approve a launch and keep a record of what was made.
- Your brand has specific rules. We can adapt the offer pack, templates, languages, image sources and checks. A version can also run under an agency's own brand.
- You want to learn which posts work. Feeding post results into future plans would be added work. This build does not claim that result.
How many of your posts still need someone to fix them?
Conducted by Apurva · Not a sales call
Or write to care@brownmind.com