/ Blog
Blog Contact Buddy Ads Builder Audit Engine GitHub

How-To Guide 5: Build a Streamlit Dashboard for Campaign Data

John Williams · Senior Paid Media Specialist · $48M+ Managed · Feb 2026

What will I learn about how-to guide 5: build a streamlit dashboard for ca?
This covers everything you need to know about how-to guide 5: build a streamlit dashboard for campaign data.

Streamlit turns Python scripts into web dashboards in minutes. Perfect for internal reporting tools.

# pip install streamlit pandas plotly
# Save as app.py, run with: streamlit run app.py

import streamlit as st
import pandas as pd
import plotly.express as px

st.title('Campaign Performance Dashboard')
st.sidebar.header('Filters')

# Upload data
uploaded = st.file_uploader('Upload Campaign CSV', type='csv')
if uploaded:
df = pd.read_csv(uploaded)

# Filters
campaigns = st.sidebar.multiselect('Campaigns', df['Campaign'].unique())
if campaigns:
df = df[df['Campaign'].isin(campaigns)]

# KPI cards
col1, col2, col3, col4 = st.columns(4)
col1.metric('Total Spend', f'${df["Cost"].sum():,.2f}')
col2.metric('Conversions', f'{df["Conversions"].sum():,.0f}')
col3.metric('Avg CPA', f'${df["Cost"].sum()/max(df["Conversions"].sum(),1):,.2f}')
col4.metric('ROAS', f'{df["Revenue"].sum()/max(df["Cost"].sum(),1):.2f}x')

# Charts
fig = px.bar(df.groupby('Campaign').agg({'Cost':'sum','Revenue':'sum'}).reset_index(),
x='Campaign', y=['Cost','Revenue'], barmode='group')
st.plotly_chart(fig, use_container_width=True)

# AI Analysis button
if st.button('Generate AI Analysis'):
with st.spinner('Analyzing with Claude...'):
import anthropic
client = anthropic.Anthropic()
r = client.messages.create(model='claude-sonnet-4-20250514',max_tokens=1000,
messages=[{'role':'user','content':f'Analyze: {df.describe().to_string()}'}])
st.write(r.content[0].text)

Ready to Put This Into Practice?

Get a free 30-day audit of your advertising accounts. John will personally review your setup and provide actionable recommendations.

No credit card · No contract · John will personally reach out within 24 hours

Thank You!

John will review your account and reach out within 24 hours.