Content Studio
Internal image-generation tool for multi-brand marketing teams.
- Status
- Live
- Role
- Founder, builder
- Year
- 2025 — ongoing
- Stack
- Next.js · Supabase · Claude · Gemini
- Focus
- Internal tool · Multi-brand
Why this exists.
The marketing team runs several brands in parallel. Using ChatGPT or Midjourney directly meant pasting the same guidelines into every session, and output still drifted: wrong colors, wrong type, wrong feel. Agency work was too slow for the volume.
Content Studio fills one specific gap: persistent brand rules, so consistency stops depending on whoever wrote the prompt.
Each brand has its own workspace. The workspace holds the CVI (palette, typography, tone notes, reference images) plus a set of prompt presets for the formats the team actually ships: banner, social post, product shot. A marketer picks a brand, picks a format, writes a prompt, gets an image. Brand rules are applied automatically.
How I built it.
The core bet was simple. Most of the output quality comes from rewriting the prompt before the image model sees it. Stacking more instructions into the user's prompt was never the answer.
- CVI stored once per brand in Supabase: palette, fonts, tone, references
- Prompt-rewrite layer in Claude that checks against brand rules and cleans up
- Cleaned prompt + brand context sent to Gemini for generation
- Every output saved, versioned, and taggable in a per-brand asset library
- Team auth + per-user history; no public-facing surface to harden
- Output sizes configurable per organization
Admin view. Output-size registry, editable per organization
What shipped.
- Multi-brand workspaces with CVI injection
- Prompt presets per brand per format
- Two-model pipeline (Claude → Gemini)
- Shared asset library with version history
- Team auth with per-user generation history
- Admin panel for projects, users, and output sizes
What I'd tell someone starting one.
Two models beat one. Most of the output quality came from rewriting the prompt with Claude before sending it to Gemini, not from clever prompt stuffing.
Persistent context beats repeated instruction. Pasting brand rules into every chat session never scales. Storing them once and injecting them automatically is the whole product.
Internal-only is a feature. Gating to one team meant I could skip trust & safety theatre and focus on building something that made the work faster.
Let's build
something great.
Got a workflow that needs fixing or a process that's worth improving? Let's talk.
tanel@cleverlab.ee →