Skip to content

Story No. 01Marketing & AdTech

Every client’s ad channels in one workspace, with wasted spend caught sooner

Kaivo needed a single workspace where marketing agencies could run client advertising on eight channels, from Google and Meta through to Reddit, Spotify and Shopify. We designed and built the platform end to end, pairing a Next.js interface with FastAPI microservices, adding a signals engine that watches for creative fatigue, budget pacing and falling ROAS, and building in an AI assistant, “Kai”. Account managers work from one view and hear about problems while there is still budget left to protect.

Client
Kaivo
Sector
Marketing & AdTech
Our role
Designed and built end to end
Context
B2B SaaS · marketing agencies

The challenge

An agency running paid media for many clients ends up living in many dashboards. One client spends mostly on Meta and TikTok, another on Google and LinkedIn, a third sells through Shopify, and every platform reports results in its own terms. Kaivo set out to replace that tab-switching with one place to manage client ad accounts, campaigns and performance, whatever mix of channels a client uses, from Microsoft and LinkedIn to Reddit and Spotify.

The bigger business risk sat in the gaps between those dashboards. A campaign whose return on ad spend is drifting down, a budget spending faster than planned, an ad the audience has stopped responding to: each is visible somewhere, but only to someone who looks in the right place at the right moment. For an agency, a problem found late is money the client has already spent, and a harder conversation at the next review.

  • A single workspace for client ad accounts, campaigns and results on every channel
  • Automatic warnings about creative fatigue, pacing and falling ROAS, so nobody has to check each platform by hand
  • An assistant that lives inside the product and works on the same data
  • Room to add channels and new services later without starting again

Our approach

The first decision was how to structure the backend. We chose FastAPI microservices behind a Next.js front end, hosted across Cloudflare and AWS, with each ad platform’s integration kept in its own service. Ad platforms change their APIs, quotas and authentication on their own timetable, and an agency product has no say in that. Isolating each integration turns a breaking change at one platform into a contained repair, and the remaining channels keep working while it is made.

The second decision was what the intelligence layer should actually do. Instead of a general “insights” feature, we gave the signals engine three specific jobs that map to money an agency can lose: spotting ROAS decline, checking budget pacing and detecting creative fatigue. Narrow, well-defined signals are easier to test and easier for account managers to trust, and they run on performance data the platform already collects.

Kai, the AI assistant, came third. We built it into the product, using LLM agents, so it answers questions about the same accounts and campaigns the dashboards show. An assistant that sits on a separate copy of the data, or in another tool, tends to drift from what users see on screen, and that wears away trust quickly.

We wrote the backend in Python because the work is a mix of third-party integrations and AI features, and FastAPI’s typed models keep the contract between services explicit. On the front end, Next.js and React give account managers a quick interface for moving between clients and channels during the working day.

What we’d tell a similar client: decide early which problems the AI should catch, and name them. A few clear signals that account managers act on are worth more than a wall of charts nobody reads. And plan for integration upkeep from the start, because the platforms you connect to will keep changing.

Architecture & 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

The outcome

Account managers using Kaivo work from one workspace. Client accounts, campaigns and performance from every connected channel sit together, and the signals engine raises pacing issues, tired creative and falling ROAS while they can still be fixed.

The service-per-integration design also gives Kaivo room to grow. A new channel, or a new type of signal, is added as a new piece next to the existing ones, and the integrations that already work are left alone.

Sean Metcalf, Kaivo’s founder, described our work together in his review as “steady progress, predictable delivery, and code that’s easy to review and integrate”. You can read the full review below.

  • Accounts, campaigns and performance from eight channels in one view
  • Automatic warnings on pacing, creative fatigue and ROAS decline
  • Kai answers questions using the same data as the dashboards
  • New channels added as new services, with no rebuild

“Steady progress, predictable delivery, and code that’s easy to review and integrate.”

Sean MetcalfFounder, Kaivo

Sean Metcalf

Founder, Kaivo · Client

He’s careful with contracts and edge cases, stays disciplined on scope, and communicates clearly when something needs a decision. What I value most is his consistency: steady progress, predictable delivery, and code that’s easy to review and integrate.

Last updated

All 13 stories

Tell us what you’re building.

Book a free one-hour call, or send a short brief and we’ll reply within two working days.