Projects · Product · AI · Agency tools
Coral.
A marketing platform that gives every client account an AI “virtual employee,” grounded in that client’s own strategy, goals and data. I designed it, directed it, and shipped a working web app, with an AI coding agent writing the code to my direction.
Role
Creative director, product owner, designer
For
A full-service B2B marketing agency
Built with
Claude Code, Laravel, Livewire, Flux, MySQL
Status
Working web app, deployed to the cloud
Scale
124 commits, each shipped with tests
Proof
A full client account, seeded to run every feature

Why it started
An agency runs on knowing each client cold. That knowledge lived in scattered files.
A full-service agency runs many client accounts at once. For each one the strategy sits in a deck, the goals in a spreadsheet, the reporting in a doc, and the actual numbers somewhere else entirely. Nothing connects the plan to the results.
So no one has a single, current view of a client without rebuilding it by hand every time. The strategist who wrote the plan, the account lead briefing the client, and the analyst pulling the numbers are all working from different copies of the truth.
The question I started with was simple. What if every client account had one place that knew everything about that client, kept itself current, and could brief the team, flag what’s working, and recommend what to do next?
How it started
A principle first, features second.
I didn’t open with a feature list. I opened with one rule, because it decides whether anyone trusts the product: the AI is only worth listening to if it’s honest. It never invents a fact about a client, or a number it can’t back up. Almost every hard call below is that rule applied.
The principle
Grounded, and human-approved
Every answer has to come from the account’s real context, and a person signs off on anything the AI writes back. If the model doesn’t know something, it says so instead of filling the gap.
The spine
Strategy → goals → tactics
A reviewed strategy becomes the source of truth. Goals derive from it with real baselines and targets; tactics roll up into goal progress. One data model the whole product reads from.
The intelligence
Insights, recommendations, an agent
Insights describe what’s happening with the evidence attached; recommendations turn each into a prioritised action; a chat agent knows the whole account and can draft and propose.
The honesty work
Where most of the effort went
Audits that flag what they can’t judge instead of bluffing. Goals that refuse to guess a baseline and ask which source to connect. A grade that weights a critical failure heavier than a minor one.
The proof
A whole account, seeded
I built a complete demo client (strategy, goals, tactics, insights, recommendations, a graded audit, a status report) so the entire product runs end to end with no live data and no client’s numbers exposed.
The idea in one picture
Every claim traces back to the plan.
The strategy is approved once. Goals derive from it and pull their numbers from real sources. Insights read those numbers and show their evidence. Recommendations turn insights into next steps that link back to the finding. Nothing floats free.
1 · Approved
Strategy
Approved once, the source of truth.
2 · Derived
Goals
Real baselines, never guessed.
3 · Read from data
Insights
What’s happening, with the evidence.
4 · Prioritised
Next steps
Recommendations, each linked back to the finding.
Key features
A platform that knows the client.
One view that answers “how is this client doing?”
Every account opens on a plain-language read: a letter grade first, the detail one click away. The executive summary is written as wins, opportunities and risks, not a wall of charts.
The latest client-facing status report sits up top, video slot and all.


The strategy is a living document
A wizard turns a handful of answers into a full marketing strategy. A strategist reviews and approves it: the AI drafts, a human signs off.
From then on it’s the source of truth the rest of the platform reads from.
Goals that pull real numbers, or ask for the source
SMART goals carry baselines and targets, and their progress blends live metrics with the tactics done against them. A goal never guesses a baseline. It sources the number, or prompts you to connect the right tool.
“Behind schedule” means behind the pace to hit the deadline, not simply past due.


An audit that admits what it can’t see
A graded UX and content audit runs across roughly a hundred criteria, with a fix attached to every issue. Anything it can’t judge from the page, like contrast, load speed or focus states, is flagged “manual review” and left out of the score.
An AI that says “I can’t tell, look yourself” earns more trust than one that fakes a verdict.
Diagnosis, then prescription
Insights describe what’s happening, whether a trend, an opportunity or a risk, each with a confidence score and the data behind it.
Recommendations turn each insight into an action with impact, effort and a status you can move to done. Every recommendation links straight back to the insight that motivated it.


A virtual employee
A chat grounded in the account’s strategy, goals and data. It drafts, summarises and proposes new goals, and a human approves anything it writes back.
When it doesn’t know, it says so rather than inventing an answer.
The proof
A whole client account, built to prove it.
A platform is only real when the whole thing runs. So I seeded a complete demo client and set the brief: every feature populated, with believable numbers, and no live data or real client’s figures exposed. Strategy, goals, tactics, insights, recommendations, a graded audit and a status report, all of it working end to end.

Dashboard · A-

Goals · 4 on track

Audit · graded

Recommendations
Invented numbers
0
When the model cannot know something it refuses, flags a manual review or asks for the right source.
Automated tests
481
Guarding the product against regressions.
Seeded artefacts
7
Strategy, goals, tactics, insights, recommendations, a graded audit and a status report, so the product runs end to end with no client data.
How I worked
I ran it like a creative team.
An AI agent wrote the code. People call this vibe coding, and the label undersells the work: what made Coral good was direction, the same things I do with designers, strategists and developers.
Brief before build
The honesty rule and the data model were decided before a feature was written, and the standards were written down so the agent reads them first and they outlast any one conversation.
Review the output, not the claim
“It looks right” was never accepted as done. Every change shipped with a test and was checked in the real interface, the way I’d check a render against a board.
Taste at the detail
Consistent loading states, timezones that actually apply, a grade that weights severity, empty states that explain. Small calls, made hundreds of times, are what make a product feel like one thing.
Honesty as a rule, not a nicety
When the model couldn’t know something, the product was built to say so: refuse to fake a number, flag a manual review, ask for the right source. Restraint was the feature.
Why it matters for what’s next
What this taught me, and what I’d bring to your team.
Design the system, not the screen
The decision that shaped Coral was what a client account is: one grounded model of strategy, goals and data that every feature reads from. It’s the same instinct that builds a brand system that scales instead of a set of pretty comps.
Trust is a design material
The features that landed hardest are the ones where the product admits a limit. Designing an AI product means deciding, on purpose, what it will refuse to fake, and that restraint is what makes people rely on it.
Directing AI is directing people
Clear briefs, specific feedback, standards written down so they outlast the conversation. The skill that made the agent productive is the skill that makes a studio productive. I can lead teams where AI is part of the workflow, and set the guardrails for it.
Prototype to product in weeks
A real, tested, deployed platform came out of directing an AI build, not a pile of mocks. For a brand or product team, that means testing a concept in the real medium before the budget is committed.
I speak engineering
I can talk data models, test suites, performance and trade-offs with a development team, and translate them into what they mean for the work and the timeline. Fewer surprises between the pitch and the build.