Skip to main content

Business Intelligence Demo

This example demonstrates the comprehensive business intelligence capabilities of the RAG platform including usage analytics, productivity measurement, user satisfaction tracking, and executive reporting.

Overview​

The business intelligence demo showcases:

  • Usage Analytics - Track system usage patterns and trends
  • Productivity Measurement - Measure ROI and productivity gains
  • User Satisfaction - Survey management and sentiment analysis
  • Executive Reporting - High-level dashboards and reports
  • Cost-Benefit Analysis - Financial impact assessment

Prerequisites​

  • RecoAgent installed and configured
  • Business analytics package available
  • SQLite database (for demo) or PostgreSQL (for production)
  • Basic understanding of business metrics

Basic Setup​

1. Initialize Business Intelligence System​

from packages.rag.business_analytics import (
BusinessAnalyticsCollector, UsageAnalytics, BusinessMetric, MetricType,
UserEngagement, ProductivityGain, UserSatisfaction, BusinessImpact
)
from packages.rag.productivity_measurement import (
ProductivityTracker, CostBenefitAnalyzer, TaskMeasurement, TaskType,
ProductivityBaseline, ROICalculation
)
from packages.rag.user_satisfaction import (
SatisfactionAnalyzer, SurveyManager, SurveyDistributor, Survey, SurveyType,
SurveyStatus, SurveyResponse, FeedbackSentiment
)
from packages.rag.executive_dashboard import (
ExecutiveDashboard, ReportGenerator, StakeholderLevel, ReportType
)

class BusinessIntelligenceDemo:
"""Demonstrates the business intelligence system capabilities."""

def __init__(self, db_path: str = "demo_business_analytics.db"):
self.db_path = db_path
self.collector = BusinessAnalyticsCollector(db_path)
self.usage_analytics = UsageAnalytics(self.collector)
self.productivity_tracker = ProductivityTracker(self.collector)
self.cost_benefit_analyzer = CostBenefitAnalyzer(self.collector)
self.satisfaction_analyzer = SatisfactionAnalyzer(self.collector)
self.survey_manager = SurveyManager(self.collector)
self.executive_dashboard = ExecutiveDashboard(self.collector)
self.report_generator = ReportGenerator(self.executive_dashboard)

2. Generate Sample Data​

async def generate_sample_data(self, num_users: int = 10, num_days: int = 30):
"""Generate sample data for demonstration."""
print("šŸ”„ Generating sample data...")

departments = ["engineering", "sales", "marketing", "support", "research"]

for day in range(num_days):
date = datetime.now() - timedelta(days=num_days - day)

for user_id in range(num_users):
department = departments[user_id % len(departments)]

# Generate usage data
await self.usage_analytics.record_usage(
user_id=f"user_{user_id}",
department=department,
queries_count=random.randint(5, 50),
session_duration=random.randint(300, 3600),
date=date
)

# Generate productivity data
await self.productivity_tracker.record_task_completion(
user_id=f"user_{user_id}",
task_type=TaskType.RESEARCH,
time_saved=random.randint(30, 180), # minutes
quality_score=random.uniform(0.7, 1.0),
date=date
)

print(f"āœ… Generated sample data for {num_users} users over {num_days} days")

Usage Analytics​

Track User Engagement​

async def analyze_user_engagement(self):
"""Analyze user engagement patterns."""
print("\nšŸ“Š User Engagement Analysis")
print("=" * 40)

# Daily active users
dau = await self.usage_analytics.get_daily_active_users(
date=datetime.now().date()
)
print(f"Daily Active Users: {dau}")

# Weekly active users
wau = await self.usage_analytics.get_weekly_active_users(
week_start=datetime.now().date() - timedelta(days=7)
)
print(f"Weekly Active Users: {wau}")

# Monthly active users
mau = await self.usage_analytics.get_monthly_active_users(
month=datetime.now().month,
year=datetime.now().year
)
print(f"Monthly Active Users: {mau}")

# Engagement metrics
engagement = await self.usage_analytics.calculate_engagement_metrics(
time_range=timedelta(days=30)
)

print(f"\nEngagement Metrics (30 days):")
print(f" Average Session Duration: {engagement['avg_session_duration']:.1f} minutes")
print(f" Queries per User: {engagement['avg_queries_per_user']:.1f}")
print(f" Return Rate: {engagement['return_rate']:.1%}")
print(f" Stickiness: {engagement['stickiness']:.1%}")

return engagement

Department Analysis​

async def analyze_department_usage(self):
"""Analyze usage patterns by department."""
print("\nšŸ¢ Department Usage Analysis")
print("=" * 40)

departments = ["engineering", "sales", "marketing", "support", "research"]

for dept in departments:
metrics = await self.usage_analytics.get_department_metrics(
department=dept,
time_range=timedelta(days=30)
)

