Campaign Performance Analyst Architecture Update

Since our initial research, the Product & Engineering team at RADaR wanted to provide an update on the Campaign Performance Analyst (CPA), and we’re excited to share what we’ve been building as we get closer to our v1 launch. 

The initial architecture almost solely relied on out-of-the-box tools from Amazon Web Services and Snowflake, and we heavily utilized these tools as we began putting together the data and software. A lot has changed since August in the world of software engineering and to modify a common quote, everyone has a plan until the software starts getting built.

We ended up building bespoke AI agents and incorporating an MCP Server, a protocol released in November 2024 by Anthropic, the maker of Claude AI. There’s much hype around this technology and for good reason.

On MCP servers and AI agents

Consider these scenarios to understand why MCP servers and AI agents are so hyped and why they unlock all kinds of possibilities:

An MCP server is like having a teenager that actually listens to you, can follow directions, and can answer questions clearly and consistently. 

And to understand AI agents, consider this scenario:

It’s the holidays and family is on the way over, and you just realized you forgot to get pecans for pie. You send your average, “non-agentic” teenager to the store to get pecans. 30 minutes later, they’re back and say the store was out of pecans. 

But an “agentic” teenager would get to the store, not see pecans in the snacks aisle, would go to the baking aisle, the bulk bins, would ask an employee, would go to a second store, would call home and ask for alternatives. “Would walnuts or hazelnuts work? Should we just make apple pie?” Eventually they come home with something that can be served for dessert. 

Current Tech Stack

While we still leverage AWS for data ingestion and processing images using Rekognition, along with Snowflake for our data warehouse, we moved the application logic and “AI layer” out of Snowflake’s Notebooks/Worksheets and Cortex AI (currently in preview mode, not for production-level applications) and into a custom Python application. This shift makes the system more flexible and scalable and gives us full control over our AI agents, allowing us to integrate different AI tools for specific tasks and for our platform to be “agent-ready” via MCP.

Model Context Protocol (MCP) – The Agent Interface

A major addition to our architecture is the Model Context Protocol (MCP). We implemented an MCP server that exposes our application’s capabilities, such as running SQL queries, executing semantic searches, fetching asset details, and performing analysis. This greatly improved performance, cutting the average response time of a query from roughly two minutes to 20 seconds or better, while also greatly reducing the cost of compute by pairing this with the much-hyped AI agent.

The Analyst Agent – Understanding This and That

AI agents are not genius internet robots that can do anything, but they understand if a user asks for something, they’ll attempt to achieve a goal. As in the grocery store scenario where the teen and parent ultimately figure out a dessert to serve.  

Building them is unique in that you aren’t giving them set instructions to follow like traditional computer programming, but instead teaching them and giving them rules, chores, and sometimes even curfews.

We taught our agent concepts like what “best of” or “this” means. If a user asks for the top 5 best performing ads of 2025, the agent will understand the user wants a list of five things in descending order, and that list should be of “performing ads”. It’ll reason the user wants to know how many clicks or impressions the ads got, filtered by the year 2025 and it’ll instantly have a SQL query ready to go. 

And we take it for granted, but the concept of “this” is complicated. Sometimes this means this and sometimes this means that, and usually we use “this” so we don’t have to explain the thing we’re actually talking about, or just point at that thing with their finger. And sometimes, this is the thing you mentioned two minutes ago and if your friend or your chatbot has a memory like the guy from Memento, “this” is very confusing! 

Snowflake – The Data Foundation

Snowflake remains our primary data warehouse and vector store. Despite moving the orchestration logic to Python, the data stays in Snowflake. We use it to store everything from ad performance metrics to the rich metadata extracted by AWS Rekognition. Our Analyst Agent simply acts as a translator, turning user questions into Snowflake SQL. Vector storage capabilities allows us to semantically search against all data stores based on user prompts, gathering the right context for the model at the right time.

Django & Python Backend – The Application Core

Instead of relying on serverless functions for application logic, we standardized on a robust Django backend. This provides a structured, scalable foundation for our API, authentication, and application logic. It also allows us to fully utilize the strengths of Python, the programming language of choice for data science and AI.

Summary

The Campaign Performance Analyst (CPA) project at RADaR has shifted from standard AWS/Snowflake tools to a custom Python architecture featuring proprietary custom AI agents and Anthropic’s Model Context Protocol (MCP) Server. This overhaul significantly improved flexibility and cut query response times from two minutes to under 20 seconds. The MCP Server acts as the Agent Interface. The core Analyst Agent is trained to interpret complex requests and accurately generate the necessary Snowflake SQL.

The Current Technical Stack includes:

  • Snowflake: The Data Foundation.
  • Django & Python Backend: The Application Core, hosting the custom AI.
  • AWS Rekognition: Handles data ingestion and image processing.

Join the Discussion