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.

Client: WavelengthAffiliate and content marketing

CreditDesigned and built by our founder, as lead developer for a partner agency.

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.

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.

Campaign approvalApproval code + spend limit
Briefs + copy checksWritten twice, checked eight times
LayoutApproved images, text off faces
Repeat checkerEvery accepted opening line
Slides made + checkedUnreadable slides stopped
Slides savedClient chooses what to post

In more detail

Technology used (10 parts)Each part of the system, and why it was chosen.
LayerTechnologyWhy it was chosen
ContractsTypeScript 7 · pnpm · ZodOne set of rules shapes what the AI writes, checks its reply and sets the layout limits.
RenderingRemotion 4 · React · headless ChromeSlides are built as web pages, so type and spacing can be matched closely. Fixed versions stop slides changing between runs.
Hosted jobsTrigger.dev v4 · 13 tasksSplits big runs into smaller batches, retries failures, sets time limits and keeps a history of every stage.
StorageBackblaze B2Every saved file is checked against its size and SHA-256 checksum, a fingerprint that shows it has not changed.
CopyGPT-class generator · Gemini-class judge · OpenRouter · Vercel AI SDKThe code makes sure the AI that writes and the AI that judges come from different companies.
Duplicatestext-embedding-3-small · MinHash · SQLiteFinds repeated opening lines across all runs, not just within one batch.
ImagesSeedream 4.5 · rembg · OpenCV · face detectionBuilds and approves the image library separately, then finds where text can sit safely.
Vision reviewClaude Opus-class reviewerAnswers yes-or-no questions about each finished slide. Earlier measured runs used a Gemini-class model.
Operator appNext.js 16 · React 19 · Vercel · signed-cookie rolesWhere the team plans, approves and reviews. Only an approver can confirm a launch.
ChecksVitest · pytest · Biome · pixelmatchTests the copy rules, the cost limits and the reference slides.
4 engineering decisions that matteredThe problem, what was done, and what it changed.
  1. 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.

  2. 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.

  3. 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.

  4. 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