An internal tool that turns a product brief into on-brand, channel-ready campaign copy, in minutes instead of days.
Their internal team produced campaign copy across WhatsApp, email, Google and Meta ads, and SMS, by hand, from scattered and outdated reference docs.
They needed far more output as products, cohorts, and channels multiplied. And because it's a bank, every line had to be unmistakably on-brand and approved before it could ship. Speed and trust pulled in opposite directions.
Centered on employee care, the user wasn't a customer, it was a marketer under deadline. The job was to remove decisions and rework, not add features.
It would be easy to frame this as "build a copywriting tool." The harder, more interesting problem was that speed, consistency, and control were in tension.
Marketers could move faster with templates, but templates flattened the brand. They could stay on-brand with manual review, but review was the slowest part of the process. Optimise one at the expense of the others and the tool dies the moment it hits real hands.
Get a marketer from a product brief to approved, on-brand, channel-ready copy, with the fewest decisions and the least rework.
That reframe split the work into two halves: control at the input, so output is on-brand by construction, and trust at the output, so a regulated team can actually ship it. The output was never the deliverable, the marketer's confidence in shipping it was.
Generation is the easy 20%.
The other 80% is everything after the first draft.
Editing, comparing, approving, and keeping track of what shipped, that's the 80% that decides whether a tool like this gets adopted. Most AI tools at the time treated generation as the product and left the rest as an afterthought.
I bet the opposite: control the input so output is on-brand by construction, then design the whole refine-and-approve loop so a bank can trust what comes out. Generation is the entry point, not the destination, and the work splits cleanly into two acts.
The fastest way to get off-brand copy is a blank prompt box. But marketers shouldn't have to prompt-engineer, and a bank can't risk freeform input quietly producing freeform brand voice.
A structured brief, product, use-case, tone, theme, cohort, channel, hooks, variant count. Intent is captured as fields, not prose, so generation runs on a schema the bank controls.
This is where consistency and control are actually won, at the input, before a single word exists. On-brand becomes the default state, not a correction.
WhatsApp, email, ads, and SMS aren't one medium at different sizes, they have different rules for length, tone, and format. The same copy pasted everywhere reads wrong everywhere.
The same structured brief generates channel-native variants. Pick the medium and the output reshapes, emoji-led and short for WhatsApp, subject-plus-body for email, a headline and a tight description for ads.
Marketers brief once and get output that's already correct for where it lands. The bank's channel conventions live in the tool, so correctness scales without a style guide in everyone's head.
Marketers never accept the first AI draft verbatim, but sending them to a separate editor for each tweak breaks flow and quietly discourages iteration.
Each variant lives in its own tile that doubles as an editable field. Selecting a variant shifts it to a clear selected state; entering edit mode deepens the hue so there's never doubt which tile you're in.
The marketer stays in one surface from generation to final copy. Editing isn't a mode switch, it's the same gesture as reading.
Tiles need a lot of possible actions, copy, edit, favourite, feedback, delete, but stamping all of them onto every tile created noise that buried the content itself.
One dynamic action bar above the variants. Nothing selected → global controls: sort, select-all, generate-more. A variant selected → contextual actions for that selection. One bar, two states, zero clutter on the tiles.
The interface only surfaces what's relevant in the moment. The decision I'm proudest of, it solved a density problem without adding a single new screen.
The first set of variants is rarely the last, but "try again" tells the model nothing, and asking a marketer to re-engineer a prompt is asking them to do the AI's job.
A structured feedback step. Marketers flag what missed, quality, relevance, consistency, format, add an optional line of context, and regenerate. A vague "make it better" becomes specific, machine-usable direction.
This is the heart of the bet. Generation was never the hard part; steering is. Structured feedback makes the refine loop fast and repeatable, and quietly gives the bank signal on what "on-brand" really means.
In a bank, nothing ships unreviewed. Bolt approval on as a side-channel of emails and spreadsheets and the entire speed gain evaporates.
A maker–checker flow inside the tool. The marketer shares a variant for approval; an approver reviews it in context and approves or rejects; the decision is logged. Version history sits underneath as the audit trail.
This is the real unlock. Governance is the reason a regulated team can adopt generative AI at all, and designing it into the product, instead of around it, is what kept the tool fast.
Marketers generate, regenerate, and tweak across a session. Without a way to track that, they lose good drafts and can't compare directions.
Versioned tabs, each showing when it was created and how many variants it holds. Switching is instant, so comparing two directions is a click, not a hunt.
It turns an invisible history into a navigable one. Marketers move backward without fear of losing work, which makes them more willing to explore forward.
A Material-3 foundation themed entirely in IDFC's brand tokens: the primary red with a tint-and-shade scale for states and surfaces, set in Inter for its tall x-height and screen legibility, which matters in an interface that is, fundamentally, walls of text.
The system went past components. Reusable templates and content guidelines let a team save a winning brief and apply it again, so "on-brand" stopped depending on who was at the keyboard and started compounding.
Validated with the marketing team across multiple sessions. What landed wasn't the generation, it was the loop around it: the structured brief, the in-place refine, and the approval flow were singled out as the difference between a flashy demo and something a regulated team would trust with live campaigns.
↳ TK = "to come." Swap each for a real figure before you publish, even a directional or qualitative number beats a blank. A single stakeholder quote here does more than a paragraph of description.
The adoption risk in an AI tool isn't the quality of the model, it's the workflow around it. Designing the brief-to-approval loop mattered far more than the generation screen ever did.
The cheapest place to keep output on-brand is before it exists. A structured brief and reusable templates made "on-brand" the default state, so review caught exceptions, not the norm.
Maker–checker approval and a visible audit trail weren't compliance overhead bolted on at the end, they were the specific reason a regulated team could put generative AI anywhere near a live campaign.
Because marketers steered with structured reasons rather than free-text prompts, every regeneration left signal behind. Over time that, paired with the analytics view, teaches the bank what "on-brand" actually means, in data.