# Analytics Dashboard Template
The analytics dashboard template provides real-time insights into your knowledge base performance, document statistics, and system health metrics. It uses pre-computed statistics stored in bot memory for fast loading.
## Topic: Knowledge Base Analytics & Monitoring
This template is perfect for:
- Monitoring knowledge base growth
- Tracking document indexing status
- System health monitoring
- Capacity planning
## The Code
```basic
REM Analytics Dashboard Start Dialog
REM Displays pre-computed statistics from update-stats.bas
DESCRIPTION "View knowledge base analytics and statistics"
REM Load pre-computed values from BOT MEMORY
totalDocs = GET BOT MEMORY("analytics_total_docs")
totalVectors = GET BOT MEMORY("analytics_total_vectors")
storageMB = GET BOT MEMORY("analytics_storage_mb")
collections = GET BOT MEMORY("analytics_collections")
docsWeek = GET BOT MEMORY("analytics_docs_week")
docsMonth = GET BOT MEMORY("analytics_docs_month")
growthRate = GET BOT MEMORY("analytics_growth_rate")
healthPercent = GET BOT MEMORY("analytics_health_percent")
lastUpdate = GET BOT MEMORY("analytics_last_update")
REM Set contexts for different report types
SET CONTEXT "overview" AS "Total documents: " + totalDocs + ", Storage: " + storageMB + " MB"
SET CONTEXT "activity" AS "Documents added this week: " + docsWeek + ", Growth rate: " + growthRate + "%"
SET CONTEXT "health" AS "System health: " + healthPercent + "%, Last updated: " + lastUpdate
REM Setup suggestions
CLEAR SUGGESTIONS
ADD SUGGESTION "overview" AS "Show overview"
ADD SUGGESTION "activity" AS "Recent activity"
ADD SUGGESTION "health" AS "System health"
REM Display dashboard
TALK "📊 **Analytics Dashboard**"
TALK ""
TALK "**Knowledge Base Overview**"
TALK "• Documents: " + FORMAT(totalDocs, "#,##0")
TALK "• Vectors: " + FORMAT(totalVectors, "#,##0")
TALK "• Storage: " + FORMAT(storageMB, "#,##0.00") + " MB"
TALK ""
TALK "Ask me about any metric or select a topic above."
```
## Sample Dialogs
These conversations show how the analytics dashboard works in real-world scenarios.
### Dialog 1: Viewing Overview Statistics
Today
Analytics Bot
📊 Analytics Dashboard
Knowledge Base Overview
• Documents: 1,234
• Vectors: 45,678
• Storage: 256.50 MB
• Collections: 12
Ask me about any metric or select a topic above.
09:00
Show recent activity
09:01
Recent Activity
• This week: +87 documents
• This month: +312 documents
• Trend: 📈 +15.3% vs average
09:01
### Dialog 2: Checking System Health
What's the system health?
14:30
✅ All systems healthy
• Database: Connected
• Vector Store: Operational
• Storage: 45% used
• Last Update: 5 minutes ago
14:30
### Dialog 3: Statistics Not Yet Computed
Analytics Bot
📊 Analytics Dashboard
Statistics are being computed. Please check back in a few minutes.
Run the update-stats schedule to refresh data.
08:00
## Keywords Used
| Keyword | Purpose |
|---------|---------|
| `GET BOT MEMORY` | Retrieve pre-computed statistics |
| `SET CONTEXT` | Provide context for AI responses |
| `CLEAR SUGGESTIONS` | Reset quick reply options |
| `ADD SUGGESTION` | Add quick reply buttons |
| `TALK` | Display formatted statistics |
| `FORMAT` | Format numbers with separators |
## How It Works
1. **Load Statistics**: Pre-computed values are retrieved from bot memory
2. **Set Contexts**: Different contexts are set for overview, activity, and health queries
3. **Setup UI**: Quick reply suggestions are configured
4. **Display Dashboard**: Formatted statistics are shown to the user
## The Update Stats Job
Statistics are pre-computed by a scheduled job to ensure fast dashboard loading:
```basic
REM update-stats.bas - Scheduled job to compute analytics
SET SCHEDULE "0 * * * *" REM Run every hour
REM Compute statistics
totalDocs = KB DOCUMENTS COUNT()
totalVectors = KB STATISTICS().total_vectors
storageMB = KB STORAGE SIZE() / 1024 / 1024
collections = UBOUND(KB LIST COLLECTIONS())
REM Calculate activity
docsWeek = KB DOCUMENTS ADDED SINCE(NOW() - 7)
docsMonth = KB DOCUMENTS ADDED SINCE(NOW() - 30)
REM Store in bot memory
SET BOT MEMORY "analytics_total_docs", totalDocs
SET BOT MEMORY "analytics_total_vectors", totalVectors
SET BOT MEMORY "analytics_storage_mb", storageMB
SET BOT MEMORY "analytics_collections", collections
SET BOT MEMORY "analytics_docs_week", docsWeek
SET BOT MEMORY "analytics_docs_month", docsMonth
SET BOT MEMORY "analytics_last_update", NOW()
TALK "Analytics updated successfully."
```
## Customization Ideas
### Add Export Functionality
```basic
ADD TOOL "export-stats"
REM In export-stats.bas
PARAM format AS STRING LIKE "csv" DESCRIPTION "Export format: csv, json, xlsx"
data = []
data.total_docs = GET BOT MEMORY("analytics_total_docs")
data.total_vectors = GET BOT MEMORY("analytics_total_vectors")
data.storage_mb = GET BOT MEMORY("analytics_storage_mb")
IF format = "csv" THEN
SAVE "analytics-export.csv", data
TALK "📥 Analytics exported to analytics-export.csv"
ELSE IF format = "json" THEN
WRITE "analytics-export.json", TOJSON(data)
TALK "📥 Analytics exported to analytics-export.json"
END IF
```
### Add Alerting
```basic
REM Check for issues and alert
IF healthPercent < 90 THEN
SEND MAIL "admin@company.com", "System Health Alert", "Health dropped to " + healthPercent + "%"
END IF
IF storageMB > 900 THEN
SEND MAIL "admin@company.com", "Storage Warning", "Storage usage at " + storageMB + " MB"
END IF
```
### Add Trend Visualization
```basic
REM Generate a simple trend chart
ADD TOOL "show-trend"
REM Collect historical data
history = FIND "analytics_history.csv", "date > " + FORMAT(NOW() - 30, "YYYY-MM-DD")
REM Create chart
chart = CREATE CHART "line", history, "date", "documents"
TALK chart
```
## Related Templates
- [backup.bas](./backup.md) - Backup management and monitoring
- [start.bas](./start.md) - Basic bot structure
---