Skip to content

Case study / Kaivo

One portal for every ad channel, with AI that flags problems early

Kaivo is a multi-service platform that lets marketing agencies manage client ad accounts, campaigns and performance across Google, Meta, TikTok, LinkedIn, Microsoft, Reddit, Spotify and Shopify. I designed and built it end to end: a Next.js front end, FastAPI microservices, an in-product AI assistant called “Kai” and a signals engine that flags ROAS decline, budget pacing and creative fatigue. Agencies get one view of every channel, with problems surfaced before they cost the client money.

Client
Kaivo
My role
Lead engineer — designed and built end to end
Sector
Marketing & AdTech
Context
B2B SaaS · marketing agencies

The challenge

Agencies running paid media for several clients rarely work in one tool. Each client’s spend sits across a different mix of platforms, and each platform has its own interface, its own reporting and its own way of measuring results. The agencies Kaivo is built for were juggling client accounts across Google, Meta, TikTok, LinkedIn, Microsoft, Reddit, Spotify and Shopify with no single view of performance.

The cost of that fragmentation is not only time. When performance data sits in eight places, the early signs of trouble are easy to miss: return on ad spend sliding on one channel, a budget running ahead of plan on another, an ad that has stopped working because the audience has seen it too often. By the time someone spots it in a routine report, the client has already paid for it.

  • One place to manage client ad accounts, campaigns and performance across every channel the agency runs
  • Early warning on ROAS decline, budget pacing and creative fatigue, without someone checking each platform by hand
  • An AI assistant built into the product rather than bolted on beside it
  • An architecture that can add channels and services without a rewrite

What I built

I designed and built Kaivo end to end as a set of FastAPI microservices behind a Next.js front end, deployed on Cloudflare and AWS. Splitting the backend into services was a deliberate choice for this domain. Every ad platform has its own API, authentication, limits and release cycle, and those integrations change on the platform’s schedule, not yours. Keeping them apart means a change or outage on one platform does not take down the rest of the product, and a new channel can be added without touching the others.

Above the integrations sits the intelligence layer. The signals engine works on the performance data the platform already holds and flags three problems that quietly burn client budget: ROAS decline, budget pacing and creative fatigue. Its job is to turn those problems into something an account manager sees and can act on, rather than something found later in a report.

Kai, the in-product AI assistant, gives account managers a conversational way into the same platform. Building it into the product, rather than as a separate chatbot, means it works alongside the dashboards and signals the team already uses, on the same data.

Python and FastAPI suit this mix of integration work and AI features. Typed request and response models make the contracts between services explicit, which matters when several services and several outside APIs have to agree on the shape of the data. Next.js and React give agencies a fast interface for working across many clients and channels at once.

Architecture and stack

Front end
Next.js · React
Backend
Python · FastAPI · Microservices
AI
“Kai” in-product AI assistant · LLM agents · Signals engine (ROAS decline, budget pacing, creative fatigue)
Channels
Google · Meta · TikTok · LinkedIn · Microsoft · Reddit · Spotify · Shopify
Infrastructure
Cloudflare · AWS

Outcome

Kaivo gives agencies one portal for every channel they run. Instead of logging into each ad platform in turn, account managers see client accounts, campaigns and performance side by side, and the signals engine brings ROAS decline, budget pacing problems and creative fatigue to their attention before those problems cost the client money.

Because each integration lives in its own service, the platform can grow with the agency. Adding a channel or a new kind of signal is an extension, not a rewrite.

Sean Metcalf, Kaivo’s founder, summed up the working relationship as “steady progress, predictable delivery, and code that’s easy to review and integrate”. His full recommendation is below.

  • One view of client ad accounts, campaigns and performance across eight channels
  • ROAS decline, budget pacing and creative fatigue flagged automatically
  • An AI assistant inside the product, not in a separate tool
  • A service-based backend that adds channels without a rewrite
“Steady progress, predictable delivery, and code that’s easy to review and integrate.”
Sean MetcalfFounder, getKaivo

Last updated 2026-10-03

Have a project like this?

Book a free 1-hour intro call, or send a short brief and I’ll reply with a proposed scope within two working days.