Karis
At Karis, I owned two product areas: Brand Assets and GEO. My work was to turn brand knowledge into a reliable foundation that both people and marketing agents could use, then carry the same thinking into a complete GEO workflow.


The context
Karis is a multi-agent marketing platform. Agents can only produce consistent work when they share the same understanding of a brand, so brand data cannot live as scattered prompts or one-off settings.
I treated Brand Assets as product infrastructure: one place to collect, review, edit, and reuse the facts that shape every downstream marketing task.
Brand Assets
I designed and built the Brand Assets management experience independently. It brings together the brand profile, offerings, audience, competitors, topics, tone, logos, and other reusable assets.
The system can assemble a useful starting point from a company's public presence, while keeping human edits and overrides intact. Users can see what changed, correct it, and keep control of the final brand record.

Connecting the agents
The page was only one half of the work. I also built the service and agent tool layer that lets Marketing Agents find the right brand, read its current kit, inspect history, and request analysis.
That connection makes Brand Assets a shared source of truth instead of another settings screen. A change made by a person can carry into the next agent task without copying context by hand.
GEO
I also delivered the GEO product end to end. It guides a brand from onboarding into prompt tracking, competitor watchlists, citation analysis, answer visibility, opportunity analysis, and ongoing conversations about the results.
The goal was to make a new and technical field readable. Users should be able to see where their brand appears in AI answers, why a competitor is ahead, and what action is worth taking next.



Production workflows
Behind the interface, I connected the frontend, APIs, long-running workflows, backfill jobs, usage tracking, and billing boundaries. I also handled the states around missing data, retries, and progress so the product could explain what was happening instead of appearing stuck.
This work pushed me to keep the product language simple while making the underlying system explicit and observable.
What I focused on
Across both areas, I focused on continuity. Brand knowledge should survive across agents, user edits should remain authoritative, and complex automated work should still feel understandable to the person using it.