So the metrics/KPIs we are looking to capture are here: Total Published Articles Percent of KBAs Viewed - Last Month Number of times KBAs were attached to Tickets - Last Month Article Quality Index Contribution Index FCR Rate % f KBA marked as Helpful - Article Link Accuracy Ticket Deflection Rate Change in Participation Rate # of articles updated (modified) # of Articles Retired # Articles created from Ticket Management % of Articles reviewed and improved
To upload files, please first save the app
import streamlit as st
import pandas as pd
import numpy as np
import plotly.graph_objects as go
from datetime import datetime, timedelta
# Sample data generation
def generate_sample_data():
np.random.seed(42)
current_date = datetime.now()
last_month = current_date - timedelta(days=30)
data = {
'total_articles': 1250,
'kba_views_last_month': 78.5, # percentage
'kba_ticket_attachments': 342,
'article_quality_index': 8.7, # out of 10
'contribution_index': 72.3, # percentage
'fcr_rate': 85.2, # percentage
'helpful_rate': 91.4, # percentage
'deflection_rate': 65.8, # percentage
'participation_change': 12.5, # percentage
'articles_updated': 89,
'articles_retired': 15,
'articles_from_tickets': 45,
'articles_reviewed': 82.3, # percentage
}
return data
# Page config
st.set_page_config(page_title="Knowledge Base Analytics", layout="wide")
# Title
st.title("Knowledge Base Analytics Dashboard")
# Get data
data = generate_sample_data()
# Create three columns for metrics
col1, col2, col3 = st.columns(3)
with col1:
st.metric(
label="Total Published Articles",
value=data['total_articles'],
delta=f"+{23} from last month"
)
st.metric(
label="KBAs Viewed (Last Month)",
value=f"{data['kba_views_last_month']}%",
delta=f"+{5.2}%"
)
st.metric(
label="Article Quality Index",
value=f"{data['article_quality_index']}/10",
delta="+0.5"
)
st.metric(
label="Ticket Deflection Rate",
value=f"{data['deflection_rate']}%",
delta="+2.3%"
)
with col2:
st.metric(
label="KBAs Attached to Tickets",
value=data['kba_ticket_attachments'],
delta="+45"
)
st.metric(
label="FCR Rate",
value=f"{data['fcr_rate']}%",
delta="+3.2%"
)
st.metric(
label="Articles Updated",
value=data['articles_updated'],
delta="+12"
)
st.metric(
label="Articles from Tickets",
value=data['articles_from_tickets'],
delta="+8"
)
with col3:
st.metric(
label="Contribution Index",
value=f"{data['contribution_index']}%",
delta="+5.5%"
)
st.metric(
label="Articles Marked Helpful",
value=f"{data['helpful_rate']}%",
delta="+1.8%"
)
st.metric(
label="Articles Retired",
value=data['articles_retired'],
delta="-3",
delta_color="inverse"
)
st.metric(
label="Articles Reviewed",
value=f"{data['articles_reviewed']}%",
delta="+4.5%"
)
# Add trend charts
st.subheader("Monthly Trends")
# Sample monthly data for trends
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
views_trend = np.random.randint(1000, 1500, len(months))
quality_trend = np.random.uniform(8.0, 9.0, len(months))
# Create two columns for charts
chart_col1, chart_col2 = st.columns(2)
with chart_col1:
fig1 = go.Figure()
fig1.add_trace(go.Scatter(x=months, y=views_trend, mode='lines+markers', name='Views'))
fig1.update_layout(title='Monthly Article Views', xaxis_title='Month', yaxis_title='Views')
st.plotly_chart(fig1, use_container_width=True)
with chart_col2:
fig2 = go.Figure()
fig2.add_trace(go.Scatter(x=months, y=quality_trend, mode='lines+markers', name='Quality'))
fig2.update_layout(title='Article Quality Trend', xaxis_title='Month', yaxis_title='Quality Score')
st.plotly_chart(fig2, use_container_width=True)
# Additional insights
st.subheader("Key Insights")
st.markdown("""
- Article quality has shown consistent improvement over the last 6 months
- Ticket deflection rate has increased, indicating better knowledge base effectiveness
- Contribution from support teams has grown significantly
- Article review process is maintaining high standards with 82.3% review rate
""")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?