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)
Get a free 30-day audit of your advertising accounts. John will personally review your setup and provide actionable recommendations.
John will review your account and reach out within 24 hours.