All outcomes

Grocery delivery · South Africa

SUPA

The marketing team generates its own on-brand content, because the brand guidelines are compiled into every prompt.

Before

Getting social content made meant briefing designers and waiting on revision rounds, and generic AI image tools produced content that looked like AI, not like SUPA. Volume and brand consistency pulled in opposite directions.

After

A content engine the team drives directly. Claude ideates and writes, image models render, and a brand compiler holds the visual identity so output is on-brand by construction. The team’s job moved from producing content to choosing between finished options.

brand-locked images generated for SUPA
693
content pieces drafted for review
527
approved, scheduled or published by the brand team
107

The problem

SUPA has a strong, recognisable visual identity, and identity is exactly what off-the-shelf AI content tools destroy. Every generic generator gave them content that read as AI slop the moment it hit the feed. They needed volume without letting the brand drift, and they needed the marketing team, not an agency queue, holding the wheel.

What I built

I built them a content engine with the brand baked in at the prompt layer. The core is a compiler that merges a master brand prompt with a visual treatment at four strictness levels, from loose inspiration through to exact colour match, so the team dials how tightly each piece must obey the guidelines. Claude handles ideation and copy. Images render through a provider abstraction across Google and OpenAI models, and every asset gets the logo composited on before a human ever sees it. Generate, review, approve.

What it looks like

The create screen: content theme tiles, an occasion picker, five content formats, a plain-language box asking what you want to post about, and a risk level dropdown.Data substituted
Nobody who uses this writes a prompt. They pick a theme, pick a format, type a sentence in the box, and set a risk level. Everything a prompt engineer would fuss over is compiled behind that. The example text in the box is the giveaway about who it was built for: it is written the way a marketing manager talks, not the way a model wants to be addressed.
Brand strictness set to 70 percent, on a slider running Flexible, Balanced, Consistent, Strict, above editable tone keywords and a list of words the brand should never use.Data substituted
The idea the whole product rests on: a brand as a dial rather than a PDF nobody opens. At 70% the compiler holds the visual identity close, and each of the four stops maps to a different colour requirement behind the scenes, from loose inspiration up to exact match. Underneath it, the two lists that do the most work per character: the words the brand sounds like, and the words it must never say. A client can move all of this themselves, with no deploy and no call with me.
The content library filtered to approved items, with tabs for draft, approved, scheduled, published and failed, and a counter reading four approved.Data substituted
The review queue, which is where the honesty about this product lives. Roughly four out of five drafts never leave this screen, and that is the design working rather than failing. The engine is built to overproduce so the expensive human minutes go on choosing instead of making. What a human actually approved is the only number on this page I would defend.

Shots marked data substituted are the real interface with invented content in place of the client’s. Every name, address, sum of money and email on those screens is made up. The layout, the components and the behaviour are exactly what the client uses.

What happened

Measured against the live database: 693 images and 527 content pieces for SUPA since January, with 107 of those approved, scheduled or published by the brand’s marketing team. Most drafts die in review, which is the point. The engine is built to overproduce so that the expensive human minutes go on choosing, not making. The build outlived the brief, too. What started as one brand’s engine now runs eight of them off the same compiler, 1,525 images in total, because a brand turned out to be a configuration rather than a fork.

Next.jsSupabaseClaudeGoogle + OpenAI image APIsSharpVercel

Provenance: Re-measured 2026-08-11 against the live Supabase project, with every image attributed to a brand through content_id so the figures are SUPA’s own rather than the platform total. An earlier version of this page reported the platform total as if it were SUPA’s, which overstated the image count by a factor of two; it is corrected here. Codebase facts from a clone of the private repo, 2026-08-04.

Want the same thing done to your operation?

Ten working days, a fixed fee, and one automation live before we finish. If there is nothing worth automating, I will say so in the findings.

Book a call