print(f"\n{dept.title()} Department:")
print(f" Active Users: {metrics['active_users']}")
print(f" Total Queries: {metrics['total_queries']}")
print(f" Avg Queries/User: {metrics['avg_queries_per_user']:.1f}")
print(f" Avg Session Time: {metrics['avg_session_time']:.1f} min")

return metrics

Productivity Measurement​

Track Productivity Gains​

async def measure_productivity(self):
"""Measure productivity gains from RAG system."""
print("\n⚔ Productivity Measurement")
print("=" * 40)

# Calculate productivity baseline
baseline = await self.productivity_tracker.calculate_baseline(
time_range=timedelta(days=30)
)

print(f"Productivity Baseline (30 days):")
print(f" Average Task Time: {baseline['avg_task_time']:.1f} minutes")
print(f" Tasks Completed: {baseline['tasks_completed']}")
print(f" Quality Score: {baseline['avg_quality_score']:.2f}")

# Calculate productivity gains
gains = await self.productivity_tracker.calculate_productivity_gains(
time_range=timedelta(days=30)
)

print(f"\nProductivity Gains:")
print(f" Time Saved: {gains['total_time_saved']:.1f} hours")
print(f" Efficiency Improvement: {gains['efficiency_improvement']:.1%}")
print(f" Quality Improvement: {gains['quality_improvement']:.1%}")

return gains

ROI Calculation​

async def calculate_roi(self):
"""Calculate return on investment."""
print("\nšŸ’° ROI Calculation")
print("=" * 40)

# Calculate ROI
roi_data = await self.cost_benefit_analyzer.calculate_roi(
time_range=timedelta(days=30),
cost_per_hour=50, # Average hourly rate
system_cost=10000 # Monthly system cost
)

print(f"ROI Analysis (30 days):")
print(f" System Cost: ${roi_data['system_cost']:,.2f}")
print(f" Productivity Value: ${roi_data['productivity_value']:,.2f}")
print(f" Net Benefit: ${roi_data['net_benefit']:,.2f}")
print(f" ROI: {roi_data['roi']:.1%}")
print(f" Payback Period: {roi_data['payback_period']:.1f} months")

return roi_data

User Satisfaction​

Survey Management​

async def manage_satisfaction_surveys(self):
"""Manage user satisfaction surveys."""
print("\n😊 User Satisfaction Management")
print("=" * 40)

# Create satisfaction survey
survey = Survey(
title="RAG System Satisfaction Survey",
description="Help us improve our RAG system",
survey_type=SurveyType.SATISFACTION,
questions=[
"How satisfied are you with the RAG system?",
"How has the system improved your productivity?",
"What features do you find most useful?",
"What improvements would you like to see?"
]
)

survey_id = await self.survey_manager.create_survey(survey)
print(f"āœ… Created survey: {survey_id}")

# Distribute survey
distribution = await self.survey_manager.distribute_survey(
survey_id=survey_id,
user_groups=["engineering", "sales", "marketing"],
distribution_method="email"
)

print(f"āœ… Distributed survey to {distribution['recipients']} users")

# Simulate responses
responses = [
SurveyResponse(
survey_id=survey_id,
user_id="user_1",
answers={
"satisfaction": 5,
"productivity": 4,
"useful_features": "Hybrid search, evaluation metrics",
"improvements": "Better UI, faster response times"
},
sentiment=FeedbackSentiment.POSITIVE
),
# Add more responses...
]

for response in responses:
await self.survey_manager.record_response(response)

print(f"āœ… Recorded {len(responses)} survey responses")

return survey_id

Sentiment Analysis​

async def analyze_satisfaction(self):
"""Analyze user satisfaction and sentiment."""
print("\nšŸ“ˆ Satisfaction Analysis")
print("=" * 40)

# Calculate satisfaction metrics
satisfaction = await self.satisfaction_analyzer.calculate_satisfaction_metrics(
time_range=timedelta(days=30)
)

print(f"Satisfaction Metrics:")
print(f" Overall Satisfaction: {satisfaction['overall_satisfaction']:.2f}/5")
print(f" Net Promoter Score: {satisfaction['nps']:.1f}")
print(f" Positive Sentiment: {satisfaction['positive_sentiment']:.1%}")
print(f" Response Rate: {satisfaction['response_rate']:.1%}")

# Analyze feedback themes
themes = await self.satisfaction_analyzer.analyze_feedback_themes(
time_range=timedelta(days=30)
)

print(f"\nFeedback Themes:")
for theme, count in themes.items():
print(f" {theme}: {count} mentions")

return satisfaction

Executive Reporting​

Generate Executive Reports​

async def generate_executive_reports(self):
"""Generate executive-level reports."""
print("\nšŸ“Š Executive Reporting")
print("=" * 40)

