Business Intelligence Engine — Architecture
Business Intelligence Engine — Architecture
Version: v1.0.0
Date: 2026-01-22
Location: analytics-platform/src/core/business-intelligence.service.ts
This module predates the Graph architecture and provides enterprise-grade analytics for business questions. It is complementary to, not a replacement for, the Graph Orchestrator.
Overview
The Business Intelligence Engine is a sophisticated analytics service that transforms natural language business questions into actionable insights. It combines intent recognition, smart SQL generation, and executive summary capabilities.
graph TD
A[User Question] --> B[Intent Recognition]
B --> C[Metric Extraction]
C --> D[Data Source Selection]
D --> E[Query Generation]
E --> F[Analytics Execution]
F --> G[Metric Calculation]
G --> H[Insight Generation]
H --> I[Response Formatting]
Core Capabilities
1. Intent Detection
The engine classifies business questions into distinct intents:
| Intent | Trigger Patterns | Example |
|---|---|---|
| FRAUD | "fraud", "suspicious", "risk" | "Why was this player paid?" |
| COMPARISON | "compare", "vs", "how we did" | "Compare this week vs last week" |
| SIMPLE | "total", "count", "how many" | "What is the total GGR?" |
| TREND | "progress", "change", "performance" | "How is the performance this month?" |
2. Timeframe Extraction
Automatically detects temporal references:
- Absolute: "January 2026", "March 15"
- Relative: "yesterday", "last week", "this month"
- Ranges: "last 7 days", "Q1 2026"
3. Smart Query Generation
Generates optimized SQL queries with:
- Metric formulas:
SUM(ggr),COUNT(DISTINCT player_id) - Timeframe clauses: Automatically builds
WHERE date BETWEEN ... - Brand filtering: Applies
site_idfilters based on context - Comparison logic: Builds side-by-side period comparisons
4. Executive Summary Generation
Produces natural language summaries:
Summary for revenue analysis – GGR: $1,234,567.89.
Key recommendations: Investigate drivers behind GGR to sustain or improve performance.
API Contract
Primary Method
async analyzeBusinessQuestion(
query: string,
context?: BusinessContext,
options?: BusinessInsightOptions
): Promise<BusinessInsight>
Input Types
interface BusinessContext {
brand?: string; // e.g., "brand-a"
userId?: string; // For audit trail
dateRange?: { // Optional override
start: Date;
end: Date;
};
}
interface BusinessInsightOptions {
forceNoData?: boolean; // Test mode: skip data fetching
}
Output Structure
interface BusinessInsight {
executive_summary: string;
key_metrics: FormattedMetric[];
insights: KeyFinding[];
recommendations: string[];
visualizations: Visualization[];
natural_language_response: string;
metadata: {
executionTime: number;
confidence: number;
dataSources: string[];
};
raw_data: AnalyticalResult[];
}
Supported Metrics
| Metric Key | Formula | Category |
|---|---|---|
ggr | SUM(ggr) | Revenue |
ngr | SUM(ngr) | Revenue |
deposits | SUM(deposit_amount) | Financial |
withdrawals | SUM(withdrawal_amount) | Financial |
active_players | COUNT(DISTINCT player_id) | Player |
registrations | COUNT(*) | Player |
bets | COUNT(*) | Gaming |
wins | SUM(win_amount) | Gaming |
Data Source Mapping
The engine intelligently selects tables based on metric category:
| Category | Primary Tables |
|---|---|
| Revenue | dim_performance, agg_performance_daily |
| Financial | dim_payment, dim_wallet_transactions |
| Player | dim_crm_player, dim_player_registration |
| Gaming | dim_game_round, agg_game_round |
| Fraud | dim_player_audit, dim_player_note |
Integration Points
| System | Purpose |
|---|---|
DefinitionsService | Business glossary context |
DataService | Query execution |
BrandService | Schema/table resolution |
QueryObservabilityService | Cache metrics |
EventEmitter2 | Analytics events |
Configuration
# No dedicated flags - uses core JORVIS configuration
# Leverages existing brand/schema settings
Best Practices
- Use for dashboards: Ideal for pre-built analytics dashboards
- Combine with Graph: Use Graph for complex multi-step queries, BI Engine for quick analytics
- Monitor cache: Check
analytics-querycache hit rate for performance