DEV Community

Chris King
Chris King

Posted on

Meet Onni!

I turned my open source AI marketing agent into a real product: meet Onni at cmo.dog

A little while ago, I built OpenOkara, an open source AI marketing agent that takes a URL and generates a marketing brief.

That project became the foundation for something more polished and deployed:

https://www.cmo.dog

The face of it is Onni — a good Finnish dog who fetches your Chief Marketing Officer.

And yes, that sentence is ridiculous.

But the product is real.

You drop in a URL, and Onni returns:

  • a website audit
  • a competitor map
  • a brand voice profile
  • a ranked SEO fix queue
  • and an AI chat interface for follow-up questions

All in about a minute.

Built on OpenOkara, but meant to be a product

OpenOkara was the open source starting point:

  • multi-agent orchestration
  • website analysis
  • competitor research
  • brand voice extraction
  • SEO recommendations
  • live streaming progress in the UI

That gave me the core workflow.

CMO.dog is the more productized version of that idea:

  • better branding
  • clearer UX
  • a stronger character layer
  • a tighter user journey
  • and a domain nobody forgets

That distinction matters.

A lot of projects work as demos but not as products.

The gap is usually not the model.

It’s:

  • framing
  • trust
  • flow
  • clarity
  • and whether normal people instantly understand what they’re supposed to do

Why I made Onni

Because “AI marketing” as a category is full of tools that are either:

  • too expensive
  • too vague
  • too generic
  • or too magical in a bad way

You upload something, wait, and get a glossy blob of text that sounds strategic but doesn’t actually help you decide what to do next.

I wanted the opposite.

I wanted something that feels direct:

put in URL

get marketing answers

No prompt gymnastics.

No huge onboarding flow.

No pretending a founder wants to become a part-time prompt engineer.

What Onni actually does

When you enter a site, four agents run in parallel.

1. Content agent

Reads the site and summarizes the company, offer, and available context.

2. Competitor agent

Searches the web for comparable companies, adjacent players, pricing signals, and positioning patterns.

3. Brand agent

Figures out how the company sounds — tone, voice, style, and positioning cues.

4. Audit agent

Builds the website audit, scores the site, and ranks the SEO fixes by priority.

That gets assembled into a single brief the user can actually act on.

Then the chat interface lets them keep going:

  • “Which issue should I fix first?”
  • “How do we position against competitor X?”
  • “Rewrite our homepage headline in our brand voice”
  • “What should we test next?”

That follow-up loop is where a lot of the product value shows up.

Why the dog matters more than you think

Onni started as a branding decision.

But I think mascots do something useful for AI products.

A lot of AI apps feel interchangeable:

  • same layout
  • same promises
  • same abstract gradients
  • same “copilot/cofounder/genius assistant” energy

Giving the product a character made it easier to define the tone.

Onni is helpful, fast, and a little playful — but the output still needs to be sharp.

That’s a better UX constraint than “make it futuristic.”

Also, cmo.dog is objectively funny, which I consider a strategic advantage.

The architecture is boring on purpose

The stack is straightforward:

  • FastAPI
  • Next.js 15
  • Pydantic
  • Tailwind
  • shadcn/ui
  • Backboard for agent infrastructure
  • SSE for live terminal streaming

The agents are orchestrated through a backend pipeline, and the frontend streams progress in real time.

I like the live terminal because it replaces the worst UI element in AI products: the dead-eyed loading spinner.

If the system is doing work, let users see it doing work.

That single choice makes the app feel more trustworthy.

A product lesson I keep relearning

Open source gets you attention from builders.

A product has to work for everyone else.

That means the hard part isn’t just getting useful output from agents.

The hard part is packaging the experience so a user instantly understands:

  • what this does
  • why it matters
  • whether they trust it
  • and what they should do after the result appears

That’s the part I wanted to explore with CMO.dog.

Not just “can I make the workflow work?”

But:

can I make the workflow feel like a product people want to use?

Why I think this category is vulnerable

A lot of premium AI SaaS products are charging serious money for workflows that are becoming easier to reproduce.

Not trivial.
But reproducible.

Especially when the product is fundamentally:

  • URL in
  • analysis happens
  • report out
  • follow-up chat

If your moat is just “we arranged the prompts nicely,” you should be nervous.

The defensible stuff is elsewhere:

  • distribution
  • trust
  • UX
  • speed
  • reliability
  • workflow depth
  • integrations
  • historical data
  • and product taste

That’s another reason I like building both open source and productized versions of ideas.

It reveals what’s actually valuable.

If you want to look at the code

The deployed product is here:

https://www.cmo.dog

The repo is here:

https://github.com/Backboard-io/cmo.dog

And the open source foundation it grew out of is here:

https://github.com/Backboard-io/openokara

Final thought

Sometimes the interesting part of a project isn’t the first build.

It’s the second one.

The version where you take the raw capability, add character, tighten the UX, sharpen the promise, and turn it into something people can immediately understand.

That’s what Onni is.

A good Finnish dog built on top of an open source AI marketing agent — now fetching CMOs at:

https://www.cmo.dog

Top comments (0)