← Creative Lab
Malka Media — 2025

GenAI Brand Manager

A one-off AI campaign, rebuilt into a dashboard any brand can join

A one-off AI campaign for a credit-card brand, rebuilt as a dashboard any brand can be onboarded into — 33 days, 33 database migrations.

5
LoRA Sets Trained
33
Migrations in 33 Days
99
Institutions Reach
The hard part

A single 1,130-line function, generateContent() in api.ts, dispatches five models across three providers behind one button — from Flux LoRA to Stable Video Diffusion — turning a dashboard click into a full generation pipeline.

Client
Avant / Concora (via Malka Media)
Agency
Malka Media
Role
Creative Technologist / Product Engineer Pipeline Productization / Full-Stack Development
Timeline
Jan – Feb 2025
What was deliveredthe process film, and the finals it produced
The process film · 1:50The pipeline documenting itself, phase by phase — brand model, prompted generation, upscaling, extension into motion.
Finals · 9:16Delivered spots. Every frame generated, none of it stock.
The prototype, demoedtwo proof-of-concept edits
Round 3 · 1:10The tool as pitched: add a brand, the research dossier writes itself, a task composes its own prompt, generation lands in the approval queue, and the approved tile drops into the marketplace preview.
First cut · 1:52The earlier proof of concept, recorded while the dashboard was still being built alongside the AI coding session that built it — the content matrix, the brand grid and the first end-to-end generation.
Moments from the live demofour cuts from the live recordings, Norton onboarded as the test brand
Add a brand · 0:34Name, two colours and a logo. The research dossier starts writing itself the moment the brand exists.
Compose a task · 0:38Pick the brand, the type and the variation; the prompt is assembled from the curated library rather than typed.
Generate → approve · 0:55The task detail: generated imagery, the generation history, and the gate — approve, or request changes.
Marketplace preview · 0:50Approved tiles dropping into the “Seamless Living Solutions” page — the end of the pipeline, as a customer would see it.
The two actsa line that became a loop — press play, or step it

Act 1 runs left to right and ends in a delivered campaign: a finite pipeline, run once, by hand. Act 2 is the same capability rebuilt as a product — and it is a cycle, because the point was never one brand. The fold between them is the whole story.

ACT 1 — the engagement the training set 5 LoRA sets · 65 imgs one just for the card generation Flux + LoRA · Recraft 26 tests · 18 refined motion Kling 1.6 → Topaz 22 exports · 5 upscaled the card C4D spins, composited the one exact element delivered 4 films, 9:16 run once, by hand the fold — the pipeline becomes a product ACT 2 — the product GenAI Brand Manager 33 migrations · 33 days React · Supabase · 5 tables brand research palette · type · imagery a dossier, automatically composed prompts 3 industries × 21 vars nobody types one generateContent() api.ts · 1,130 lines one call, five backends Flux LoRA · default fast-SDXL DALL·E 3 Zeroscope XL Stable Video Diffusion · img→video the matrix pending → generated → approved the marketplace tile listing copy written by AI 99-institution roster next
STEP 1/10 Five LoRA sets, trained on the brand's own imagery.
verified against the archive
The tool, as it was usedscreenshots from the build
Brand research dossier: colour swatches, photography style, brand positioning, target demographics
Brand research, generatedPalette, photography style, positioning and demographics — produced on adding a brand, and used to constrain every prompt downstream.
Dashboard with brand list, project progress and a new content task modal
The content matrixBrands, progress and filters by status, type and variation — with the task modal that composes a prompt from brand, type and variation.
Task detail showing generated content, generation history and approve or request-changes actions
Generate → approveTask detail with generation history and the lifecycle gate: approve, or request changes. Nothing reaches the tile unapproved.
Three things worth the write-upthe parts that were not obvious

Train the brand, don't prompt it. The usual way to get brand-consistent AI imagery is to pile adjectives in front of a general model and hope. It does not survive a campaign, let alone a roster. So the brand was trained into the model instead: five LoRA sets built from the client's own imagery, 65 curated images in the largest, including one trained on nothing but the physical card — because the card is the element a viewer checks hardest and a general model always gets subtly wrong. Brand fidelity stopped being a prompting problem and became a weights problem. The payoff landed in Act 2, where that same trained model became the dashboard's default backend.

The pipeline became a product in 33 days. Between 13 January and 14 February 2025, 33 database migrations — roughly one a day — turned a one-off creative pipeline into an application: five tables, anonymous auth with row-level security, and about 7,100 lines of front-end. What matters is the shape of the leap, not the line count. A creative engagement normally ends when the deliverable ships. This one ended with the capability packaged so other people could operate it.

Governance in the loop. Brand research constrains the prompts rather than sitting in a document nobody opens. Prompts are composed from curated industry libraries — three industries, 21 variations — so a bad prompt cannot enter the system in the first place. And nothing reaches the marketplace tile without passing pending → generated → approved: a human gate encoded as a data model rather than a policy people are asked to remember. The volume went up; the judgement about whether something was on-brand stayed with a person.

The receiptscounted on disk
artifactcountwhat it is
LoRA training sets565 images in the largest; one for the card alone
stage exports7426 LoRA tests · 22 flux+kling · 18 Recraft · 5 Topaz · 3 luxury
delivered films4process film and 9:16 finals reels
prototype demo edits2 + 4proof-of-concept walkthroughs and four moments cut from the live recordings
database migrations332025-01-13 → 2025-02-14, one per day of build
tables5brands · tasks · brand_research · generation_history · feedback
generation engine1,130 linesone dispatch across 5 models, 3 providers
prompt library3 × 21industries × task variations
front-end~7,100 linesReact 18 · Vite · Tailwind · Supabase
UI screenshots40the build in progress
partner roster99 institutionsthe scale the tool was aimed at

Built for Avant / Concora in January and February 2025, and archived since. It was an internal tool, and it shows its context honestly: API keys were bundled client-side and the listing-copy call ran in the browser — both correct for a small team behind a login, both a server-side route in anything public. The class of problem it answers is the one where brand fidelity and scale pull in opposite directions: a roster too large to art-direct one brand at a time, and a brand system too particular to hand to a general model.

Scope

Project Elements

LoRA TrainingPipeline ProductizationBrand Research AutomationPrompt SystemsMulti-Provider GenerationApproval WorkflowsFull-Stack DevelopmentMarketplace Generation

Have a Project in Mind?

Animation direction, VFX and creative technology. Message me on LinkedIn or get in touch.