# Generate executive summary
summary = await self.report_generator.generate_executive_summary(
time_range=timedelta(days=30),
stakeholder_level=StakeholderLevel.C_LEVEL
)

print("Executive Summary:")
print(f" Total Users: {summary['total_users']}")
print(f" Total Queries: {summary['total_queries']}")
print(f" Productivity Gain: {summary['productivity_gain']:.1%}")
print(f" Cost Savings: ${summary['cost_savings']:,.2f}")
print(f" ROI: {summary['roi']:.1%}")

# Generate department report
dept_report = await self.report_generator.generate_department_report(
time_range=timedelta(days=30),
report_type=ReportType.PERFORMANCE
)

print(f"\nDepartment Performance Report:")
for dept, metrics in dept_report.items():
print(f" {dept.title()}: {metrics['users']} users, {metrics['productivity']:.1%} gain")

return summary

Create Executive Dashboard​

async def create_executive_dashboard(self):
"""Create executive dashboard."""
print("\nšŸ“± Executive Dashboard")
print("=" * 40)

dashboard_config = {
'title': 'RAG System Executive Dashboard',
'stakeholder_level': StakeholderLevel.C_LEVEL,
'widgets': [
{
'type': 'kpi',
'title': 'Total Users',
'metric': 'active_users',
'time_range': '30d'
},
{
'type': 'kpi',
'title': 'Productivity Gain',
'metric': 'productivity_improvement',
'time_range': '30d'
},
{
'type': 'kpi',
'title': 'Cost Savings',
'metric': 'cost_savings',
'time_range': '30d'
},
{
'type': 'chart',
'title': 'Usage Trends',
'chart_type': 'line',
'metric': 'daily_queries',
'time_range': '30d'
},
{
'type': 'chart',
'title': 'Department Usage',
'chart_type': 'bar',
'metric': 'department_usage',
'time_range': '30d'
}
]
}

dashboard_url = await self.executive_dashboard.create_dashboard(dashboard_config)
print(f"āœ… Executive dashboard created: {dashboard_url}")

return dashboard_url

Complete Demo​

Here's a complete working demo:

#!/usr/bin/env python3
"""
Complete Business Intelligence Demo
"""

import asyncio
from datetime import datetime, timedelta
from business_intelligence_demo import BusinessIntelligenceDemo

async def main():
"""Main demo function."""
print("šŸš€ Business Intelligence Demo")
print("=" * 50)

# Initialize demo
demo = BusinessIntelligenceDemo()

# Generate sample data
await demo.generate_sample_data(num_users=20, num_days=30)

# Run analytics
await demo.analyze_user_engagement()
await demo.analyze_department_usage()

# Measure productivity
await demo.measure_productivity()
await demo.calculate_roi()

# Manage satisfaction
survey_id = await demo.manage_satisfaction_surveys()
await demo.analyze_satisfaction()

# Generate reports
await demo.generate_executive_reports()
dashboard_url = await demo.create_executive_dashboard()

print(f"\nšŸŽ‰ Demo complete! Dashboard available at: {dashboard_url}")

if __name__ == "__main__":
asyncio.run(main())

Best Practices​

1. Data Quality​

  • Ensure accurate time tracking
  • Validate user input data
  • Regular data quality audits

2. Privacy and Compliance​

  • Anonymize sensitive data
  • Implement data retention policies
  • Provide opt-out mechanisms

3. Performance Optimization​

  • Use efficient database queries
  • Implement caching for frequent metrics
  • Batch data processing

4. Stakeholder Communication​

  • Tailor reports to audience
  • Use clear visualizations
  • Provide actionable insights

Troubleshooting​

Common Issues​

Slow Report Generation

# Optimize database queries
analytics_config = {
'query_timeout': 30,
'max_results': 10000,
'enable_caching': True
}

Memory Issues with Large Datasets

# Use pagination
analytics_config = {
'page_size': 1000,
'stream_results': True
}

Survey Response Rate Low

# Improve survey design
survey_config = {
'max_questions': 5,
'estimated_time': '2 minutes',
'incentive': 'Results will improve the system'
}

Next Steps​

  1. šŸ“Š Analytics Integration - Basic analytics setup
  2. šŸ“ˆ Performance Monitoring - System performance tracking
  3. šŸ”’ Security Analytics - Security-focused analytics
  4. šŸ“± Dashboard Creation - Build custom dashboards

Summary​

This demo showcased:

  • āœ… Usage Analytics - Comprehensive user engagement tracking
  • āœ… Productivity Measurement - ROI and efficiency calculations
  • āœ… User Satisfaction - Survey management and sentiment analysis
  • āœ… Executive Reporting - High-level business insights
  • āœ… Cost-Benefit Analysis - Financial impact assessment
  • āœ… Dashboard Creation - Real-time executive dashboards

You now have a complete business intelligence system that provides deep insights into your RAG platform's business impact!