Systems Library / Operations & Admin / How to Build an AI KPI Dashboard Generator
Operations & Admin reporting analytics

How to Build an AI KPI Dashboard Generator

Generate custom KPI dashboards automatically from your business data.

Jay Banlasan

Jay Banlasan

The AI Systems Guy

This ai kpi dashboard generator builds custom dashboards from your business data automatically. I use it to give every client a live view of what matters without building each one by hand.

What You Need Before Starting

Step 1: Connect Data Sources

Set up API connections for kpi.

import requests
from datetime import datetime

def fetch_data(api_config):
    results = {}
    for source in api_config:
        response = requests.get(source["url"], headers=source.get("headers", {}))
        if response.status_code == 200:
            results[source["name"]] = response.json()
    results["fetched_at"] = datetime.now().isoformat()
    return results

Step 2: Process and Calculate

Transform raw data into the metrics you need.

import pandas as pd

def calculate_metrics(raw_data):
    df = pd.DataFrame(raw_data)
    metrics = {
        "total": df["value"].sum(),
        "average": df["value"].mean(),
        "trend": df["value"].pct_change().tail(7).mean(),
        "period": datetime.now().strftime("%Y-%m-%d"),
    }
    return metrics

Step 3: Generate the Report

Build the report using your template.

from jinja2 import Template

REPORT = Template("""
<h2>{{ title }} - {{ date }}</h2>
<table>
{% for metric, value in metrics.items() %}
<tr><td>{{ metric }}</td><td>{{ value }}</td></tr>
{% endfor %}
</table>
""")

def build_report(metrics, title):
    return REPORT.render(title=title, date=datetime.now().strftime("%Y-%m-%d"), metrics=metrics)

Step 4: Add AI Commentary

Use Claude to explain what the numbers mean.

import anthropic

def add_narrative(metrics):
    client = anthropic.Anthropic()
    message = client.messages.create(
        model="claude-sonnet-4-20250514", max_tokens=500,
        messages=[{"role": "user",
            "content": f"Write a 3-sentence analysis of these metrics. Be specific.\n{json.dumps(metrics)}"}])
    return message.content[0].text

Step 5: Schedule Delivery

Automate report generation and distribution.

import smtplib
from email.mime.text import MIMEText

def send_report(html_content, recipients, subject):
    msg = MIMEText(html_content, "html")
    msg["Subject"] = subject
    for recipient in recipients:
        msg["To"] = recipient
        with smtplib.SMTP("smtp.gmail.com", 587) as server:
            server.starttls()
            server.login("[email protected]", "app-password")
            server.send_message(msg)

What to Build Next

Add drill-down. Let users click any metric to see the underlying data.

Related Reading

Want this system built for your business?

Get a free assessment. We will map every system your business needs and show you the ROI.

Get Your Free Assessment

Related Systems